Получить массив линий вида с дальнейшим чтением свойств каждой линии.

Автор IgorRUtver, 07.11.13, 20:27:36

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

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

IgorRUtver

Хочу получить через API7 массив отрезков вида чертежа, потом проверять координаты вершин каждого отрезка, желательно только тех, что основной линией начерчены. Попытался следующим образом.
var
   newKompasAPI : IApplication;
   disp : IDispatch;
   pDocuments : iDocuments;
   pDocument : IKompasDocument;
   pDrawingObject : IDrawingObject;
   pKompasDocument2D : IKompasDocument2D;
   pViewsAndLayersManager : IViewsAndLayersManager;
   pViews : IViews;
   pView : IView;
   pAssociationView : IAssociationView;
   pDrawingContainer : IDrawingContainer;
   pLines : ILines;

begin
    disp := IDispatch( CreateKompasApplication );
    newKompasAPI := disp As IApplication;
    pDocuments := newKompasAPI.Documents;
    pDocument := pDocuments.Add(ksDocumentDrawing,true);
    pKompasDocument2D :=  pDocument as iKompasDocument2D;
    pViewsAndLayersManager := pKompasDocument2D.ViewsAndLayersManager;
    pViews := pViewsAndLayersManager.Views;
    pViews.AddStandartViews('d:\PAK.m3d','ff',VIEW_UP,0,0,1,10,10);
    pView := pViews.ViewByNumber[1];
    pView.Current := true;
    pDrawingContainer := pView as iDrawingContainer;
    pLines := pDrawingContainer.Lines;
end;

В SDK написано, что iDrawingContainer позволяет получить коллекции объектов, которые входят в состав вида графического документа или его объекта. Но как пользоваться данным интерфейсом не допру. Подскажите кто может пожалуйста.

IDrawingContainer::LineSegments - коллекция отрезков.
ILineSegments::LineSegment получайте отрезок по индексу.
Можно через вариантный массив.
IDrawingContainer::Objects
DrawingObjectTypeEnum - Типы графических объектов


+ Благодарностей: 1

IgorRUtver

Именно это и нужно было, спасибо все работает как надо! Сам я не смог выйти в SDK на LineSegments через IDrawingContainer.