Построение полилиний

Автор Armant, 12.05.15, 01:55:11

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

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

Armant

Здравствуйте! Можно ли средствами компаса из набора уже существующих в эскизе дуг, линий и т.д. получить полилинию? Если нет то каким образом можно все это проделать?

В эскизе можно построить контур, полилинию Компас разобьёт на линии, да и дуг в ней нет.

Armant

хочу получить указатель refObj на элементы фрагмента, а получаю указатель на фрагмент. что я делаю не так?
   Document2D:=ksDocument2D(SketchDefinition.BeginEdit());
     Document2D.ksLayer(1);
     Fragment:=ksFragment(Document2D.GetFragment);
     fr:=Fragment.ksFragmentDefinition(opendialog1.filename,'Fragment',1);

          kompas.Visible:=true;
     par:=ksPlacementParam(kompas.GetParamStruct( ko_PlacementParam ) ) ;
       par.Init();
       par.Scale_ := 1;
       par.Angle  := 0;
       par.xBase  := 0;
       par.yBase  := 0;
    Fragment.ksInsertFragment(fr,true ,par);
     begin
       iIter := ksIterator(kompas.GetIterator);
       if iIter.ksCreateIterator(ALL_OBJ, 0) = FALSE then
       Exit;

       refObj := iIter.ksMoveIterator('F');
       while refObj<>0 do
       begin
         refObjType:= Document2D.ksGetObjParam(refObj, nil, SHEET_ALLPARAM);
         case refObjType of
            LINESEG_OBJ:     ReadLineSegment(refObj);
            ARC_OBJ:         ReadArc(refObj);
            CIRCLE_OBJ:      ReadCircle(refObj);
            RECTANGLE_OBJ:   ReadRectangle(refObj);
            POLYLINE_OBJ:    ReadPolyline(refObj);
            MACRO_OBJ:       ReadMacroObject(refObj);
         else
           refObj := 0;
         end;
         refObj := iIter.ksMoveIterator('N');
       end;

       iIter.ksDeleteIterator;
     end;
    SketchDefinition.EndEdit();

Попробуйте в ksCreateIterator(ALL_OBJ, 0) вместо нуля поставить указатель который возвращает функция ksInsertFragment.

Armant

в этом сучае ksCreateIterator выдает False

Armant

Может нужно еще какие то операции выполнить над фрагментом? 8-)

Вообще непонятно, зачем вставлять фрагмент в эскиз, когда можно было этот фрагмент прочитать во временную группу, итератором пройтись по ней и вытянуть те элементы которые нужны.

Armant

А как организовать вытягивание элементов? Какие операции нужно использовать для этого?

Armant