• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

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

Автор 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