use property keeper
This commit is contained in:
parent
6d37e2d04e
commit
e945770885
|
@ -44125,3 +44125,47 @@ AttributeError: 'NoneType' object has no attribute 'Parts'
|
|||
Элементов 1
|
||||
Гибов 0
|
||||
|
||||
2025-06-30 11:15:41,946 - parser - INFO - main - collect_statistics - 660 - Начинаем сбор статистики по элементам...
|
||||
2025-06-30 11:15:41,946 - parser - INFO - main - collect_statistics - 680 - Обрабатываем документ: Сборка изделий
|
||||
2025-06-30 11:15:56,086 - parser - INFO - main - collect_statistics - 705 - Найдено:
|
||||
Элементов 22
|
||||
Гибов 2
|
||||
|
||||
2025-06-30 11:19:10,024 - parser - INFO - main - collect_statistics - 663 - Начинаем сбор статистики по элементам...
|
||||
2025-06-30 11:19:10,412 - parser - INFO - main - collect_statistics - 683 - Обрабатываем документ: Сборка изделий
|
||||
2025-06-30 11:19:13,383 - parser - ERROR - main - collect_statistics - 724 - [ERROR] Ошибка при обработке документа #1: (-2147352573, 'Член группы не найден.', None, None)
|
||||
2025-06-30 11:19:13,484 - parser - INFO - main - collect_statistics - 683 - Обрабатываем документ: Проф труба
|
||||
2025-06-30 11:19:14,232 - parser - ERROR - main - collect_statistics - 724 - [ERROR] Ошибка при обработке документа #2: (-2147352573, 'Член группы не найден.', None, None)
|
||||
2025-06-30 11:19:50,399 - parser - INFO - main - collect_statistics - 662 - Начинаем сбор статистики по элементам...
|
||||
2025-06-30 11:19:50,850 - parser - INFO - main - collect_statistics - 682 - Обрабатываем документ: Сборка изделий
|
||||
2025-06-30 11:19:54,117 - parser - ERROR - main - collect_statistics - 723 - [ERROR] Ошибка при обработке документа #1: (-2147352573, 'Член группы не найден.', None, None)
|
||||
2025-06-30 11:19:54,183 - parser - INFO - main - collect_statistics - 682 - Обрабатываем документ: Проф труба
|
||||
2025-06-30 11:19:54,769 - parser - ERROR - main - collect_statistics - 723 - [ERROR] Ошибка при обработке документа #2: (-2147352573, 'Член группы не найден.', None, None)
|
||||
2025-06-30 11:20:57,574 - parser - INFO - main - collect_statistics - 668 - Начинаем сбор статистики по элементам...
|
||||
2025-06-30 11:20:58,000 - parser - INFO - main - collect_statistics - 688 - Обрабатываем документ: Сборка изделий
|
||||
2025-06-30 11:21:12,700 - parser - INFO - main - collect_statistics - 713 - Найдено:
|
||||
Элементов 22
|
||||
Гибов 2
|
||||
|
||||
2025-06-30 11:22:18,699 - parser - INFO - main - collect_statistics - 668 - Начинаем сбор статистики по элементам...
|
||||
2025-06-30 11:22:18,708 - parser - INFO - main - collect_statistics - 688 - Обрабатываем документ: Сборка изделий
|
||||
2025-06-30 11:22:34,370 - parser - INFO - main - collect_statistics - 713 - Найдено:
|
||||
Элементов 22
|
||||
Гибов 2
|
||||
|
||||
2025-06-30 11:25:08,246 - parser - INFO - main - collect_statistics - 668 - Начинаем сбор статистики по элементам...
|
||||
2025-06-30 11:25:09,230 - parser - INFO - main - collect_statistics - 688 - Обрабатываем документ: Сборка изделий
|
||||
2025-06-30 11:25:10,670 - parser - ERROR - main - collect_statistics - 729 - [ERROR] Ошибка при обработке документа #1: cannot unpack non-iterable bool object
|
||||
2025-06-30 11:25:10,731 - parser - INFO - main - collect_statistics - 688 - Обрабатываем документ: Проф труба
|
||||
2025-06-30 11:25:11,065 - parser - ERROR - main - collect_statistics - 729 - [ERROR] Ошибка при обработке документа #2: cannot unpack non-iterable bool object
|
||||
2025-06-30 11:26:06,756 - parser - INFO - main - collect_statistics - 667 - Начинаем сбор статистики по элементам...
|
||||
2025-06-30 11:26:07,411 - parser - INFO - main - collect_statistics - 687 - Обрабатываем документ: Сборка изделий
|
||||
2025-06-30 11:26:08,899 - parser - ERROR - main - collect_statistics - 728 - [ERROR] Ошибка при обработке документа #1: cannot unpack non-iterable bool object
|
||||
2025-06-30 11:26:09,021 - parser - INFO - main - collect_statistics - 687 - Обрабатываем документ: Проф труба
|
||||
2025-06-30 11:26:09,223 - parser - ERROR - main - collect_statistics - 728 - [ERROR] Ошибка при обработке документа #2: cannot unpack non-iterable bool object
|
||||
2025-06-30 11:27:53,772 - parser - INFO - main - collect_statistics - 671 - Начинаем сбор статистики по элементам...
|
||||
2025-06-30 11:27:54,115 - parser - INFO - main - collect_statistics - 691 - Обрабатываем документ: Сборка изделий
|
||||
2025-06-30 11:28:07,710 - parser - INFO - main - collect_statistics - 716 - Найдено:
|
||||
Элементов 22
|
||||
Гибов 2
|
||||
|
||||
|
|
|
@ -537,28 +537,6 @@ class KompasDocumentParser:
|
|||
target[category].setdefault(key, []).extend(items)
|
||||
return target
|
||||
|
||||
def keeper(self, obj):
|
||||
property_keeper = self.api7_module.IPropertyKeeper(obj)
|
||||
try:
|
||||
data = xmltodict.parse(property_keeper.Properties)
|
||||
properties_list = data.get("infObject", {}).get("property", [])
|
||||
if not isinstance(properties_list, list):
|
||||
properties_list = [properties_list]
|
||||
|
||||
# Создаём словарь по @id
|
||||
props = {prop["@id"]: prop for prop in properties_list if "@id" in prop}
|
||||
if props.get("276039607982", None):
|
||||
section_prop = props.get("276039607982") # Сечение (тип профиля)
|
||||
sketch_prop = props.get("316618764777") # Эскиз сечения
|
||||
profile_length_prop = props.get("235833998283") # Длина профиля
|
||||
key = sketch_prop["@value"]
|
||||
return (key, profile_length_prop)
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
return None
|
||||
|
||||
return None
|
||||
|
||||
def traverse_ipart(self, element, depth=0, viewed=None, result=None):
|
||||
if viewed is None:
|
||||
viewed = set()
|
||||
|
@ -606,10 +584,28 @@ class KompasDocumentParser:
|
|||
|
||||
else:
|
||||
if isinstance(f, self.api7_module.IBody7):
|
||||
res = self.keeper(f)
|
||||
if res:
|
||||
key, value = res
|
||||
result["Pipe"].setdefault(key, []).append(value)
|
||||
# Получаем интерфейс IPropertyKeeper для текущего тела
|
||||
property_keeper = self.api7_module.IPropertyKeeper(f)
|
||||
|
||||
# Получаем свойства "Длина профиля" и "Сечение"
|
||||
prop_length = property_manager.GetProperty(
|
||||
self.application.ActiveDocument, "Длина профиля"
|
||||
)
|
||||
prop_section = property_manager.GetProperty(
|
||||
self.application.ActiveDocument, "Сечение"
|
||||
)
|
||||
|
||||
# Извлекаем значения свойств
|
||||
success_length, value_length, _ = property_keeper.GetPropertyValue(
|
||||
prop_length, "", True, True
|
||||
)
|
||||
success_section, value_section, _ = property_keeper.GetPropertyValue(
|
||||
prop_section, "", True, True
|
||||
)
|
||||
|
||||
# Если оба свойства успешно извлечены — сохраняем в результат
|
||||
if success_section and success_length:
|
||||
result["Pipe"].setdefault(value_section, []).append(value_length)
|
||||
|
||||
if isinstance(f, self.api7_module.IUserDesignationCompObj):
|
||||
weldes = self.api7_module.IFeature7(f).SubFeatures(1, True, True)
|
||||
|
@ -623,7 +619,6 @@ class KompasDocumentParser:
|
|||
self.application
|
||||
)
|
||||
for w in weldes:
|
||||
print(w)
|
||||
property_keeper = self.api7_module.IPropertyKeeper(w)
|
||||
res, value, from_source = property_keeper.GetPropertyValue(
|
||||
prop, "", True, True
|
||||
|
|
Loading…
Reference in New Issue