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()