Добавление своего свойства в 3D.

Автор abvgdeyka, 29.09.26, 09:41:55

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

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

abvgdeyka

Здравствуйте уважаемые! В целях автоматизации понадобилось мне повторить добавление свойства 'Flag' в 3D одной PDM системой, что бы в ручную этого не делать, но вот проблема это свойство добавляется так, что id у него всегда одинаковый. Я попробовал 3 разных метода:
1) Через присвоение xml структуры в IPropertyKeeper.Properties
# Применяем свойства и получаем XML строку
xml_properties = manager.set_properties(properties)
IPropertyKeeper = kompas_api7_module.IPropertyKeeper(PartIKompasDocument3D.TopPart)

# Теперь присваиваем XML строку свойству
IPropertyKeeper.Properties = xml_properties
Работает только со стандартными свойствами по типу наименование, обозначение, кастомные не создает.

2) Через AddProperty в IPropertyMng

IProperty = IPropertyMng.GetProperty(PartIKompasDocument3D, "Flag")
if IProperty is None:
   IProperty = IPropertyMng.AddProperty(empty_val, empty_val)
   IProperty.Name = "Flag"
   IProperty.Update()

IPropertyKeeperTop.SetPropertyValue(IProperty, "4", True)
PartIKompasDocument3D.TopPart.Update()

Свойство создается, но значение не присваивается, свойства на каждую деталь и модель имеют разное id, по итогу этих свойств в общей сборке получается шт. 15.

3) Через библиотеку свойств, id свойства в библиотеке отличается от id свойства добавленного через PDM.

Теперь даже не знаю, что еще сделать, но PDM как то добавляет одно и то же свойство с одним id причем на любые модели id всегда фиксировано, может быть есть у кого ни будь варианты? Как вы работаете со свойствами в 3D?



Валерий Изранов

Чтобы получить пользу от свойства 'Flag' его надо добавить Сборке и абсолютно всем ее компонентам.

Михаил88

Цитата: abvgdeyka от 29.09.26, 09:41:55Здравствуйте уважаемые!

Добрый день, вы неверно делаете.
Вам нужно добавлять свойство из библиотеки, а не постоянно создавать новое.
Скопируйте свойство в библиотеку свойств (свою).
И добавляйте его.
Скиньте деталь со свойством добавленным из PDM.

abvgdeyka

Цитата: Михаил88 от 29.09.26, 10:08:39Добрый день, вы неверно делаете.
Вам нужно добавлять свойство из библиотеки, а не постоянно создавать новое.
Скопируйте свойство в библиотеку свойств (свою).
И добавляйте его.
Спасибо за совет! Как раз до этого тоже дошел, я добавил в свою библиотеку свойство из файла с этим флагом, он прям тот, что нужно! Теперь ищу способ как добавлять свойства из библиотеки в модель, если есть пример буду очень признателен.

Михаил88

#4
Цитата: abvgdeyka от 29.09.26, 10:11:49Теперь ищу способ как добавлять свойства из библиотеки в модель, если есть пример буду очень признателен.


пример есть


# id свойства
area = 340070546567.0
# путь к системной папке
path_sys = kompas_object.ksSystemPath(0)
# имя библиотеки свойств
properties_lpt = "\\properties.lpt"

property_mng.AddProperty(VARIANT(VT_EMPTY, None), property_mng.GetProperty(path_sys + properties_lpt, area))

property_keeper.SetPropertyValue(property_mng.GetProperty(doc, area), 150, True)
+ Благодарностей: 1

abvgdeyka

Цитата: Михаил88 от 29.09.26, 10:14:46пример есть


# id свойства
area = 340070546567.0
# путь к системной папке
path_sys = kompas_object.ksSystemPath(0)
# имя библиотеки свойств
properties_lpt = "\\properties.lpt"

property_mng.AddProperty(VARIANT(VT_EMPTY, None), property_mng.GetProperty(path_sys + properties_lpt, area))

property_keeper.SetPropertyValue(property_mng.GetProperty(doc, area), 150, True)

Все отлично работает спасибо большое!