Чтение атрибутов

Автор Evgen_Brig, 01.09.21, 21:50:26

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

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

Evgen_Brig

Добрый вечер!
Сломал голову - как прочитать атрибут поверхности 3D с помощью python?

Выделенный объект дерева построения - получаю:
        kompas_document = iApplication.ActiveDocument
        iDocument3D = kompas_object.ActiveDocument3D()
        iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)

        kompas_document_3d = API7.IKompasDocument3D(kompas_document)
        iPart7 = kompas_document_3d.TopPart

        # Выделенный объект
        iSelectedFeature, obj_type, count = findSelectedFeature()

Получаю коллекцию атрибутов:
        AttrCol = iDocument3D.AttributeCollection(0, 0, 0, 0, 0, iSelectedFeature)

Получаю атрибут заданного типа (386061433668)

        res = AttrCol.Select(0,0,0,0,386061433668,0)

Могу инициализировать структуру для параметров атрибута

        #Значение, в которое копируется атрибут
        # ko_UserParam 112 ksUserParam
        values = kompas_object.GetParamStruct(112)
        values.Init()

Что делать дальше - ума не приложу!
Подскажите, пожалуйста, мне как получить параметр атрибута.






Evgen_Brig

Дополняю.

Чтение текстового атрибута с помощью следующих инструкций:

#Значение, в которое копируется атрибут
# ko_UserParam 112 ksUserParam
values = kompas_object.GetParamStruct(112)
values.Init()
       
# Динамический массив
# // LTVARIANT_ARR 23
Arr = kompas_object.GetDynamicArray(23)
Arr = values.GetUserArray()

# Хранение данных некоторого типа
# // ko_LtVariant 108 ksLtVariant
val = kompas_object.GetParamStruct(108)
val.Init()
val.strVal=''

res = Arr.ksAddArrayItem(-1, val)       
res = AttrObj.ksGetAttrValue(iAttr.reference, 0, 0, None, None, values)

print('Результат получения атрибута', res)

res = Arr.ksGetArrayItem(0, val)
print('Результат получения элемента массива: ', res)
print('Тип значения: ', val.valType)
print('Строка тип ltv_Str 8', val.strVal)

происходит без проблем. Но вот прочитать вещественный атрибут - не получается,
даже если вместо
    val.strVal=''
записать
    val.longVal=0.0

Кто сталкивался с такими трудностями?