Привет, нужно написать аддон для Blender 3.3.0 на питон, условия следующие:

1.

 bl_info = {
    "name": "F1 Track Grid Editor",
    "author": "AlonsoBeast",
    "version": (1, 0, 0),
    "blender": (3, 3, 0),
    "category": "3D View",
}
    bl_label = "F1 Track Builder Toolkit"
    bl_idname = "F1_PT_track_grid_editor"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = "F1 Track Builder Toolkit"


2. Программа должна устанавливаться и активироваться в меню аддонов. Интерфейс программы должен предполагать кнопку Import и Export. Кнопка Import открывает диалоговое окно с проводником, где мы должны выбрать файл grids.pssg, который на самом деле внутри является обычным .xml файлом следующей структуры:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<PSSGFILE version="1.0.0.0">
<PSSGDATABASE>
<LIBRARY type="YYY">
<ROOTNODE stopTraversal="0" nickname="Scene Root" id="Scene Root">
<TRANSFORM>
1.000000000e+000 0.000000000e+000 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -0.000000000e+000 0.000000000e+000 
-0.000000000e+000 -0.000000000e+000 1.000000000e+000 -0.000000000e+000 0.000000000e+000 0.000000000e+000 -0.000000000e+000 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
0.000000000e+000 0.000000000e+000 0.000000000e+000 0.000000000e+000 0.000000000e+000 0.000000000e+000 </BOUNDINGBOX>
<NODE stopTraversal="0" nickname="grid_start_standing_0" id="grid_start_standing_0">
<TRANSFORM>
-9.111775160e-001 0.000000000e+000 4.120148122e-001 0.000000000e+000 0.000000000e+000 1.000000000e+000 -0.000000000e+000 0.000000000e+000 
4.120148122e-001 -0.000000000e+000 9.111775160e-001 -0.000000000e+000 1.531664429e+002 3.348744154e+000 4.694107056e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.000000000e-001 -5.000000000e-001 -5.000000000e-001 5.000000000e-001 5.000000000e-001 5.000000000e-001 </BOUNDINGBOX>
<RENDERNODE stopTraversal="0" nickname="slot_20" id="slot_20">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 -3.290527344e+000 0.000000000e+000 1.664697876e+002 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_21" id="slot_21">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 1.652572632e+000 0.000000000e+000 1.755853271e+002 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_22" id="slot_22">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 -3.191314697e+000 0.000000000e+000 1.824299622e+002 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_23" id="slot_23">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 1.787918091e+000 0.000000000e+000 1.911850586e+002 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_00" id="slot_00">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 -3.039375305e+000 0.000000000e+000 5.892021179e+000 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_01" id="slot_01">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 1.906806946e+000 0.000000000e+000 1.477278137e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_03" id="slot_03">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 1.844741821e+000 0.000000000e+000 3.057595825e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_02" id="slot_02">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 -2.999214172e+000 0.000000000e+000 2.196004486e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_04" id="slot_04">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 -3.094627380e+000 0.000000000e+000 3.779714966e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_05" id="slot_05">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 1.813285828e+000 0.000000000e+000 4.669848633e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_06" id="slot_06">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 -3.010116577e+000 0.000000000e+000 5.396173096e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_07" id="slot_07">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 1.922630310e+000 0.000000000e+000 6.269879150e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_08" id="slot_08">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 -3.127281189e+000 0.000000000e+000 6.977992249e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_09" id="slot_09">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 1.858345032e+000 0.000000000e+000 7.864416504e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_10" id="slot_10">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 -3.098320007e+000 0.000000000e+000 8.571765137e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_11" id="slot_11">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 1.763847351e+000 0.000000000e+000 9.449633789e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_12" id="slot_12">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 -3.118263245e+000 0.000000000e+000 1.017342987e+002 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_13" id="slot_13">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 1.724510193e+000 0.000000000e+000 1.104249268e+002 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_14" id="slot_14">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 -3.152915955e+000 0.000000000e+000 1.179775085e+002 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_15" id="slot_15">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 1.648323059e+000 0.000000000e+000 1.270375977e+002 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_16" id="slot_16">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 -3.251289368e+000 0.000000000e+000 1.338940887e+002 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_17" id="slot_17">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 1.786094666e+000 0.000000000e+000 1.426742249e+002 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_18" id="slot_18">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 -3.194084167e+000 0.000000000e+000 1.502039185e+002 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
<RENDERNODE stopTraversal="0" nickname="slot_19" id="slot_19">
<TRANSFORM>
2.149999380e+000 -2.224908325e-016 -0.000000000e+000 0.000000000e+000 0.000000000e+000 1.000000000e+000 -1.748455531e-007 0.000000000e+000 
-0.000000000e+000 1.748455531e-007 1.000000000e+000 -0.000000000e+000 1.721786499e+000 0.000000000e+000 1.588978271e+002 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.077707171e-001 0.000000000e+000 -1.003862381e+000 5.077707171e-001 0.000000000e+000 1.003862381e+000 </BOUNDINGBOX>
</RENDERNODE>
</NODE>
<NODE stopTraversal="0" nickname="grid_tracksidegarage00" id="grid_tracksidegarage00">
<TRANSFORM>
5.437334180e-001 0.000000000e+000 8.392580152e-001 0.000000000e+000 0.000000000e+000 1.000000000e+000 -0.000000000e+000 0.000000000e+000 
-8.392580152e-001 -0.000000000e+000 5.437334180e-001 -0.000000000e+000 1.230039825e+002 -2.149536514e+001 2.670050430e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.000000000e-001 -5.000000000e-001 -5.000000000e-001 5.000000000e-001 5.000000000e-001 5.000000000e-001 </BOUNDINGBOX>
<NODE stopTraversal="0" nickname="slot_00_tracksidegarage" id="slot_00_tracksidegarage">
<TRANSFORM>
1.589227617e-001 0.000000000e+000 -9.872909784e-001 0.000000000e+000 0.000000000e+000 1.000000000e+000 -0.000000000e+000 0.000000000e+000 
9.872909188e-001 -0.000000000e+000 1.589227021e-001 -0.000000000e+000 3.136570740e+001 -3.151348114e+000 3.342308044e+000 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-8.000000119e-001 0.000000000e+000 -1.500000000e+000 8.000000119e-001 9.999999747e-005 1.500000000e+000 </BOUNDINGBOX>
</NODE>
</NODE>
</ROOTNODE>
</LIBRARY>
</PSSGDATABASE>
</PSSGFILE>


