Добавил скрипт для разового экспорта всех вспомогательных обьектов

This commit is contained in:
Mark Voltov 2023-06-10 22:56:53 +03:00
parent 4ffa7f7c08
commit 5bc70326ed

View file

@ -0,0 +1,105 @@
import os
import json
import FreeCAD
import Tools
def export_coordinate_systems():
# Получение активного документа FreeCAD
doc = FreeCAD.ActiveDocument
if not doc:
raise ValueError("Нет активного документа FreeCAD.")
# Получение имени активного документа
doc_name = doc.Name
# Получение пути к папке и имя файла активного документа
folder_path, file_name = os.path.split(doc.FileName)
# Создание папки для экспорта, если она не существует
output_folder = os.path.join(folder_path, 'entities')
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# Создание копии активного документа
# надо сохраняться, а не копироваться
doc.save()
# Получение списка объектов документа
objects = doc.Objects
# Обход объектов для сохранения локальных систем координат
for obj in objects:
if obj.TypeId == 'PartDesign::CoordinateSystem':
partprops = Tools.getLocalPartProps(obj)
output_file_path = os.path.join(output_folder, f"{obj.Label}.json")
with open(output_file_path, "w", encoding="utf8") as propfile:
json.dump(partprops, propfile, indent=1, separators=(',', ': '))
print("Экспорт обьектов завершен.")
export_coordinate_systems()
#работает
def import_coordinate_systems():
# Получение активного документа FreeCAD
doc = FreeCAD.ActiveDocument
if not doc:
raise ValueError("Нет активного документа FreeCAD.")
# Получение имени активного документа
doc_name = doc.Name
# Получение пути к папке активного документа
folder_path, _ = os.path.split(doc.FileName)
# Получение пути к папке с файлами JSON
json_folder_path = os.path.join(folder_path, doc_name)
# Проверка существования папки с файлами JSON
if not os.path.exists(json_folder_path):
raise ValueError(f"Папка {json_folder_path} не существует.")
# Получение списка файлов JSON в папке
json_files = [f for f in os.listdir(json_folder_path) if f.endswith(".json")]
# Обход файлов JSON для создания локальных систем координат
for json_file in json_files:
json_file_path = os.path.join(json_folder_path, json_file)
with open(json_file_path, "r") as file:
json_data = json.load(file)
# Извлечение информации о локальной системе координат из файла JSON
name = json_data.get("Name")
x = json_data.get("X")
y = json_data.get("Y")
z = json_data.get("Z")
# Создание локальной системы координат
placement = FreeCAD.Placement()
placement.Base = FreeCAD.Vector(x, y, z)
part = doc.addObject("Part::Feature", name)
part.Placement = placement
# Добавление дополнительных свойств из файла JSON
for key, value in json_data.items():
if key not in ["Name", "X", "Y", "Z"]:
setattr(part, key, value)
print("Импорт локальных систем координат завершен.")
# Пример использования
#import_coordinate_systems()