framework/cg/freecad/Frames/ImportExportEntities.py
2023-10-16 15:25:55 +03:00

105 lines
3.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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