3. Что нам нужно: Создавать объекты в сцене Блендер, которые будут интрепретировать трансформ, баундингбокс в координаты и скейлы. Конкретно: Эмпти объект папа Scene Root, который будет содержать внутри себя 2 Empty <NODE, которые в свою очередь содержат в себе дочерние объекты <RENDERNODE, которые будут представлять из себя Plane Mesh. 

Как мы собираем данные:

<NODE stopTraversal="0" nickname="grid_start_standing_0" id="grid_start_standing_0">
<TRANSFORM>
-9.111775160e-001 0.000000000e+000 4.120148122e-001 0.000000000e+000 0.000000000e+000 1.000000000e+000 -0.000000000e+000 0.000000000e+000 
4.120148122e-001 -0.000000000e+000 9.111775160e-001 -0.000000000e+000 1.531664429e+002 3.348744154e+000 4.694107056e+001 1.000000000e+000 </TRANSFORM>
<BOUNDINGBOX>
-5.000000000e-001 -5.000000000e-001 -5.000000000e-001 5.000000000e-001 5.000000000e-001 5.000000000e-001 </BOUNDINGBOX>

Имя объекта (эмпти или меш) мы берем отсюда nickname="*имя*"

Координаты являются матричной системой четверки. Отсюда мы берем координаты для XYZ (В блендере обязательно при импорте сделать XZY перенос, так как Блендер имеет другую систему координат), а также Quaternion режим для всех объектов при импорте QWXYZ (Блендер имеет QWXZY формат)
<TRANSFORM>
-9.111775160e-001 0.000000000e+000 4.120148122e-001 0.000000000e+000 0.000000000e+000 1.000000000e+000 -0.000000000e+000 0.000000000e+000 
4.120148122e-001 -0.000000000e+000 9.111775160e-001 -0.000000000e+000 1.531664429e+002 3.348744154e+000 4.694107056e+001 1.000000000e+000 </TRANSFORM>

Корректные данные в Блендер выглядят следующим образом, используй это как референс и пониманием что и где:
XYZ (XZY в блендере:)
X: 153.166 m
Y: -46.9411 m
Z: 3.34874 m

Ротация QWXYZ (в блендере QWXZY)
W: 0.0
X: 0.977542
Y: 0.21074
Z: 0.0

4. Не забываем, что после импорта файла в проект мы работаем дальше с его темп файлом, который мы удаляем после сессии (либо сохраняем если в blend файл кто-то сохраняет)

Пока что так, пока не пиши код, скажи как ты понял мою задачу.