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

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

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

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

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

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

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

Считывание атрибутов 3D модели

Автор Троицкий, 30.09.09, 01:06:03

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

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

Троицкий

Коллеги,
подскажите, как, каким методом добраться до атрибутов 3D модели? Атрибуты - это то, что задается при шелчке правой кнопкой мыши по пункту "Начало координат" в дереве, далее в контекстном меню "Атрибуты". Там могут быть строки, числа, таблицы. Вот есть у меня переменная типа ksPart, а дальше что?  GetUserParam стабильно возвращает nil.


Slaviation

Атрибуты парта ( или любого объекта модели ) можно взять так:
iAttributeCollection := ksAttribute3DCollection(ksFeature(iPart.GetFeature).AttributeCollection(1, 10, 100, 1001, reAttrNumber));
где reAttrNumber - уникальный номер типа атрибута

Троицкий

30.09.09, 11:52:21 #3 Последнее редактирование: 30.09.09, 12:03:43 от Троицкий
Цитата: Максимилиан от 30.09.09, 06:00:11
вот пример функции
http://delphivs.ucoz.ru/forum/3-7-1

Спасибо, попробовал - компилится нормально, но я пока не понял, что означают передаваемые ей key1, key2, key3. В примере они 11,22,33 - с такими значениями у меня функция возвращает пустую строку, так как
ksattribute3dcollection(doc.AttributeCollection(key1,key2,key3,0,0,spart)) возвращает nil.

Троицкий

Цитата: Slaviation от 30.09.09, 07:27:38
Атрибуты парта ( или любого объекта модели ) можно взять так:
iAttributeCollection := ksAttribute3DCollection(ksFeature(iPart.GetFeature).AttributeCollection(1, 10, 100, 1001, reAttrNumber));
где reAttrNumber - уникальный номер типа атрибута
Если можно - поясните, что есть константы 1, 10, 100, 1001

Maxagg

это все ключи атрибута, если они не известны, значит ввести НУЛИ  :-)))

Троицкий

Цитата: Максимилиан от 30.09.09, 12:30:39
это все ключи атрибута, если они не известны, значит ввести НУЛИ  :-)))
Ок, попробую. А как тогда организовать цикл по атрибутам? У меня задача выковырять все текстовые и числовые атрибуты 3D модели. Пока удалось вытащить значение  атрибута сборки, а как выковыривать его наименование?

Maxagg

Следует всего лишь пройтись по атрибутам в цикле

http://delphivs.ucoz.ru/forum/3-7-1

Троицкий

Большое спасибо, все заработало!

Троицкий

Коллеги,

помогите, что надо изменить в коде (ссылка выше), чтобы он работал под 8+? В той версии нет TypeName и на строке

qq(TRIM(atr3.nameType));

дается ошибка "неизвестный идентификатор nameType".

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

Maxagg

К сожалению есть только 9 версия
могу лишь предположить
в kstlb.pas надо найти запись типа этой
  ksAttribute3D = dispinterface
    ['{3EEB2B43-56FF-49C0-AFCF-69E990A7D84C}']
    property reference: Integer readonly dispid 1;
    function FeatureCollection(objType: Integer): ksFeatureCollection; dispid 2;
  end;

и добавить
  ksAttribute3D = dispinterface
    ['{3EEB2B43-56FF-49C0-AFCF-69E990A7D84C}']
    property reference: Integer readonly dispid 1;
    function FeatureCollection(objType: Integer): ksFeatureCollection; dispid 2;
    property nameType: WideString readonly dispid 3;
  end;
ЛИБО СРАБОТАЕТ, ЛИБО НЕ СРАБОТАЕТ