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

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

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

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

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

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

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

Навигация по 3D объектам

Автор anton.gorschnev, 17.09.24, 16:23:08

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

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

anton.gorschnev

 Добрый день, помогите с навигацией по 3D объектам. Задача простая в любой момент времени получать необходимый элемент модели поверхность, ребро, вершину (для назначения взаимосвязей в сборках или нанесения размера в чертежах). Как я понял назначить атрибут на выше указанные объекты не получится, Reference использовать тоже нельзя (изменяется при сохранении файла детали и т.д.), UniqueMetaObjectKey не понял судя по всему для поверхностей, ребер, вершин отсутствует.   

anton.gorschnev

Не ужели в Компасе нет возможности пометить элемент геометрии чтобы по метке возвращать требуемый элемент??? 

lavgirb

Цитата: anton.gorschnev от Вчера в 10:18:08Не ужели в Компасе нет возможности пометить элемент геометрии чтобы по метке возвращать требуемый элемент??? 
А кто говорил, что будет легко?)
Вариант. На вскидку.
Перед сохранением модели записывать в текстовый файл геометрические параметры объектов, местоположение и Reference.
После загрузки модели по параметрам перебором определять объекты и их новые Reference и с ними работать.
Не подойдет?

anton.gorschnev

Нашел как присвоить индификатор, теперь надо найти способ быстро получать этот объект (без использования цикла в явном виде).
IModelContainer modelContainer = (IModelContainer)part7;
IRotated Rotated = modelContainer.Rotateds.Rotated[0];
IFeature7 IFeature7_ = (IFeature7)Rotated;
object[] Faces_ = IFeature7_.ModelObjects[Obj3dType.o3d_face];
IFace IFace_ =(IFace) Faces_[0];
IModelObject IModelObject_ = (IModelObject)IFace_;
IModelObject_.Name = "Name";

anton.gorschnev

Вернул требуемый элемент, но через цикл. Может все таки есть способ обойтись без цикла?
                    ISelectionManager ISelectionManager_ = document3D.SelectionManager;
                    ISelectionManager_.UnselectAll();
                   
                    IFeature7 IFeature7_ = (IFeature7)part7;
                    object[] Faces_ = IFeature7_.ModelObjects[Obj3dType_];
                    foreach (IModelObject IModelObject_ in Faces_)
                    {
                        if(IModelObject_.Name== NameObject)
                        {
                            ISelectionManager_.Select(IModelObject_);
                            break;
                        }
                    }