2023-06-10 22:56:53 +03:00
|
|
|
|
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("Экспорт обьектов завершен.")
|
|
|
|
|
|
2023-10-16 15:25:55 +03:00
|
|
|
|
# export_coordinate_systems()
|
2023-06-10 22:56:53 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#работает
|
|
|
|
|
|
|
|
|
|
|
2023-06-10 22:58:44 +03:00
|
|
|
|
# def import_coordinate_systems():
|
|
|
|
|
# # Получение активного документа FreeCAD
|
|
|
|
|
# doc = FreeCAD.ActiveDocument
|
|
|
|
|
# if not doc:
|
|
|
|
|
# raise ValueError("Нет активного документа FreeCAD.")
|
2023-06-10 22:56:53 +03:00
|
|
|
|
|
2023-06-10 22:58:44 +03:00
|
|
|
|
# # Получение имени активного документа
|
|
|
|
|
# doc_name = doc.Name
|
|
|
|
|
|
|
|
|
|
# # Получение пути к папке активного документа
|
|
|
|
|
# folder_path, _ = os.path.split(doc.FileName)
|
2023-06-10 22:56:53 +03:00
|
|
|
|
|
2023-06-10 22:58:44 +03:00
|
|
|
|
# # Получение пути к папке с файлами JSON
|
|
|
|
|
# json_folder_path = os.path.join(folder_path, doc_name)
|
2023-06-10 22:56:53 +03:00
|
|
|
|
|
2023-06-10 22:58:44 +03:00
|
|
|
|
# # Проверка существования папки с файлами JSON
|
|
|
|
|
# if not os.path.exists(json_folder_path):
|
|
|
|
|
# raise ValueError(f"Папка {json_folder_path} не существует.")
|
2023-06-10 22:56:53 +03:00
|
|
|
|
|
2023-06-10 22:58:44 +03:00
|
|
|
|
# # Получение списка файлов JSON в папке
|
|
|
|
|
# json_files = [f for f in os.listdir(json_folder_path) if f.endswith(".json")]
|
2023-06-10 22:56:53 +03:00
|
|
|
|
|
2023-06-10 22:58:44 +03:00
|
|
|
|
# # Обход файлов 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)
|
2023-06-10 22:56:53 +03:00
|
|
|
|
|
2023-06-10 22:58:44 +03:00
|
|
|
|
# # Извлечение информации о локальной системе координат из файла JSON
|
|
|
|
|
# name = json_data.get("Name")
|
|
|
|
|
# x = json_data.get("X")
|
|
|
|
|
# y = json_data.get("Y")
|
|
|
|
|
# z = json_data.get("Z")
|
2023-06-10 22:56:53 +03:00
|
|
|
|
|
2023-06-10 22:58:44 +03:00
|
|
|
|
# # Создание локальной системы координат
|
|
|
|
|
# placement = FreeCAD.Placement()
|
|
|
|
|
# placement.Base = FreeCAD.Vector(x, y, z)
|
|
|
|
|
# part = doc.addObject("Part::Feature", name)
|
|
|
|
|
# part.Placement = placement
|
2023-06-10 22:56:53 +03:00
|
|
|
|
|
2023-06-10 22:58:44 +03:00
|
|
|
|
# # Добавление дополнительных свойств из файла JSON
|
|
|
|
|
# for key, value in json_data.items():
|
|
|
|
|
# if key not in ["Name", "X", "Y", "Z"]:
|
|
|
|
|
# setattr(part, key, value)
|
2023-06-10 22:56:53 +03:00
|
|
|
|
|
2023-06-10 22:58:44 +03:00
|
|
|
|
# print("Импорт локальных систем координат завершен.")
|
2023-06-10 22:56:53 +03:00
|
|
|
|
|
2023-06-10 22:56:53 +03:00
|
|
|
|
# # Пример использования
|
2023-06-10 22:58:44 +03:00
|
|
|
|
# #import_coordinate_systems()
|
2023-06-10 22:56:53 +03:00
|
|
|
|
|