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

