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

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

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

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

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

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

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

Как программно в виде отличить размерные надписи?

Автор Akew, 21.03.18, 17:44:59

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

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

Akew

Вопрос, перекликающийся с http://forum.ascon.ru/index.php/topic,31228.msg248963.html#msg248963
Предположим, создали вид с размерными надписями, автоматически взятыми из эксизов - как было описано в первом вопросе. В том же виде создали новую размерную надпись.

Вопрос: как программно отличить эту размерную надпись от остальных ("родных")?

ТрындецЪ

При создании объекта возвращается его reference. Но при повторном открытии эти номера меняются, вроде бы. Возможно, есть комментарии у размеров.

Akew

Спасибо. Но использование reference - проблематично.
Дело в том, что перед созданием новой размерной надписи состояние прежних ("родных") программа не хранит (ни как список reference, ни как-нибудь еще). Требуется - чтобы в чертеже, содержащего как "родные", так и пользовательские размерные надписи, отличить первые от вторых. Ранее, т.е., до создания пользовательских надписей, этот чертеж мог не обрабатываться программой.

Golovanev

Лично у меня возник только один реализуемый вариант - обрабатывать такие чертежи программно, и хранить в чертеже некий скрытый контейнер со своего рода "контрольной суммой" или данными по всем размерным надписям. Ну а второй шаг - сравнение всех размерных надписей с данными из контейнера.

chelkar

Посмотрите интерфейс IParametriticConstraint .
Через него можно получить список ограничений на размере.
Если размер пришел из модели, то у него будет одно ограничение = Проекционный, если размер добавили руками, то ограничений либо вообще не будет, либо будут другие.
PS. Не вижу в списке типов ограничений тип Проекционный. Пробовать надо, может и есть.

ТрындецЪ

А что если использовать атрибуты? Сам я с ними не работал никогда.

ksCreateAttr - Создать атрибут по номеру типа атрибута

Синтаксис Automation:
long ksCreateAttr (reference pObj,
LPDISPATCH attr,
double attrID,
BSTR libName);

Входные параметры:
pObj - указатель на объект (группа, вид, отдельный объект), атрибут которого создается.Если pObj = 0, то создается атрибут документа,
attr - указатель на интерфейс параметров атрибута ksAttributeParam,
attrID - уникальный номер типа атрибута,
libName - имя библиотеки типов атрибутов, если libname = NULL, то тип атрибута берется из текущего документа.


Akew

Спасибо откликнувшимся.

Вопрос, по-видимому, требует пере-формулировки.

Я обнаружил, что проекционные размеры ("родные"), хоть и отображаются в виде (чертеже), однако, не являются его элементами. Т.е., если мы попытаемся получить эта размеры посредством контейнера ISymbols3DContainer::LineDimensions3D, то они в нем не окажутся. А окажутся только те, что были созданы вручную.

Переформулированный вопрос будет таким: - Как получить доступ к проекционным размерным надписям?
Сами надписи могут находиться в эскизах 3D модели, операциях выдавливания и т.д. Пока не понятно, как до них добраться.

ТрындецЪ

Вы же на чертеже размеры получаете, при чём тут 3DContainer!?
ILineDimension = ISymbols2DContainer.LineDimensions.LineDimension( Index )

Akew

Да, конечно ISymbols2DContainer::LineDimensions - ошибся в спешке.
Но суть проблемы - прежняя: в этот контейнер попадают только те размеры, которые были созданы непосредственно в виде (чертеже). Как достучаться до проецированных размеров - не понятно.

ТрындецЪ

Цитата: Akew от 22.03.18, 18:40:23
Да, конечно ISymbols2DContainer::LineDimensions - ошибся в спешке.
Но суть проблемы - прежняя: в этот контейнер попадают только те размеры, которые были созданы непосредственно в виде (чертеже). Как достучаться до проецированных размеров - не понятно.
Не знаю, что у Вас там не получается, но у меня, описанным ранее методом, получилось получить производный линейный размер. К16.1