Поиск объектов на чертеже

Автор freestyler, 05.10.26, 08:36:04

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

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

freestyler

Коллеги, приветствую!

Стоит задача, зная имя файла детали подсветить эту деталь на чертеже сборки, куда она входит.
Доковырял до SelectionManager, могу подать туда на вход ссылку на вид и он выделится. А вот как перебрать входящие в вид модели?
Пробовал перебирать состав сборки, на которую ссылается данный вид, и передавать в sm.Select() ссылку на IKompasDocument3D соответствующей детали, но так оно не работает.

Предполагаю что надо через IDrawingContainer перебрать все вхождения, допустим, линий (LineSegments) и проверить относится ли линия к нужной мне модели? Но а) не понимаю как; б) есть сомнения в эффективности такого метода.. Прошу помощи..


//Получаю ссылку на активный документ и сразу предполагаю что это чертеж (проверки здесь и далее убрал чтобы не загромождать)
IKompasDocument2D _doc2d7 = _application7.ActiveDocument as IKompasDocument2D;

//Получаю ссылку на SelectionManager и снимаю выделение того, что было выделено ранее
ISelectionManager sm = (_doc2d7 as IKompasDocument2D1).SelectionManager;
sm.UnselectAll();

//Перебираю чертежные виды
foreach (KompasAPI7.View v in _doc2d7.ViewsAndLayersManager.Views)
{
    if (v.Type != KompasAPIObjectTypeEnum.ksObjectAssociationView) continue; //Если вид не ассоциативный - пропускаю

    IAssociationView av = v as IAssociationView;

    //Получаю контейнер чертежных элементов
    IDrawingContainer container = v as IDrawingContainer;
       
    //Перебираю все линии
    foreach(LineSegment ls in container.LineSegments)
    {
       // !! Вот как здесь проверить что линия относится к конкретной модели?
       if (???) sm.Select(ls); //Если линия подходит, выделяю
    }
}

Михаил88

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

freestyler

Цитата: Михаил88 от 05.10.26, 08:59:26https://forum.ascon.ru/index.php?topic=38280.40

Добрый день. Посмотрите здесь сообщение #49.


Получилось, благодарю!  :sun: