Подсчет площади

Автор AndreySt, 21.05.07, 11:49:11

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

AndreySt

Всем Примет :!:
Возник такой вопрос:
по анологии с компасовским подсчетом площади(в случае когда происходит ручное задание границ)
необходимо что бы из моей библеотечки подсчитать площадь :?:

Маратович

21.05.07, 15:02:36 #1 Последнее редактирование: 21.05.07, 15:08:10 от Маратович
Скорее всего ручками, по аналогии со штриховкой.
Пока писал нашел :
http://forum.ascon.ru/index.php/topic,2579.0.html
Еще :
Функция расчета МЦХ (ksCalcInertiaProperties).
Описание в хелпе.

Тока я не пробовал не видел.

AndreySt

Цитата: Маратович от 21.05.07, 15:02:36
Скорее всего ручками, по аналогии со штриховкой.
Ну а как штриховку сделать :?: И если есть то дайте кода. please.

Маратович

Ищи примеры, а конкретно C:\Program Files\KOMPAS 5.11\AppTools\BASIC\Step3

В версиях выше есть папка SDK. но там всё это без изменений.

Это для VB
там есть это :

' создать штриховку
Sub DrawHatch(doc As Object)
  doc.ksMtr 30, 20, 0, 0.5, 0.5

  ' построить  квадрат
  doc.ksLineSeg 20, 30, 70, 30, 2
  doc.ksLineSeg 70, 30, 70, 80, 2
  doc.ksLineSeg 70, 80, 20, 80, 2
  doc.ksLineSeg 20, 80, 20, 30, 2

  If doc.ksHatch(0, 45, 2, 0, 0, 0) Then ' штрихует выбраный квадрат с этими координатами , вот здесь и высчитывай площадь........
    doc.ksLineSeg 20, 30, 70, 30, 2
    doc.ksLineSeg 70, 30, 70, 80, 2
    doc.ksLineSeg 70, 80, 20, 80, 2
    doc.ksLineSeg 20, 80, 20, 30, 2
    Dim p As Long
    p = doc.ksEndObj

    ' взять параметры штриховки
    Dim par As Object
    Set par = Kompas.GetParamStruct(ko_HatchParam)
    If Not par Is Nothing Then
      par.Init
      Dim t As Integer
      t = doc.ksGetObjParam(p, par, ALLPARAM)
      Kompas.ksMessage "t = " & t & " tip = " & par.Style & " angl = " & par.ang & _
                       " shag = " & par.Step & " width = " & par.Width & _
                       " x0 = " & par.x & " y0 = " & par.y
      doc.ksDeleteMtr

      doc.ksMtr 0, 0, 0, 2, 2

      ' заменить параметры штриховки
      par.x = 0.8

      If doc.ksSetObjParam(p, par, ALLPARAM) Then
        Kompas.ksMessage "Изменили объект"
      Else
        Kompas.ksMessageBoxResult
      End If
      doc.ksDeleteMtr
      Set par = Nothing
    End If
  Else
    Kompas.ksMessageBoxResult
  End If
End Sub

Если че не так, объясни чего надо конкретней.

AndreySt

Маратович
это понятно что в штриховка формируется статически(т.е. ты в программе задаешь границы) а нужно что бы юзер мог задавать границы

Маратович

Я ту на работе весь день из монитора не вылазю, поэтому наверное торможу немного....
Непонял - чего собственно надо и каким методом  -задавать границы- ?

AndreySt

1-е Чтобы пользователь мог по средствам мой rtw-библеотеки мог рисовать многоугольник
2-е После того как нарисовал этот многоугольник закрашивался цветом(или штриховался)
3-е Собственно подсчет площади этого многоугольника