Files

17055 lines
615 KiB
JSON

{
"sources": [
{
"path": "src\\QInventor\\Init.py",
"sha256": "7d2681813d2efe5a3b79147da578b67290117e61575e4e1735dd6a9aab7a37e1"
},
{
"path": "src\\QInventor\\InitGui.py",
"sha256": "0f6fa12520a656980d3a3d61582cfcbebfa3f41728d63b75ad2fb001116a850e"
},
{
"path": "src\\QInventor\\qi_bom_ui.py",
"sha256": "522ea28fcce9f7a22e0ea107304ca32406846ec99af16b6adf04ef3da008811d"
},
{
"path": "src\\QInventor\\qi_bom.py",
"sha256": "548b7196392650b790f8263440cc12039eb1aae20c19ce6158e4588f9cc2053d"
},
{
"path": "src\\QInventor\\qi_commands.py",
"sha256": "19816cbda6a9cc15023484022d0a13f84bd176d6e9eae0b681b968da21732f61"
},
{
"path": "src\\QInventor\\qi_drawing_bom_export.py",
"sha256": "1e0fbe90cafcf2321ce4eae90868211be7db105767f98bcf42789950d52dab2f"
},
{
"path": "src\\QInventor\\qi_drawing_bom_ui.py",
"sha256": "8a50502dd648a42a2e6e4b436972c67b71ec0683f0c4276b13f313357d0c103a"
},
{
"path": "src\\QInventor\\qi_drawing_bom.py",
"sha256": "143dfa91623c6ac08c80e02e1671f6628ec18a5fd551bda362d7d99d252a4d11"
},
{
"path": "src\\QInventor\\qi_extrude.py",
"sha256": "03b5b7eea4adbf168d623995e84e0d3af4ccea58494b3b34542b10447ef0c072"
},
{
"path": "src\\QInventor\\qi_io.py",
"sha256": "77ea249f6d3a374e89ac294e0de8a386356ed47f908ba494cbe8fea37c34df1f"
},
{
"path": "src\\QInventor\\qi_localization.py",
"sha256": "84041c5888157e7844b99ebda3fddf9e86531667c9e1aa56cde917795f1b91e1"
},
{
"path": "src\\QInventor\\qi_messages.py",
"sha256": "5c0c41cf0c1bd60f30d0aec0da6934c2af70a88765d86c07e500046714eeecb5"
},
{
"path": "src\\QInventor\\qi_model.py",
"sha256": "08c094382cfadd5e94e3ab6d1ce01ad1214985cc2a3222814ab5b2da26c4d762"
},
{
"path": "src\\QInventor\\qi_parameters_ui.py",
"sha256": "4e10337d61bb38f229736f0e877d16cc99106943fa3a8f4333fa905aad7ec19f"
},
{
"path": "src\\QInventor\\qi_parameters.py",
"sha256": "9f384e40b930b6ebc4e7f068651c0797134818803b82704258e26215997c01c2"
},
{
"path": "src\\QInventor\\qi_projection.py",
"sha256": "a4923dd69f7dcb3230a4b60bd001698d90d6d02db5aa016362034ee73520925d"
},
{
"path": "src\\QInventor\\qi_sketch_offset.py",
"sha256": "ffb0f2a000b91528587110d7f5d47b7e26902b499e1b35220e3c09fc89786cb9"
},
{
"path": "src\\QInventor\\qi_sketch_patterns.py",
"sha256": "c98dfd369c639436f0aed0664cf43cc6345b6639c102309efb90041fe65d4e1e"
},
{
"path": "src\\QInventor\\qi_sketch_preview.py",
"sha256": "4858dc39046bad95306179212fe44a63e2e1437259a9c6d14bc847b68c7aab76"
},
{
"path": "src\\QInventor\\qi_sketch_ui.py",
"sha256": "d505b802c65f1566a64d7687e290a64226aff91958db59b8d621ac69909ead37"
},
{
"path": "src\\QInventor\\qi_step_export.py",
"sha256": "754f7f8b841f87a696ddf800e19f947d5e8712fc53faf8fce4d2d0d0f3ee51f6"
},
{
"path": "src\\QInventor\\qi_ui.py",
"sha256": "7432d1939919b30e5fc81cd333caf220ca3b490d71851328aa26d8070a7ac307"
},
{
"path": "src\\QInventor\\qi_workbench.py",
"sha256": "312d49f40d78e8bde48cd8fa57232cd380565fe5b30a688e4612d57bde210c59"
},
{
"path": "src\\QInventor\\resources\\qinventor-a4.svg",
"sha256": "f77419e8559cb24b29a62ebcdc02d781f52c6910c0299d4820d1dd8c820c4128"
},
{
"path": "src\\QInventor\\resources\\qinventor.ico",
"sha256": "ea229e71d0fcdd749c35977fc0f11720a972c3ee04b3d9042d850182e0a6ed1c"
},
{
"path": "src\\QInventor\\resources\\qinventor.png",
"sha256": "3de618b2d07a1fd36a14f71d3f0b85f36a5dcc22ccf070b4629491da6e6f9e32"
},
{
"path": "src\\QInventor\\resources\\qinventor.svg",
"sha256": "12e95fa28c4aaf927311a777b3928d0518799e51663aab2f0f036015210dc954"
}
],
"application": "QInventor",
"launcherSha256": "cd5a44ae9cd094a77088a58efc12e48b26549abf5ed40edd8a15f6450ef554de",
"engine": "FreeCAD 1.1.4 / Open CASCADE",
"builtAtUtc": "2026-10-15T13:59:40.0135156Z",
"validation": {
"status": "passed",
"version": [
"1",
"1",
"4",
"20260928 (Git shallow)",
"Unknown",
"2026/09/28 13:46:34",
"(HEAD detached at 4fd3bf320)",
"4fd3bf320d9566a27e60069fc8387448aaa3a094"
],
"started": "2026-10-15T16:40:59.566097+03:00",
"checks": [
{
"name": "native_and_custom_commands",
"passed": true,
"result": {
"custom": [
"QI_NewPart",
"QI_NewAssembly",
"QI_Open",
"QI_Save",
"QI_SaveAs",
"QI_NewSketch",
"QI_FinishSketch",
"QI_CancelSketch",
"QI_Line",
"QI_Polyline",
"QI_Rectangle",
"QI_Circle",
"QI_Arc",
"QI_Dimension",
"QI_Horizontal",
"QI_Vertical",
"QI_Coincident",
"QI_Parallel",
"QI_Perpendicular",
"QI_Equal",
"QI_Tangent",
"QI_Fix",
"QI_Construction",
"QI_Trim",
"QI_ProjectGeometry",
"QI_BreakProjection",
"QI_SketchOffset",
"QI_SketchMirror",
"QI_SketchRectangularPattern",
"QI_SketchCircularPattern",
"QI_EditSketchPattern",
"QI_Pocket",
"QI_Revolve",
"QI_Fillet",
"QI_Chamfer",
"QI_Hole",
"QI_Pattern",
"QI_Mirror",
"QI_Pad",
"QI_Box",
"QI_Cylinder",
"QI_Plate",
"QI_Demo",
"QI_AssemblyDemo",
"QI_Dimensions",
"QI_Material",
"QI_Properties",
"QI_Export",
"QI_BOM",
"QI_AssemblyActivate",
"QI_AssemblyInsert",
"QI_AssemblyGround",
"QI_AssemblyFixed",
"QI_AssemblyRevolute",
"QI_AssemblySlider",
"QI_AssemblyCylindrical",
"QI_AssemblySolve",
"QI_Drawing",
"QI_DrawingBOM",
"QI_DrawingExport",
"QI_DrawingView",
"QI_DrawingDimension",
"QI_DrawingProjection",
"QI_ViewFit",
"QI_Axonometric",
"QI_Front",
"QI_Top",
"QI_ToggleTree",
"QI_NativeTools",
"QI_Help"
],
"native_count": 772,
"command_api": [
"__class__",
"__delattr__",
"__dir__",
"__doc__",
"__eq__",
"__format__",
"__ge__",
"__getattribute__",
"__getstate__",
"__gt__",
"__hash__",
"__init__",
"__init_subclass__",
"__le__",
"__lt__",
"__ne__",
"__new__",
"__reduce__",
"__reduce_ex__",
"__repr__",
"__setattr__",
"__sizeof__",
"__str__",
"__subclasshook__",
"createCustomCommand",
"findCustomCommand",
"get",
"getAction",
"getInfo",
"getShortcut",
"isActive",
"listAll",
"listByShortcut",
"removeCustomCommand",
"resetShortcut",
"run",
"setShortcut",
"update"
],
"native_object_api": [
"__class__",
"__delattr__",
"__dir__",
"__doc__",
"__eq__",
"__format__",
"__ge__",
"__getattribute__",
"__getstate__",
"__gt__",
"__hash__",
"__init__",
"__init_subclass__",
"__le__",
"__lt__",
"__ne__",
"__new__",
"__reduce__",
"__reduce_ex__",
"__repr__",
"__setattr__",
"__sizeof__",
"__str__",
"__subclasshook__",
"createCustomCommand",
"findCustomCommand",
"get",
"getAction",
"getInfo",
"getShortcut",
"isActive",
"listAll",
"listByShortcut",
"removeCustomCommand",
"resetShortcut",
"run",
"setShortcut",
"update"
]
}
},
{
"name": "russian_workflow_ribbon",
"passed": true,
"result": [
"Файл",
"3D-модель",
"Эскиз",
"Сборка",
"Чертёж",
"Вид"
]
},
{
"name": "native_mouse_keyboard_sketch_ribbon_suite",
"passed": true,
"result": {
"status": "passed",
"passed": 11,
"failed": 0,
"checks": [
{
"name": "Blank XY sketch enters native edit via QI_NewSketch",
"passed": true,
"result": {
"native_editor": "Sketcher::SketchObject",
"plane": "XY",
"canvas": [
1174,
608
],
"camera": "#Inventor V2.1 ascii\n\n\nOrthographicCamera {\n viewportMapping ADJUST_CAMERA\n position 0 0 246\n orientation 0 0 1 0\n nearDistance 245.74402\n farDistance 246.24602\n aspectRatio 1\n focalDistance 250\n height 4.1421356\n\n}\n",
"exposed": true,
"edit_controls": {
"QI_FinishSketch": {
"visible_without_scrolling": true,
"caption": "Завершить\nэскиз"
},
"QI_CancelSketch": {
"visible_without_scrolling": true,
"caption": "Отменить\nэскиз"
}
},
"navigation": "Gui::RevitNavigationStyle"
}
},
{
"name": "Rectangle drawn through native Qt mouse events creates native geometry",
"passed": true,
"result": {
"geometry_count": 4,
"constraints": [
"Coincident",
"Coincident",
"Coincident",
"Coincident",
"Horizontal",
"Horizontal",
"Vertical",
"Vertical"
],
"closed": true
}
},
{
"name": "D/E and document shortcuts have one owner across workbenches",
"passed": true,
"result": {
"native_keys": {
"L": [],
"C": [],
"D": [],
"E": [],
"Ctrl+N": [],
"Ctrl+O": [],
"Ctrl+S": []
},
"ribbon_keys": {
"QI_NewPart": "Ctrl+N",
"QI_Open": "Ctrl+O",
"QI_Save": "Ctrl+S",
"QI_Line": "L",
"QI_Circle": "C",
"QI_Dimension": "D",
"QI_Pad": "E"
}
}
},
{
"name": "Native Qt mouse events select an edge; D places a driving datum through its dialog",
"passed": true,
"result": {
"driving_value_mm": 40,
"dialogs": [
"Введите длину"
],
"constraints": 9,
"selection_method": "native viewport Qt mouse events; actual selection verified",
"coordinates": {
"expected_edge": "Edge3",
"local_point": [
-1.3148558000000001,
0.577719,
0.0
],
"world_point": [
-1.3148558000000001,
0.577719,
0.0
],
"projected_physical": [
492,
486
],
"qt_point": [
394,
219
],
"qt_size": [
1174,
608
],
"physical_size": [
1467,
760
],
"ratios": [
1.2495741056218057,
1.25
],
"input_delivery": "Qt events on native viewport",
"os_pointer_access": false,
"input_state": {
"wait_for_window_active": true,
"main_active": true,
"focus_window_title": "QInventor — Проверка построения мышью*",
"renderer_mouse_tracking": true,
"renderer_focus_policy": "11",
"renderer_has_focus": true,
"native_parent_mouse_tracking": true,
"edited_object": "Sketch",
"sketch_visible": false,
"main_frame": [
0,
0,
1440,
970
],
"canvas_global_origin": [
266,
332
],
"screens": [
[
0,
0,
1536,
960
]
]
},
"preselection_object": "Sketch",
"preselection_subelements": [
"Edge3"
],
"selection_after_press": [],
"selection": [
[
"Sketch",
[
"Edge3"
]
]
],
"dimension_key_state": {
"active_main_window": true,
"renderer_has_focus": true,
"focused_class": "Gui::View3DInventorViewer",
"focused_object_name": "",
"shortcut_enabled": true,
"edited_object": "Sketch",
"focus_in_viewport": true
},
"dimension_key_signals": [
"D"
]
},
"untranslated_candidates": []
}
},
{
"name": "Finish sketch exits active tool; E previews and creates real solid",
"passed": true,
"result": {
"solids": 1,
"volume_mm3": 17484.251519999994
}
},
{
"name": "Cancel existing native sketch restores original geometry and constraints",
"passed": true,
"result": {
"original_geometry": 4,
"restored_geometry": 4,
"constraints": 11
}
},
{
"name": "L and C draw actual native line/circle and cancel new sketch removes it",
"passed": true,
"result": [
{
"key": "L",
"native_geometry": "LineSegment"
},
{
"key": "C",
"native_geometry": "Circle"
}
]
},
{
"name": "Sketch on Body face inside App::Part remains in Body and attaches to its feature",
"passed": true,
"result": {
"parent": "PartDesign::Body",
"support": "PartDesign::Feature",
"map_mode": "FlatFace",
"restored_volume_mm3": 8000.0
}
},
{
"name": "Projection and Break Link buttons create defining linked geometry, regenerate and undo",
"passed": true,
"result": {
"controls": {
"QI_ProjectGeometry": {
"caption": "Проецировать геометрию",
"tooltip": "Выберите ребро или грань: контуры будут связаны с исходной деталью. Режим «Вспомогательная» исключает их из профиля.",
"activation": "actual Qt mouse click"
},
"QI_BreakProjection": {
"caption": "Разорвать связь",
"tooltip": "Преобразовать выбранные проекции в независимую геометрию, сохранив её положение и зависимости.",
"activation": "actual Qt mouse click"
}
},
"source_face": "Face6",
"native_geo_ids": [
-3,
-4,
-5,
-6
],
"source_length_mm": 30.0,
"original_area_mm2": 199.99999999999997,
"updated_area_mm2": 300.0,
"detached_geometry_count": 4,
"undo_restored_link": true,
"selection_method": "native Selection API observer boundary; controls clicked with Qt",
"break_selection": [
[
"Sketch",
[
"ExternalEdge1"
]
]
],
"untranslated_candidates": []
}
},
{
"name": "Russian native enum popup preserves canonical values and commits selected property",
"passed": true,
"result": {
"painted_option": "Вращательное",
"canonical_value": "Revolute",
"source_item_preserved": "Revolute"
}
},
{
"name": "Supplemental Russian translations and visible surface audit",
"passed": true,
"result": {
"catalog_sources": 385,
"samples": {
"Sketcher": "Эскизы",
"Pick point or edge": "Выберите точку или ребро",
"Switch mode": "Сменить режим",
"QILength": "Длина",
"MapMode": "Режим привязки",
"New Assembly": "Новая сборка",
"Constraint12": "Ограничение 12"
},
"untranslated_candidates": []
}
}
],
"input_delivery": "Qt events on native viewport",
"os_pointer_access": false
}
},
{
"name": "associative_sketch_projection_suite",
"passed": true,
"result": {
"passed": true,
"checks": [
{
"name": "Defining projection is linked and regenerates",
"passed": true,
"evidence": {
"native_ids": [
-3,
-4,
-5,
-6
],
"source_length_mm": 30.0,
"updated_profile_area_mm2": 300
}
},
{
"name": "Single edge and vertex projections",
"passed": true,
"evidence": {
"edge_ids": [
-3
],
"vertex_ids": [
-4
],
"profile_excludes_references": true
}
},
{
"name": "Construction references regenerate and are excluded from extrusion",
"passed": true,
"evidence": {
"reference_perimeter_mm": 80.0,
"extrusion_rejected": true
}
},
{
"name": "Face-supported sketch and parametric extrusion",
"passed": true,
"evidence": {
"map_mode": "FlatFace",
"updated_join_volume_mm3": 3300.0
}
},
{
"name": "Body selection captures preceding solid feature",
"passed": true,
"evidence": {
"source_type": "PartDesign::AdditiveBox",
"body_reference_cycle_avoided": true
}
},
{
"name": "XZ and YZ world placement",
"passed": true,
"evidence": {
"projection_extrusion_volumes_mm3": {
"XZ": 320.0000000000002,
"YZ": 159.99999999999997
}
}
},
{
"name": "Face projection includes inner hole boundaries",
"passed": true,
"evidence": {
"projected_edges": 5,
"wires": 2,
"hole_preserved_volume_mm3": 1874.336293856408
}
},
{
"name": "Face attachment in rotated Part and Body preserves world placement",
"passed": true,
"evidence": {
"placed_part_and_body": true,
"parametric_world_placement_volume_mm3": 3300.0
}
},
{
"name": "Break Link retains native circles and arcs",
"passed": true,
"evidence": {
"circle_radius_preserved_mm": 4,
"arc_length_preserved_mm": 15.707963267948966
}
},
{
"name": "Break Link preserves native reference dimensions",
"passed": true,
"evidence": {
"reference_dimension_mm": 10.0,
"name_and_reference_mode_retained": true
}
},
{
"name": "Break Link retains geometry and stops dependency",
"passed": true,
"evidence": {
"old_to_independent_ids": {
"-3": 0,
"-4": 1,
"-5": 2,
"-6": 3
},
"independent_area_mm2": 200
}
},
{
"name": "Break Link preserves construction state",
"passed": true,
"evidence": {
"independent_construction_curves": 4,
"profile_empty": true
}
},
{
"name": "Selective unlink preserves grouped links to the same source",
"passed": true,
"evidence": {
"same_source_independent_face_and_retained_edge_link": true
}
},
{
"name": "Native vertex selection and independent point unlink",
"passed": true,
"evidence": {
"vertex_selection_name": "Vertex1",
"independent_point_preserved": true,
"point_constraints_undo_redo_save_reopen": true
}
},
{
"name": "Break Link preserves constraints expressions and other references",
"passed": true,
"evidence": {
"constraints_retained": 3,
"expression": "Base.Width / 2",
"remaining_external_constraint_remapped": -3,
"save_reopen_preserved": true
}
},
{
"name": "Projection and Break Link native undo redo",
"passed": true,
"evidence": {
"projection_and_unlink_undo_redo": true
}
},
{
"name": "Associated and independent geometry save reopen",
"passed": true,
"evidence": {
"associated_file": "C:\\Repos\\qinventor\\artifacts\\validation\\associated-projection.FCStd",
"independent_file": "C:\\Repos\\qinventor\\artifacts\\validation\\independent-projection.FCStd",
"independent_area_after_reload_mm2": 300
}
},
{
"name": "Invalid mixed batches reject atomically",
"passed": true,
"evidence": {
"invalid_batches_rejected_without_mutation": 7
}
},
{
"name": "Cyclic and cross-document sources reject",
"passed": true,
"evidence": {
"invalid_reference_sources_rejected": 3
}
},
{
"name": "Native solver failure aborts projection transaction",
"passed": true,
"evidence": {
"failed_native_solver_transaction_rolled_back": true
}
},
{
"name": "Native external selection names map to GeoIds",
"passed": true,
"evidence": {
"ExternalEdge1": -3,
"ExternalEdge4": -6
}
}
],
"summary": {
"total": 21,
"passed": 21,
"failed": 0
},
"gui_exercised": false
}
},
{
"name": "associative_sketch_offset_suite",
"passed": true,
"result": {
"passed": true,
"checks": [
{
"name": "Circle offset native association and signed source edit",
"passed": true,
"evidence": [
{
"signed_distance_mm": 2.0,
"updated_radius_mm": 10.0
},
{
"signed_distance_mm": -2.0,
"updated_radius_mm": 6.0
}
]
},
{
"name": "Driving offset dimension and native expression",
"passed": true,
"evidence": {
"native_dimension_name": "Смещение",
"expression_drives_offset_mm": 6
}
},
{
"name": "Directed single-line association survives resize and rotation",
"passed": true,
"evidence": [
{
"signed_distance_mm": 2.0,
"source_rotation_deg": 45,
"source_length_mm": 20,
"helper_geometry_excluded": true
},
{
"signed_distance_mm": -2.0,
"source_rotation_deg": 45,
"source_length_mm": 20,
"helper_geometry_excluded": true
}
]
},
{
"name": "Closed polygon outward and inward association for both windings",
"passed": true,
"evidence": [
{
"clockwise": false,
"signed_distance_mm": 3.0,
"offset_profile_area_mm2": 576.0000000003402
},
{
"clockwise": false,
"signed_distance_mm": -3.0,
"offset_profile_area_mm2": 95.99999999572618
},
{
"clockwise": true,
"signed_distance_mm": 3.0,
"offset_profile_area_mm2": 576.0
},
{
"clockwise": true,
"signed_distance_mm": -3.0,
"offset_profile_area_mm2": 95.99999999999997
}
]
},
{
"name": "Inventor-style loop expansion excludes auxiliary geometry",
"passed": true,
"evidence": {
"one_selected_edge_expands_to": 4,
"auxiliary_connectors_and_unrelated_circle_excluded": true
}
},
{
"name": "Inclined polygon edges retain exact normal distances",
"passed": true,
"evidence": {
"inclined_edges_associated_after_source_resize": 3,
"perpendicular_offset_mm": 2
}
},
{
"name": "Constrain Offset off produces independent geometry",
"passed": true,
"evidence": {
"unchecked_constrain_offset_removes_source_association": true,
"independent_polygon_remains_closed": true
}
},
{
"name": "Native offset undo redo retains source association",
"passed": true,
"evidence": {
"native_undo_steps": 1,
"redo_retains_association": true
}
},
{
"name": "Preview cancellation errors and nested transaction rollback",
"passed": true,
"evidence": {
"outer_cancel_restores_sketch": true,
"inner_failure_aborts_outer_preview": true,
"nested_commit_is_one_undo_step": true
}
},
{
"name": "Save reopen and source edit need only native Sketcher",
"passed": true,
"evidence": [
{
"kind": "circle",
"saved_file": "offset-circle.FCStd",
"native_source_edit_after_reopen": true
},
{
"kind": "line",
"saved_file": "offset-line.FCStd",
"native_source_edit_after_reopen": true
},
{
"kind": "polygon",
"saved_file": "offset-polygon.FCStd",
"native_source_edit_after_reopen": true
}
]
},
{
"name": "Only offset distance visible; native visibility survives history and persistence",
"passed": true,
"evidence": [
{
"kind": "circle",
"hidden_association_labels": 1,
"driving_offset_visible": true,
"source_visibility_unchanged": true,
"native_undo_redo_and_save_reopen": true,
"hidden_constraints_still_solve_source_and_distance_edits": true
},
{
"kind": "line",
"hidden_association_labels": 7,
"driving_offset_visible": true,
"source_visibility_unchanged": true,
"native_undo_redo_and_save_reopen": true,
"hidden_constraints_still_solve_source_and_distance_edits": true
},
{
"kind": "polygon",
"hidden_association_labels": 23,
"driving_offset_visible": true,
"source_visibility_unchanged": true,
"native_undo_redo_and_save_reopen": true,
"hidden_constraints_still_solve_source_and_distance_edits": true
}
]
},
{
"name": "Closed defining offset extrudes on XY XZ YZ in placed Part",
"passed": true,
"evidence": {
"annular_profile_extrudes_in_placed_part": {
"XY": 528.0,
"XZ": 528.0,
"YZ": 528.0
},
"construction_connectors_excluded": true
}
},
{
"name": "Invalid distance selection and collapse reject atomically",
"passed": true,
"evidence": {
"invalid_inputs_rejected_without_changes": 17
}
},
{
"name": "Unsupported topology rejects without copied fake geometry",
"passed": true,
"evidence": {
"unsupported_open_concave_branch_curve_topologies_rejected": 7
}
},
{
"name": "Real conflicting source constraints reject offset",
"passed": true,
"evidence": {
"real_native_solver_conflict_rejected_atomically": true
}
}
],
"summary": {
"total": 15,
"passed": 15,
"failed": 0
},
"gui_exercised": false
}
},
{
"name": "associative_sketch_patterns_suite",
"passed": true,
"result": {
"status": "passed",
"passed": 17,
"failed": 0,
"skipped": 0,
"checks": [
{
"name": "mirror_circle_native_association",
"passed": true,
"status": "passed",
"detail": {
"radius_and_position_associative": true,
"axis_edit": true
}
},
{
"name": "mirror_line_selected_moving_axis",
"passed": true,
"status": "passed",
"detail": {
"both_endpoints_linked": true,
"construction_axis_edit_associative": true
}
},
{
"name": "rectangular_circle_native_dimensions",
"passed": true,
"status": "passed",
"detail": {
"copies": 5,
"source_dimensions_and_pattern_parameters_associative": true,
"native_expressions": 11
}
},
{
"name": "rectangular_signed_steps_and_line_endpoints",
"passed": true,
"status": "passed",
"detail": {
"signed_steps": true,
"native_dimension_positive_to_negative": true,
"line_endpoints_linked": true
}
},
{
"name": "unconstrained_seed_association",
"passed": true,
"status": "passed",
"detail": {
"association_without_original_dimensions": true,
"drag_and_later_radius_constraint_propagate": true
}
},
{
"name": "circular_full_partial_negative_and_source_edit",
"passed": true,
"status": "passed",
"detail": {
"full_circle_distinct_occurrences": 4,
"negative_partial_angle": -179.99999999999997,
"source_changes_associative": true
}
},
{
"name": "circular_lines_and_native_step_edit",
"passed": true,
"status": "passed",
"detail": {
"line_orientation_rotates": true,
"native_step_angle_drives_every_point": true
}
},
{
"name": "counts_and_native_undo_redo",
"passed": true,
"status": "passed",
"detail": {
"create_is_one_undo_step": true,
"counts_editable": [
8,
6
],
"undo_redo_restores_geometry_and_registry": true
}
},
{
"name": "native_fcstd_save_reopen_all_patterns",
"passed": true,
"status": "passed",
"detail": {
"native_fcstd_reopened": [
"C:\\Repos\\qinventor\\artifacts\\validation\\mirror.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\rectangular.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\circular.FCStd"
],
"geometry_ids_constraints_expressions_and_association_persist": true
}
},
{
"name": "native_helper_visibility_persistence_association",
"passed": true,
"status": "passed",
"detail": {
"patterns": [
{
"kind": "mirror",
"native_hidden_helpers": 2,
"visible_master_dimensions": 0,
"source_visibility_unchanged": true,
"native_undo_redo_reopen_persist": true,
"hidden_constraints_still_active_and_associative": true
},
{
"kind": "rectangular",
"native_hidden_helpers": 11,
"visible_master_dimensions": 3,
"source_visibility_unchanged": true,
"native_undo_redo_reopen_persist": true,
"hidden_constraints_still_active_and_associative": true
},
{
"kind": "circular",
"native_hidden_helpers": 21,
"visible_master_dimensions": 3,
"source_visibility_unchanged": true,
"native_undo_redo_reopen_persist": true,
"hidden_constraints_still_active_and_associative": true
}
]
}
},
{
"name": "selection_parameters_unsupported_curves_atomic",
"passed": true,
"status": "passed",
"detail": {
"rejected_inputs": 14,
"russian_errors": true,
"no_geometry_constraint_metadata_or_undo_changes": true
}
},
{
"name": "count_dependencies_atomic_rejection",
"passed": true,
"status": "passed",
"detail": {
"reference_constraint_dependency_rejected": true,
"later_geometry_rejected_for_count_edit": true,
"spacing_still_editable": true
}
},
{
"name": "persistent_geometry_ids_after_renumbering",
"passed": true,
"status": "passed",
"detail": {
"native_persistent_geometry_ids_survive_index_renumbering": true
}
},
{
"name": "native_expression_bound_master_dimensions",
"passed": true,
"status": "passed",
"detail": {
"external_expression_not_silently_removed": true,
"bound_dimension_edits_rejected_atomically": true,
"other_parameters_remain_editable": true,
"external_dimension_update_still_associative": true
}
},
{
"name": "nested_preview_repeat_cancel_commit",
"passed": true,
"status": "passed",
"detail": {
"repeated_preview_registry_clean": true,
"cancel_restores_all_native_data": true,
"commit_is_exactly_one_undo_step": true
}
},
{
"name": "real_native_solver_conflict_atomic_rollback",
"passed": true,
"status": "passed",
"detail": {
"real_conflicting_constraint_injected_after_geometry_creation": true,
"transaction_restores_geometry_constraints_history": true
}
},
{
"name": "pattern_holes_real_partdesign_solid_reopen",
"passed": true,
"status": "passed",
"detail": {
"genuine_partdesign_pocket_solid": true,
"radius_and_count_regenerate_volume": true,
"reopened_volume_mm3": 57989.38070170254
}
}
],
"artifacts": [
"C:\\Repos\\qinventor\\artifacts\\validation\\mirror.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\rectangular.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\circular.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\mirror-hidden-helper-constraints.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\rectangular-hidden-helper-constraints.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\circular-hidden-helper-constraints.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\patterned-holes.FCStd"
],
"source": "C:\\Repos\\qinventor\\src\\QInventor\\qi_sketch_patterns.py",
"success": true
}
},
{
"name": "native_sketch_operations_dialog_suite",
"passed": true,
"result": {
"status": "passed",
"passed": 15,
"failed": 0,
"checks": [
{
"name": "mirror: repeated Qt preview replaces copies and Cancel restores sketch/history/dirty flag",
"passed": true,
"result": {
"initial_preview": {
"circle_count": 2,
"native_geometry_count": 2,
"constraint_count": 5,
"centers_and_radii_mm": [
[
-7.0,
4.0,
2.0
],
[
7.0,
4.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "mirror",
"parameters": {
"axis": "vertical"
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
2
],
"helper_geometry_ids": [],
"constraint_names": [
"Зеркало1Связь1",
"Зеркало1Связь2"
],
"dimension_names": {},
"associative": true,
"source_ids": [
0
],
"created_ids": [
1
],
"generated_ids": [
1
],
"helper_ids": [],
"all_geometry_ids": [
1
],
"constraint_ids": [
3,
4
]
}
],
"solver_result": 0
},
"revised_preview": {
"circle_count": 2,
"native_geometry_count": 2,
"constraint_count": 5,
"centers_and_radii_mm": [
[
7.0,
-4.0,
2.0
],
[
7.0,
4.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "mirror",
"parameters": {
"axis": "horizontal"
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
3
],
"helper_geometry_ids": [],
"constraint_names": [
"Зеркало1Связь1",
"Зеркало1Связь2"
],
"dimension_names": {},
"associative": true,
"source_ids": [
0
],
"created_ids": [
1
],
"generated_ids": [
1
],
"helper_ids": [],
"all_geometry_ids": [
1
],
"constraint_ids": [
3,
4
]
}
],
"solver_result": 0
},
"russian_dialog": {
"window_title": "Зеркальное отражение",
"visible_labels": [
"Выбрано элементов: 1",
"Связанное повторение отрезков и окружностей.",
"Ось отражения:"
],
"untranslated_candidates": [],
"rendered_dialog": "C:\\Repos\\qinventor\\artifacts\\validation\\sketch-mirror-russian-dialog.png"
},
"cancel_restored": true,
"undo_before": {
"undo_count": 0,
"redo_count": 0,
"undo_names": [],
"redo_names": []
},
"undo_after": {
"undo_count": 0,
"redo_count": 0,
"undo_names": [],
"redo_names": []
},
"modified_before": false,
"modified_after": false
}
},
{
"name": "mirror: Qt Create is one undo step; saved native association regenerates after reopen",
"passed": true,
"result": {
"preview": {
"circle_count": 2,
"native_geometry_count": 2,
"constraint_count": 5,
"centers_and_radii_mm": [
[
-7.0,
4.0,
2.0
],
[
7.0,
4.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "mirror",
"parameters": {
"axis": "vertical"
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
2
],
"helper_geometry_ids": [],
"constraint_names": [
"Зеркало1Связь1",
"Зеркало1Связь2"
],
"dimension_names": {},
"associative": true,
"source_ids": [
0
],
"created_ids": [
1
],
"generated_ids": [
1
],
"helper_ids": [],
"all_geometry_ids": [
1
],
"constraint_ids": [
3,
4
]
}
],
"solver_result": 0
},
"created": {
"circle_count": 2,
"native_geometry_count": 2,
"constraint_count": 5,
"centers_and_radii_mm": [
[
-7.0,
4.0,
2.0
],
[
7.0,
4.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "mirror",
"parameters": {
"axis": "vertical"
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
3
],
"helper_geometry_ids": [],
"constraint_names": [
"Зеркало1Связь1",
"Зеркало1Связь2"
],
"dimension_names": {},
"associative": true,
"source_ids": [
0
],
"created_ids": [
1
],
"generated_ids": [
1
],
"helper_ids": [],
"all_geometry_ids": [
1
],
"constraint_ids": [
3,
4
]
}
],
"solver_result": 0
},
"reopened": {
"circle_count": 2,
"native_geometry_count": 2,
"constraint_count": 5,
"centers_and_radii_mm": [
[
-7.0,
4.0,
2.0
],
[
7.0,
4.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "mirror",
"parameters": {
"axis": "vertical"
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
3
],
"helper_geometry_ids": [],
"constraint_names": [
"Зеркало1Связь1",
"Зеркало1Связь2"
],
"dimension_names": {},
"associative": true,
"source_ids": [
0
],
"created_ids": [
1
],
"generated_ids": [
1
],
"helper_ids": [],
"all_geometry_ids": [
1
],
"constraint_ids": [
3,
4
]
}
],
"solver_result": 0
},
"source_driving_radius_mm": 3,
"regenerated_after_reopen": {
"circle_count": 2,
"native_geometry_count": 2,
"constraint_count": 5,
"centers_and_radii_mm": [
[
-7.0,
4.0,
3.0
],
[
7.0,
4.0,
3.0
]
],
"metadata": [
{
"id": "p1",
"kind": "mirror",
"parameters": {
"axis": "vertical"
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
3
],
"helper_geometry_ids": [],
"constraint_names": [
"Зеркало1Связь1",
"Зеркало1Связь2"
],
"dimension_names": {},
"associative": true,
"source_ids": [
0
],
"created_ids": [
1
],
"generated_ids": [
1
],
"helper_ids": [],
"all_geometry_ids": [
1
],
"constraint_ids": [
3,
4
]
}
],
"solver_result": 0
},
"saved_file": "C:\\Repos\\qinventor\\artifacts\\validation\\sketch-operation-mirror-created.FCStd",
"single_undo_step": true,
"modified_after_create": true
}
},
{
"name": "rectangular: repeated Qt preview replaces copies and Cancel restores sketch/history/dirty flag",
"passed": true,
"result": {
"initial_preview": {
"circle_count": 6,
"native_geometry_count": 8,
"constraint_count": 23,
"centers_and_radii_mm": [
[
7.0,
4.0,
2.0
],
[
7.0,
19.0,
2.0
],
[
19.0,
4.0,
2.0
],
[
19.0,
19.0,
2.0
],
[
31.0,
4.0,
2.0
],
[
31.0,
19.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "rectangular",
"parameters": {
"count_x": 3,
"count_y": 2,
"spacing_x": 12.0,
"spacing_y": 15.0,
"angle": 0.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
4,
5,
6,
7,
8
],
"helper_geometry_ids": [
2,
3
],
"constraint_names": [
"Массив1Связь1",
"Массив1Связь2",
"Массив1Направление",
"Массив1ШагX",
"Массив1ШагY",
"Массив1Связь6",
"Массив1Связь7",
"Массив1Связь8",
"Массив1Связь9",
"Массив1Связь10",
"Массив1Связь11",
"Массив1Связь12",
"Массив1Связь13",
"Массив1Связь14",
"Массив1Связь15",
"Массив1Связь16",
"Массив1Связь17",
"Массив1Связь18",
"Массив1Связь19",
"Массив1Связь20"
],
"dimension_names": {
"Направление": "Массив1Направление",
"ШагX": "Массив1ШагX",
"ШагY": "Массив1ШагY"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
4,
5,
6,
7
],
"generated_ids": [
3,
4,
5,
6,
7
],
"helper_ids": [
1,
2
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22
]
}
],
"solver_result": 0
},
"revised_preview": {
"circle_count": 8,
"native_geometry_count": 10,
"constraint_count": 29,
"centers_and_radii_mm": [
[
7.0,
4.0,
2.0
],
[
7.0,
19.0,
2.0
],
[
19.0,
4.0,
2.0
],
[
19.0,
19.0,
2.0
],
[
31.0,
4.0,
2.0
],
[
31.0,
19.0,
2.0
],
[
43.0,
4.0,
2.0
],
[
43.0,
19.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "rectangular",
"parameters": {
"count_x": 4,
"count_y": 2,
"spacing_x": 12.0,
"spacing_y": 15.0,
"angle": 0.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
11,
12,
13,
14,
15,
16,
17
],
"helper_geometry_ids": [
9,
10
],
"constraint_names": [
"Массив1Связь1",
"Массив1Связь2",
"Массив1Направление",
"Массив1ШагX",
"Массив1ШагY",
"Массив1Связь6",
"Массив1Связь7",
"Массив1Связь8",
"Массив1Связь9",
"Массив1Связь10",
"Массив1Связь11",
"Массив1Связь12",
"Массив1Связь13",
"Массив1Связь14",
"Массив1Связь15",
"Массив1Связь16",
"Массив1Связь17",
"Массив1Связь18",
"Массив1Связь19",
"Массив1Связь20",
"Массив1Связь21",
"Массив1Связь22",
"Массив1Связь23",
"Массив1Связь24",
"Массив1Связь25",
"Массив1Связь26"
],
"dimension_names": {
"Направление": "Массив1Направление",
"ШагX": "Массив1ШагX",
"ШагY": "Массив1ШагY"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
4,
5,
6,
7,
8,
9
],
"generated_ids": [
3,
4,
5,
6,
7,
8,
9
],
"helper_ids": [
1,
2
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28
]
}
],
"solver_result": 0
},
"russian_dialog": {
"window_title": "Прямоугольный массив",
"visible_labels": [
"Выбрано элементов: 1",
"Связанное повторение отрезков и окружностей.",
"Количество в направлении 1:",
"Шаг в направлении 1:",
"Количество в направлении 2:",
"Шаг в направлении 2:",
"Угол направления 1:",
"Количество включает исходную геометрию. Направление 2 перпендикулярно направлению 1. Отрицательный шаг меняет сторону."
],
"untranslated_candidates": [],
"rendered_dialog": "C:\\Repos\\qinventor\\artifacts\\validation\\sketch-rectangular-russian-dialog.png"
},
"cancel_restored": true,
"undo_before": {
"undo_count": 0,
"redo_count": 0,
"undo_names": [],
"redo_names": []
},
"undo_after": {
"undo_count": 0,
"redo_count": 0,
"undo_names": [],
"redo_names": []
},
"modified_before": false,
"modified_after": false
}
},
{
"name": "rectangular: Qt Create is one undo step; saved native association regenerates after reopen",
"passed": true,
"result": {
"preview": {
"circle_count": 6,
"native_geometry_count": 8,
"constraint_count": 23,
"centers_and_radii_mm": [
[
7.0,
4.0,
2.0
],
[
7.0,
19.0,
2.0
],
[
19.0,
4.0,
2.0
],
[
19.0,
19.0,
2.0
],
[
31.0,
4.0,
2.0
],
[
31.0,
19.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "rectangular",
"parameters": {
"count_x": 3,
"count_y": 2,
"spacing_x": 12.0,
"spacing_y": 15.0,
"angle": 0.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
4,
5,
6,
7,
8
],
"helper_geometry_ids": [
2,
3
],
"constraint_names": [
"Массив1Связь1",
"Массив1Связь2",
"Массив1Направление",
"Массив1ШагX",
"Массив1ШагY",
"Массив1Связь6",
"Массив1Связь7",
"Массив1Связь8",
"Массив1Связь9",
"Массив1Связь10",
"Массив1Связь11",
"Массив1Связь12",
"Массив1Связь13",
"Массив1Связь14",
"Массив1Связь15",
"Массив1Связь16",
"Массив1Связь17",
"Массив1Связь18",
"Массив1Связь19",
"Массив1Связь20"
],
"dimension_names": {
"Направление": "Массив1Направление",
"ШагX": "Массив1ШагX",
"ШагY": "Массив1ШагY"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
4,
5,
6,
7
],
"generated_ids": [
3,
4,
5,
6,
7
],
"helper_ids": [
1,
2
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22
]
}
],
"solver_result": 0
},
"created": {
"circle_count": 6,
"native_geometry_count": 8,
"constraint_count": 23,
"centers_and_radii_mm": [
[
7.0,
4.0,
2.0
],
[
7.0,
19.0,
2.0
],
[
19.0,
4.0,
2.0
],
[
19.0,
19.0,
2.0
],
[
31.0,
4.0,
2.0
],
[
31.0,
19.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "rectangular",
"parameters": {
"count_x": 3,
"count_y": 2,
"spacing_x": 12.0,
"spacing_y": 15.0,
"angle": 0.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
11,
12,
13,
14,
15
],
"helper_geometry_ids": [
9,
10
],
"constraint_names": [
"Массив1Связь1",
"Массив1Связь2",
"Массив1Направление",
"Массив1ШагX",
"Массив1ШагY",
"Массив1Связь6",
"Массив1Связь7",
"Массив1Связь8",
"Массив1Связь9",
"Массив1Связь10",
"Массив1Связь11",
"Массив1Связь12",
"Массив1Связь13",
"Массив1Связь14",
"Массив1Связь15",
"Массив1Связь16",
"Массив1Связь17",
"Массив1Связь18",
"Массив1Связь19",
"Массив1Связь20"
],
"dimension_names": {
"Направление": "Массив1Направление",
"ШагX": "Массив1ШагX",
"ШагY": "Массив1ШагY"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
4,
5,
6,
7
],
"generated_ids": [
3,
4,
5,
6,
7
],
"helper_ids": [
1,
2
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22
]
}
],
"solver_result": 0
},
"reopened": {
"circle_count": 6,
"native_geometry_count": 8,
"constraint_count": 23,
"centers_and_radii_mm": [
[
7.0,
4.0,
2.0
],
[
7.0,
19.0,
2.0
],
[
19.0,
4.0,
2.0
],
[
19.0,
19.0,
2.0
],
[
31.0,
4.0,
2.0
],
[
31.0,
19.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "rectangular",
"parameters": {
"count_x": 3,
"count_y": 2,
"spacing_x": 12.0,
"spacing_y": 15.0,
"angle": 0.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
11,
12,
13,
14,
15
],
"helper_geometry_ids": [
9,
10
],
"constraint_names": [
"Массив1Связь1",
"Массив1Связь2",
"Массив1Направление",
"Массив1ШагX",
"Массив1ШагY",
"Массив1Связь6",
"Массив1Связь7",
"Массив1Связь8",
"Массив1Связь9",
"Массив1Связь10",
"Массив1Связь11",
"Массив1Связь12",
"Массив1Связь13",
"Массив1Связь14",
"Массив1Связь15",
"Массив1Связь16",
"Массив1Связь17",
"Массив1Связь18",
"Массив1Связь19",
"Массив1Связь20"
],
"dimension_names": {
"Направление": "Массив1Направление",
"ШагX": "Массив1ШагX",
"ШагY": "Массив1ШагY"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
4,
5,
6,
7
],
"generated_ids": [
3,
4,
5,
6,
7
],
"helper_ids": [
1,
2
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22
]
}
],
"solver_result": 0
},
"source_driving_radius_mm": 3,
"regenerated_after_reopen": {
"circle_count": 6,
"native_geometry_count": 8,
"constraint_count": 23,
"centers_and_radii_mm": [
[
7.0,
4.0,
3.0
],
[
7.0,
19.0,
3.0
],
[
19.0,
4.0,
3.0
],
[
19.0,
19.0,
3.0
],
[
31.0,
4.0,
3.0
],
[
31.0,
19.0,
3.0
]
],
"metadata": [
{
"id": "p1",
"kind": "rectangular",
"parameters": {
"count_x": 3,
"count_y": 2,
"spacing_x": 12.0,
"spacing_y": 15.0,
"angle": 0.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
11,
12,
13,
14,
15
],
"helper_geometry_ids": [
9,
10
],
"constraint_names": [
"Массив1Связь1",
"Массив1Связь2",
"Массив1Направление",
"Массив1ШагX",
"Массив1ШагY",
"Массив1Связь6",
"Массив1Связь7",
"Массив1Связь8",
"Массив1Связь9",
"Массив1Связь10",
"Массив1Связь11",
"Массив1Связь12",
"Массив1Связь13",
"Массив1Связь14",
"Массив1Связь15",
"Массив1Связь16",
"Массив1Связь17",
"Массив1Связь18",
"Массив1Связь19",
"Массив1Связь20"
],
"dimension_names": {
"Направление": "Массив1Направление",
"ШагX": "Массив1ШагX",
"ШагY": "Массив1ШагY"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
4,
5,
6,
7
],
"generated_ids": [
3,
4,
5,
6,
7
],
"helper_ids": [
1,
2
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22
]
}
],
"solver_result": 0
},
"saved_file": "C:\\Repos\\qinventor\\artifacts\\validation\\sketch-operation-rectangular-created.FCStd",
"single_undo_step": true,
"modified_after_create": true
}
},
{
"name": "circular: repeated Qt preview replaces copies and Cancel restores sketch/history/dirty flag",
"passed": true,
"result": {
"initial_preview": {
"circle_count": 4,
"native_geometry_count": 9,
"constraint_count": 22,
"centers_and_radii_mm": [
[
-7.0,
-4.0,
2.0
],
[
-4.0,
7.0,
2.0
],
[
4.0,
-7.0,
2.0
],
[
7.0,
4.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "circular",
"parameters": {
"count": 4,
"center": [
0.0,
0.0
],
"angle": 360.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
4,
6,
8
],
"helper_geometry_ids": [
2,
3,
5,
7,
9
],
"constraint_names": [
"КруговойМассив1ЦентрX",
"КруговойМассив1ЦентрY",
"КруговойМассив1Связь3",
"КруговойМассив1Связь4",
"КруговойМассив1Связь5",
"КруговойМассив1Связь6",
"КруговойМассив1Связь7",
"КруговойМассив1Связь8",
"КруговойМассив1УголШага",
"КруговойМассив1Связь10",
"КруговойМассив1Связь11",
"КруговойМассив1Связь12",
"КруговойМассив1Связь13",
"КруговойМассив1Связь14",
"КруговойМассив1Связь15",
"КруговойМассив1Связь16",
"КруговойМассив1Связь17",
"КруговойМассив1Связь18",
"КруговойМассив1Связь19"
],
"dimension_names": {
"ЦентрX": "КруговойМассив1ЦентрX",
"ЦентрY": "КруговойМассив1ЦентрY",
"УголШага": "КруговойМассив1УголШага"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
5,
7
],
"generated_ids": [
3,
5,
7
],
"helper_ids": [
1,
2,
4,
6,
8
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7,
8
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
]
}
],
"solver_result": 0
},
"revised_preview": {
"circle_count": 6,
"native_geometry_count": 13,
"constraint_count": 32,
"centers_and_radii_mm": [
[
-8.01426,
0.878429,
2.0
],
[
-7.0,
-4.0,
2.0
],
[
-5.967345,
5.421328,
2.0
],
[
-1.641107,
7.893464,
2.0
],
[
3.311978,
7.350565,
2.0
],
[
7.0,
4.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "circular",
"parameters": {
"count": 6,
"center": [
0.0,
0.0
],
"angle": 180.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
12,
14,
16,
18,
20
],
"helper_geometry_ids": [
10,
11,
13,
15,
17,
19,
21
],
"constraint_names": [
"КруговойМассив1ЦентрX",
"КруговойМассив1ЦентрY",
"КруговойМассив1Связь3",
"КруговойМассив1Связь4",
"КруговойМассив1Связь5",
"КруговойМассив1Связь6",
"КруговойМассив1Связь7",
"КруговойМассив1Связь8",
"КруговойМассив1УголШага",
"КруговойМассив1Связь10",
"КруговойМассив1Связь11",
"КруговойМассив1Связь12",
"КруговойМассив1Связь13",
"КруговойМассив1Связь14",
"КруговойМассив1Связь15",
"КруговойМассив1Связь16",
"КруговойМассив1Связь17",
"КруговойМассив1Связь18",
"КруговойМассив1Связь19",
"КруговойМассив1Связь20",
"КруговойМассив1Связь21",
"КруговойМассив1Связь22",
"КруговойМассив1Связь23",
"КруговойМассив1Связь24",
"КруговойМассив1Связь25",
"КруговойМассив1Связь26",
"КруговойМассив1Связь27",
"КруговойМассив1Связь28",
"КруговойМассив1Связь29"
],
"dimension_names": {
"ЦентрX": "КруговойМассив1ЦентрX",
"ЦентрY": "КруговойМассив1ЦентрY",
"УголШага": "КруговойМассив1УголШага"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
5,
7,
9,
11
],
"generated_ids": [
3,
5,
7,
9,
11
],
"helper_ids": [
1,
2,
4,
6,
8,
10,
12
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
]
}
],
"solver_result": 0
},
"russian_dialog": {
"window_title": "Круговой массив",
"visible_labels": [
"Выбрано элементов: 1",
"Связанное повторение отрезков и окружностей.",
"Количество элементов:",
"Центр — X:",
"Центр — Y:",
"Общий угол:",
"Количество включает исходную геометрию. При 360° копии распределяются по всей окружности; при другом угле — между концами сектора."
],
"untranslated_candidates": [],
"rendered_dialog": "C:\\Repos\\qinventor\\artifacts\\validation\\sketch-circular-russian-dialog.png"
},
"cancel_restored": true,
"undo_before": {
"undo_count": 0,
"redo_count": 0,
"undo_names": [],
"redo_names": []
},
"undo_after": {
"undo_count": 0,
"redo_count": 0,
"undo_names": [],
"redo_names": []
},
"modified_before": false,
"modified_after": false
}
},
{
"name": "circular: Qt Create is one undo step; saved native association regenerates after reopen",
"passed": true,
"result": {
"preview": {
"circle_count": 4,
"native_geometry_count": 9,
"constraint_count": 22,
"centers_and_radii_mm": [
[
-7.0,
-4.0,
2.0
],
[
-4.0,
7.0,
2.0
],
[
4.0,
-7.0,
2.0
],
[
7.0,
4.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "circular",
"parameters": {
"count": 4,
"center": [
0.0,
0.0
],
"angle": 360.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
4,
6,
8
],
"helper_geometry_ids": [
2,
3,
5,
7,
9
],
"constraint_names": [
"КруговойМассив1ЦентрX",
"КруговойМассив1ЦентрY",
"КруговойМассив1Связь3",
"КруговойМассив1Связь4",
"КруговойМассив1Связь5",
"КруговойМассив1Связь6",
"КруговойМассив1Связь7",
"КруговойМассив1Связь8",
"КруговойМассив1УголШага",
"КруговойМассив1Связь10",
"КруговойМассив1Связь11",
"КруговойМассив1Связь12",
"КруговойМассив1Связь13",
"КруговойМассив1Связь14",
"КруговойМассив1Связь15",
"КруговойМассив1Связь16",
"КруговойМассив1Связь17",
"КруговойМассив1Связь18",
"КруговойМассив1Связь19"
],
"dimension_names": {
"ЦентрX": "КруговойМассив1ЦентрX",
"ЦентрY": "КруговойМассив1ЦентрY",
"УголШага": "КруговойМассив1УголШага"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
5,
7
],
"generated_ids": [
3,
5,
7
],
"helper_ids": [
1,
2,
4,
6,
8
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7,
8
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
]
}
],
"solver_result": 0
},
"created": {
"circle_count": 4,
"native_geometry_count": 9,
"constraint_count": 22,
"centers_and_radii_mm": [
[
-7.0,
-4.0,
2.0
],
[
-4.0,
7.0,
2.0
],
[
4.0,
-7.0,
2.0
],
[
7.0,
4.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "circular",
"parameters": {
"count": 4,
"center": [
0.0,
0.0
],
"angle": 360.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
12,
14,
16
],
"helper_geometry_ids": [
10,
11,
13,
15,
17
],
"constraint_names": [
"КруговойМассив1ЦентрX",
"КруговойМассив1ЦентрY",
"КруговойМассив1Связь3",
"КруговойМассив1Связь4",
"КруговойМассив1Связь5",
"КруговойМассив1Связь6",
"КруговойМассив1Связь7",
"КруговойМассив1Связь8",
"КруговойМассив1УголШага",
"КруговойМассив1Связь10",
"КруговойМассив1Связь11",
"КруговойМассив1Связь12",
"КруговойМассив1Связь13",
"КруговойМассив1Связь14",
"КруговойМассив1Связь15",
"КруговойМассив1Связь16",
"КруговойМассив1Связь17",
"КруговойМассив1Связь18",
"КруговойМассив1Связь19"
],
"dimension_names": {
"ЦентрX": "КруговойМассив1ЦентрX",
"ЦентрY": "КруговойМассив1ЦентрY",
"УголШага": "КруговойМассив1УголШага"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
5,
7
],
"generated_ids": [
3,
5,
7
],
"helper_ids": [
1,
2,
4,
6,
8
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7,
8
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
]
}
],
"solver_result": 0
},
"reopened": {
"circle_count": 4,
"native_geometry_count": 9,
"constraint_count": 22,
"centers_and_radii_mm": [
[
-7.0,
-4.0,
2.0
],
[
-4.0,
7.0,
2.0
],
[
4.0,
-7.0,
2.0
],
[
7.0,
4.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "circular",
"parameters": {
"count": 4,
"center": [
0.0,
0.0
],
"angle": 360.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
12,
14,
16
],
"helper_geometry_ids": [
10,
11,
13,
15,
17
],
"constraint_names": [
"КруговойМассив1ЦентрX",
"КруговойМассив1ЦентрY",
"КруговойМассив1Связь3",
"КруговойМассив1Связь4",
"КруговойМассив1Связь5",
"КруговойМассив1Связь6",
"КруговойМассив1Связь7",
"КруговойМассив1Связь8",
"КруговойМассив1УголШага",
"КруговойМассив1Связь10",
"КруговойМассив1Связь11",
"КруговойМассив1Связь12",
"КруговойМассив1Связь13",
"КруговойМассив1Связь14",
"КруговойМассив1Связь15",
"КруговойМассив1Связь16",
"КруговойМассив1Связь17",
"КруговойМассив1Связь18",
"КруговойМассив1Связь19"
],
"dimension_names": {
"ЦентрX": "КруговойМассив1ЦентрX",
"ЦентрY": "КруговойМассив1ЦентрY",
"УголШага": "КруговойМассив1УголШага"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
5,
7
],
"generated_ids": [
3,
5,
7
],
"helper_ids": [
1,
2,
4,
6,
8
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7,
8
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
]
}
],
"solver_result": 0
},
"source_driving_radius_mm": 3,
"regenerated_after_reopen": {
"circle_count": 4,
"native_geometry_count": 9,
"constraint_count": 22,
"centers_and_radii_mm": [
[
-7.0,
-4.0,
3.0
],
[
-4.0,
7.0,
3.0
],
[
4.0,
-7.0,
3.0
],
[
7.0,
4.0,
3.0
]
],
"metadata": [
{
"id": "p1",
"kind": "circular",
"parameters": {
"count": 4,
"center": [
0.0,
0.0
],
"angle": 360.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
12,
14,
16
],
"helper_geometry_ids": [
10,
11,
13,
15,
17
],
"constraint_names": [
"КруговойМассив1ЦентрX",
"КруговойМассив1ЦентрY",
"КруговойМассив1Связь3",
"КруговойМассив1Связь4",
"КруговойМассив1Связь5",
"КруговойМассив1Связь6",
"КруговойМассив1Связь7",
"КруговойМассив1Связь8",
"КруговойМассив1УголШага",
"КруговойМассив1Связь10",
"КруговойМассив1Связь11",
"КруговойМассив1Связь12",
"КруговойМассив1Связь13",
"КруговойМассив1Связь14",
"КруговойМассив1Связь15",
"КруговойМассив1Связь16",
"КруговойМассив1Связь17",
"КруговойМассив1Связь18",
"КруговойМассив1Связь19"
],
"dimension_names": {
"ЦентрX": "КруговойМассив1ЦентрX",
"ЦентрY": "КруговойМассив1ЦентрY",
"УголШага": "КруговойМассив1УголШага"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
5,
7
],
"generated_ids": [
3,
5,
7
],
"helper_ids": [
1,
2,
4,
6,
8
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7,
8
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
]
}
],
"solver_result": 0
},
"saved_file": "C:\\Repos\\qinventor\\artifacts\\validation\\sketch-operation-circular-created.FCStd",
"single_undo_step": true,
"modified_after_create": true
}
},
{
"name": "Offset: repeated circle preview replaces geometry; Cancel restores constraints/history/dirty flag",
"passed": true,
"result": {
"initial_preview": {
"circle_count": 2,
"centers_and_radii_mm": [
[
7.0,
4.0,
2.0
],
[
7.0,
4.0,
4.0
]
],
"constraint_types": [
"DistanceX",
"DistanceY",
"Radius",
"Coincident",
"Distance"
],
"solver_result": 0
},
"revised_preview": {
"circle_count": 2,
"centers_and_radii_mm": [
[
7.0,
4.0,
2.0
],
[
7.0,
4.0,
6.0
]
],
"constraint_types": [
"DistanceX",
"DistanceY",
"Radius",
"Coincident",
"Distance"
],
"solver_result": 0
},
"russian_dialog": {
"window_title": "Смещение геометрии",
"visible_labels": [
"Выбрано элементов: 1",
"Расстояние смещения:",
"Поддерживаются окружность, отдельный отрезок и выпуклый замкнутый контур из отрезков. Положительное расстояние расширяет окружность и контур. Для отдельного отрезка оно задаёт левую сторону по направлению от начала к концу; отрицательное — противоположную."
],
"untranslated_candidates": [],
"rendered_dialog": "C:\\Repos\\qinventor\\artifacts\\validation\\sketch-offset-russian-dialog.png"
},
"cancel_restored": true,
"undo_before": {
"undo_count": 0,
"redo_count": 0,
"undo_names": [],
"redo_names": []
},
"undo_after": {
"undo_count": 0,
"redo_count": 0,
"undo_names": [],
"redo_names": []
}
}
},
{
"name": "Offset: Qt Create saves native distance association; source radius regenerates after reopen",
"passed": true,
"result": {
"preview": {
"circle_count": 2,
"centers_and_radii_mm": [
[
7.0,
4.0,
2.0
],
[
7.0,
4.0,
4.0
]
],
"constraint_types": [
"DistanceX",
"DistanceY",
"Radius",
"Coincident",
"Distance"
],
"solver_result": 0
},
"created": {
"circle_count": 2,
"centers_and_radii_mm": [
[
7.0,
4.0,
2.0
],
[
7.0,
4.0,
4.0
]
],
"constraint_types": [
"DistanceX",
"DistanceY",
"Radius",
"Coincident",
"Distance"
],
"solver_result": 0
},
"reopened": {
"circle_count": 2,
"centers_and_radii_mm": [
[
7.0,
4.0,
2.0
],
[
7.0,
4.0,
4.0
]
],
"constraint_types": [
"DistanceX",
"DistanceY",
"Radius",
"Coincident",
"Distance"
],
"solver_result": 0
},
"regenerated_after_reopen": {
"circle_count": 2,
"centers_and_radii_mm": [
[
7.0,
4.0,
3.0
],
[
7.0,
4.0,
5.0
]
],
"constraint_types": [
"DistanceX",
"DistanceY",
"Radius",
"Coincident",
"Distance"
],
"solver_result": 0
},
"saved_file": "C:\\Repos\\qinventor\\artifacts\\validation\\sketch-operation-offset-created.FCStd",
"single_undo_step": true,
"modified_after_create": true
}
},
{
"name": "Invalid repeated preview shows a Russian error and rolls back geometry/history",
"passed": true,
"result": {
"russian_error": "Шаг прямоугольного массива должен быть ненулевым. Для обратного направления задайте отрицательный шаг.",
"rollback_restored": true,
"modified_before": false,
"modified_after_error": false
}
},
{
"name": "Qt Edit Pattern preserves association ID; cancel and undo restore previous pattern",
"passed": true,
"result": {
"cancelled_edit_preview": {
"circle_count": 8,
"native_geometry_count": 10,
"constraint_count": 29,
"centers_and_radii_mm": [
[
7.0,
4.0,
2.0
],
[
7.0,
19.0,
2.0
],
[
19.0,
4.0,
2.0
],
[
19.0,
19.0,
2.0
],
[
31.0,
4.0,
2.0
],
[
31.0,
19.0,
2.0
],
[
43.0,
4.0,
2.0
],
[
43.0,
19.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "rectangular",
"parameters": {
"count_x": 4,
"count_y": 2,
"spacing_x": 12.0,
"spacing_y": 15.0,
"angle": 0.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
11,
12,
13,
14,
15,
16,
17
],
"helper_geometry_ids": [
9,
10
],
"constraint_names": [
"Массив1Связь1",
"Массив1Связь2",
"Массив1Направление",
"Массив1ШагX",
"Массив1ШагY",
"Массив1Связь6",
"Массив1Связь7",
"Массив1Связь8",
"Массив1Связь9",
"Массив1Связь10",
"Массив1Связь11",
"Массив1Связь12",
"Массив1Связь13",
"Массив1Связь14",
"Массив1Связь15",
"Массив1Связь16",
"Массив1Связь17",
"Массив1Связь18",
"Массив1Связь19",
"Массив1Связь20",
"Массив1Связь21",
"Массив1Связь22",
"Массив1Связь23",
"Массив1Связь24",
"Массив1Связь25",
"Массив1Связь26"
],
"dimension_names": {
"Направление": "Массив1Направление",
"ШагX": "Массив1ШагX",
"ШагY": "Массив1ШагY"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
4,
5,
6,
7,
8,
9
],
"generated_ids": [
3,
4,
5,
6,
7,
8,
9
],
"helper_ids": [
1,
2
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28
]
}
],
"solver_result": 0
},
"committed_edit": {
"circle_count": 8,
"native_geometry_count": 10,
"constraint_count": 29,
"centers_and_radii_mm": [
[
7.0,
4.0,
2.0
],
[
7.0,
19.0,
2.0
],
[
19.0,
4.0,
2.0
],
[
19.0,
19.0,
2.0
],
[
31.0,
4.0,
2.0
],
[
31.0,
19.0,
2.0
],
[
43.0,
4.0,
2.0
],
[
43.0,
19.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "rectangular",
"parameters": {
"count_x": 4,
"count_y": 2,
"spacing_x": 12.0,
"spacing_y": 15.0,
"angle": 0.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
20,
21,
22,
23,
24,
25,
26
],
"helper_geometry_ids": [
18,
19
],
"constraint_names": [
"Массив1Связь1",
"Массив1Связь2",
"Массив1Направление",
"Массив1ШагX",
"Массив1ШагY",
"Массив1Связь6",
"Массив1Связь7",
"Массив1Связь8",
"Массив1Связь9",
"Массив1Связь10",
"Массив1Связь11",
"Массив1Связь12",
"Массив1Связь13",
"Массив1Связь14",
"Массив1Связь15",
"Массив1Связь16",
"Массив1Связь17",
"Массив1Связь18",
"Массив1Связь19",
"Массив1Связь20",
"Массив1Связь21",
"Массив1Связь22",
"Массив1Связь23",
"Массив1Связь24",
"Массив1Связь25",
"Массив1Связь26"
],
"dimension_names": {
"Направление": "Массив1Направление",
"ШагX": "Массив1ШагX",
"ШагY": "Массив1ШагY"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
4,
5,
6,
7,
8,
9
],
"generated_ids": [
3,
4,
5,
6,
7,
8,
9
],
"helper_ids": [
1,
2
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28
]
}
],
"solver_result": 0
},
"pattern_id_preserved": "p1",
"cancel_and_undo_restored": true
}
},
{
"name": "Detached native preview preserves existing Redo; cancel removes overlay and Ctrl+Y restores source radius",
"passed": true,
"result": {
"preview": {
"circle_count": 2,
"native_geometry_count": 2,
"constraint_count": 5,
"centers_and_radii_mm": [
[
-7.0,
4.0,
5.0
],
[
7.0,
4.0,
5.0
]
],
"metadata": [
{
"id": "p1",
"kind": "mirror",
"parameters": {
"axis": "vertical"
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
2
],
"helper_geometry_ids": [],
"constraint_names": [
"Зеркало1Связь1",
"Зеркало1Связь2"
],
"dimension_names": {},
"associative": true,
"source_ids": [
0
],
"created_ids": [
1
],
"generated_ids": [
1
],
"helper_ids": [],
"all_geometry_ids": [
1
],
"constraint_ids": [
3,
4
]
}
],
"solver_result": 0
},
"temporary_document": "QIPreviewa4747a12e1df496db7ef15a278aadcae",
"temporary_document_removed": true,
"overlay_removed": true,
"source_global_placement": "Placement [Pos=(35.9826,-11.9001,17), Yaw-Pitch-Roll=(25,20,0)]",
"native_edit_transform": "Matrix ((1,0,0,0),(0,1,0,0),(0,0,1,0),(0,0,0,1))",
"model_global_mirror_center_mm": [
28.33057928663428,
-11.054818230587575,
19.39414100327968
],
"overlay_world_center_mm": [
-7.0,
4.0,
0.0
],
"overlay_sample_count": 128,
"maximum_radius_error_mm": 5.766050561462066E-07,
"maximum_plane_error_mm": 0.0,
"history_before": {
"undo_count": 1,
"redo_count": 1,
"undo_names": [
"Радиус исходной окружности — 5 мм"
],
"redo_names": [
"Радиус исходной окружности — 6 мм"
]
},
"history_after_redo": {
"undo_count": 2,
"redo_count": 0,
"undo_names": [
"Радиус исходной окружности — 6 мм",
"Радиус исходной окружности — 5 мм"
],
"redo_names": []
},
"modified_before": true,
"radius_after_native_redo_mm": 6.0,
"redo_delivery": "native Std_Redo keyboard shortcut Ctrl+Y",
"native_shortcuts": [
"Ctrl+Y"
]
}
},
{
"name": "Detached offset retains placed SubShapeBinder context; cancel preserves Redo and native Ctrl+Y updates projection",
"passed": true,
"result": {
"original_local_endpoints_mm": [
[
8.365163037378078,
7.417819582470548,
0.0
],
[
5.776972586352871,
17.07707784536123,
0.0
]
],
"original_external_endpoints_mm": [
[
8.365163037378078,
7.417819582470548,
0.0
],
[
5.776972586352871,
17.07707784536123,
0.0
]
],
"shadow_before_native_operation": {
"local": [
[
8.365163037378078,
7.417819582470548,
0.0
],
[
5.776972586352871,
17.07707784536123,
0.0
]
],
"external": [
[
8.365163037378078,
7.417819582470548,
0.0
],
[
5.776972586352871,
17.07707784536123,
0.0
]
],
"geometry_count": 1,
"context_objects": [
"X_Axis",
"Y_Axis",
"Z_Axis",
"XY_Plane",
"XZ_Plane",
"YZ_Plane",
"Origin001",
"Origin",
"SourceBox",
"SourceComponent",
"X_Axis001",
"Y_Axis001",
"Z_Axis001",
"XY_Plane001",
"XZ_Plane001",
"YZ_Plane001",
"Origin003",
"Origin002",
"X_Axis002",
"Y_Axis002",
"Z_Axis002",
"XY_Plane002",
"XZ_Plane002",
"YZ_Plane002",
"Origin005",
"Origin004",
"Binder",
"Sketch",
"Body",
"SketchComponent"
]
},
"expected_offset_local_endpoints_mm": [
[
6.433311384799942,
6.9001814922655065,
0.0
],
[
3.8451209337747345,
16.55943975515619,
0.0
]
],
"actual_offset_local_endpoints_mm": [
[
6.433311384799942,
6.9001814922655065,
0.0
],
[
3.8451209337747345,
16.55943975515619,
0.0
]
],
"expected_offset_world_endpoints_mm": [
[
-2.0000000000000018,
-1.7763568394002505E-15,
0.0
],
[
-2.0,
10.0,
0.0
]
],
"expected_native_edit_endpoints_mm": [
[
6.433311384799942,
6.9001814922655065,
0.0
],
[
3.8451209337747345,
16.55943975515619,
0.0
]
],
"actual_overlay_native_edit_endpoints_mm": [
[
6.433311462402344,
6.900181293487549,
0.0
],
[
3.845120906829834,
16.55944061279297,
0.0
]
],
"maximum_overlay_endpoint_error_mm": 8.580599454290849E-07,
"detached_framebuffer": "C:\\Repos\\qinventor\\artifacts\\validation\\sketch-linked-binder-detached-framebuffer.png",
"overlay_midpoint_pixel": [
597,
322
],
"orange_pixels_at_expected_offset_midpoint": [
{
"position": [
594,
317
],
"rgb": [
245,
120,
26
]
},
{
"position": [
595,
317
],
"rgb": [
245,
120,
26
]
},
{
"position": [
596,
317
],
"rgb": [
245,
120,
26
]
},
{
"position": [
594,
318
],
"rgb": [
245,
120,
26
]
},
{
"position": [
595,
318
],
"rgb": [
245,
120,
26
]
},
{
"position": [
596,
318
],
"rgb": [
245,
120,
26
]
},
{
"position": [
594,
319
],
"rgb": [
245,
120,
26
]
},
{
"position": [
595,
319
],
"rgb": [
245,
120,
26
]
},
{
"position": [
596,
319
],
"rgb": [
245,
120,
26
]
},
{
"position": [
595,
320
],
"rgb": [
245,
120,
26
]
},
{
"position": [
596,
320
],
"rgb": [
245,
120,
26
]
},
{
"position": [
597,
320
],
"rgb": [
245,
120,
26
]
},
{
"position": [
595,
321
],
"rgb": [
245,
120,
26
]
},
{
"position": [
596,
321
],
"rgb": [
245,
120,
26
]
},
{
"position": [
597,
321
],
"rgb": [
245,
120,
26
]
},
{
"position": [
595,
322
],
"rgb": [
245,
120,
26
]
},
{
"position": [
596,
322
],
"rgb": [
245,
120,
26
]
},
{
"position": [
597,
322
],
"rgb": [
245,
120,
26
]
},
{
"position": [
595,
323
],
"rgb": [
245,
120,
26
]
},
{
"position": [
596,
323
],
"rgb": [
245,
120,
26
]
},
{
"position": [
597,
323
],
"rgb": [
245,
120,
26
]
},
{
"position": [
596,
324
],
"rgb": [
245,
120,
26
]
},
{
"position": [
597,
324
],
"rgb": [
245,
120,
26
]
},
{
"position": [
598,
324
],
"rgb": [
245,
120,
26
]
},
{
"position": [
596,
325
],
"rgb": [
245,
120,
26
]
},
{
"position": [
597,
325
],
"rgb": [
245,
120,
26
]
},
{
"position": [
598,
325
],
"rgb": [
245,
120,
26
]
},
{
"position": [
596,
326
],
"rgb": [
245,
120,
26
]
},
{
"position": [
597,
326
],
"rgb": [
245,
120,
26
]
},
{
"position": [
598,
326
],
"rgb": [
245,
120,
26
]
},
{
"position": [
597,
327
],
"rgb": [
245,
120,
26
]
},
{
"position": [
598,
327
],
"rgb": [
245,
120,
26
]
},
{
"position": [
599,
327
],
"rgb": [
245,
120,
26
]
}
],
"native_edit_transform": "Matrix ((1,0,0,0),(0,1,0,0),(0,0,1,0),(0,0,0,1))",
"source_global_placement": "Placement [Pos=(-10,-5,0), Yaw-Pitch-Roll=(-15,-0,0)]",
"preview_result": {
"source_ids": [
0
],
"created_ids": [
1
],
"helper_ids": [
2,
3
],
"constraint_ids": [
2,
3,
4,
5,
6,
7,
8,
9
],
"dimension_ids": [
9
],
"distance": 2.0,
"loop_select": false,
"constrain": true,
"kind": "line"
},
"russian_dialog": {
"window_title": "Смещение геометрии",
"visible_labels": [
"Выбрано элементов: 1",
"Расстояние смещения:",
"Поддерживаются окружность, отдельный отрезок и выпуклый замкнутый контур из отрезков. Положительное расстояние расширяет окружность и контур. Для отдельного отрезка оно задаёт левую сторону по направлению от начала к концу; отрицательное — противоположную."
],
"untranslated_candidates": [],
"rendered_dialog": "C:\\Repos\\qinventor\\artifacts\\validation\\sketch-linked-binder-offset-dialog.png"
},
"temporary_document": "QIPreview869b13260d124d47b57d7947634114cf",
"cancel_preserved_geometry_constraints_history_dirty_flag": true,
"history_before": {
"undo_count": 0,
"redo_count": 1,
"undo_names": [],
"redo_names": [
"Изменить ширину связанного основания"
]
},
"history_after_native_redo": {
"undo_count": 1,
"redo_count": 0,
"undo_names": [
"Изменить ширину связанного основания"
],
"redo_names": []
},
"source_width_after_native_redo_mm": 12.0,
"linked_line_length_after_native_redo_mm": 12.000000000000002,
"actual_native_offset_framebuffer": "C:\\Repos\\qinventor\\artifacts\\validation\\sketch-linked-binder-actual-offset-framebuffer.png",
"actual_native_offset_local_endpoints_mm": [
[
6.433311384799942,
6.9001814922655065,
0.0
],
[
3.8451209337747345,
16.55943975515619,
0.0
]
],
"native_offset_midpoint_pixel": [
597,
322
],
"green_pixels_at_native_offset_midpoint": [
{
"position": [
594,
317
],
"rgb": [
47,
158,
68
]
},
{
"position": [
595,
317
],
"rgb": [
47,
158,
68
]
},
{
"position": [
596,
317
],
"rgb": [
47,
158,
68
]
},
{
"position": [
594,
318
],
"rgb": [
47,
158,
68
]
},
{
"position": [
595,
318
],
"rgb": [
47,
158,
68
]
},
{
"position": [
596,
318
],
"rgb": [
47,
158,
68
]
},
{
"position": [
594,
319
],
"rgb": [
47,
158,
68
]
},
{
"position": [
595,
319
],
"rgb": [
47,
158,
68
]
},
{
"position": [
596,
319
],
"rgb": [
47,
158,
68
]
},
{
"position": [
595,
320
],
"rgb": [
47,
158,
68
]
},
{
"position": [
596,
320
],
"rgb": [
47,
158,
68
]
},
{
"position": [
597,
320
],
"rgb": [
47,
158,
68
]
},
{
"position": [
595,
321
],
"rgb": [
47,
158,
68
]
},
{
"position": [
596,
321
],
"rgb": [
47,
158,
68
]
},
{
"position": [
597,
321
],
"rgb": [
47,
158,
68
]
},
{
"position": [
595,
322
],
"rgb": [
47,
158,
68
]
},
{
"position": [
596,
322
],
"rgb": [
47,
158,
68
]
},
{
"position": [
597,
322
],
"rgb": [
47,
158,
68
]
},
{
"position": [
595,
323
],
"rgb": [
47,
158,
68
]
},
{
"position": [
596,
323
],
"rgb": [
47,
158,
68
]
},
{
"position": [
597,
323
],
"rgb": [
47,
158,
68
]
},
{
"position": [
596,
324
],
"rgb": [
47,
158,
68
]
},
{
"position": [
597,
324
],
"rgb": [
47,
158,
68
]
},
{
"position": [
598,
324
],
"rgb": [
47,
158,
68
]
},
{
"position": [
596,
325
],
"rgb": [
47,
158,
68
]
},
{
"position": [
597,
325
],
"rgb": [
47,
158,
68
]
},
{
"position": [
598,
325
],
"rgb": [
47,
158,
68
]
},
{
"position": [
596,
326
],
"rgb": [
47,
158,
68
]
},
{
"position": [
597,
326
],
"rgb": [
47,
158,
68
]
},
{
"position": [
598,
326
],
"rgb": [
47,
158,
68
]
},
{
"position": [
597,
327
],
"rgb": [
47,
158,
68
]
},
{
"position": [
598,
327
],
"rgb": [
47,
158,
68
]
},
{
"position": [
599,
327
],
"rgb": [
47,
158,
68
]
}
],
"identical_native_camera": {
"position": [
12.591839790344238,
8.626729011535645,
24.723207473754883
],
"orientation": [
0.0,
0.0,
0.0,
1.0
],
"height": 41.446414947509766
}
}
},
{
"name": "rectangular: existing Point helpers survive detached Edit preview; Cancel preserves registry/formulas/Redo",
"passed": true,
"result": {
"shadow_before_set_parameters": {
"signature": {
"geometry": [
[
"Circle",
[
7.0,
4.0,
0.0
],
[
0.0,
0.0,
1.0
],
2.0
],
[
"LineSegment",
[
0.0,
0.0,
0.0
],
[
1.0,
0.0,
0.0
]
],
[
"Point",
[
12.0,
15.0,
0.0,
12.0,
15.0,
0.0
]
],
[
"Circle",
[
19.0,
4.0,
0.0
],
[
0.0,
0.0,
1.0
],
2.0
],
[
"Circle",
[
31.0,
4.0,
0.0
],
[
0.0,
0.0,
1.0
],
2.0
],
[
"Circle",
[
7.0,
19.0,
0.0
],
[
0.0,
0.0,
1.0
],
2.0
],
[
"Circle",
[
19.0,
19.0,
0.0
],
[
0.0,
0.0,
1.0
],
2.0
],
[
"Circle",
[
31.0,
19.0,
0.0
],
[
0.0,
0.0,
1.0
],
2.0
]
],
"constraints": [
[
"DistanceX",
0,
3,
-2000,
0,
-2000,
0,
7.0,
"ЦентрX"
],
[
"DistanceY",
0,
3,
-2000,
0,
-2000,
0,
4.0,
"ЦентрY"
],
[
"Radius",
0,
0,
-2000,
0,
-2000,
0,
2.0,
"Радиус"
],
[
"Coincident",
1,
1,
-1,
1,
-2000,
0,
0.0,
"Массив1Связь1"
],
[
"Distance",
1,
0,
-2000,
0,
-2000,
0,
1.0,
"Массив1Связь2"
],
[
"Angle",
1,
0,
-2000,
0,
-2000,
0,
0.0,
"Массив1Направление"
],
[
"DistanceX",
2,
1,
-2000,
0,
-2000,
0,
12.0,
"Массив1ШагX"
],
[
"DistanceY",
2,
1,
-2000,
0,
-2000,
0,
15.0,
"Массив1ШагY"
],
[
"Equal",
0,
0,
3,
0,
-2000,
0,
0.0,
"Массив1Связь6"
],
[
"DistanceX",
0,
3,
3,
3,
-2000,
0,
12.0,
"Массив1Связь7"
],
[
"DistanceY",
0,
3,
3,
3,
-2000,
0,
0.0,
"Массив1Связь8"
],
[
"Equal",
0,
0,
4,
0,
-2000,
0,
0.0,
"Массив1Связь9"
],
[
"DistanceX",
0,
3,
4,
3,
-2000,
0,
24.0,
"Массив1Связь10"
],
[
"DistanceY",
0,
3,
4,
3,
-2000,
0,
0.0,
"Массив1Связь11"
],
[
"Equal",
0,
0,
5,
0,
-2000,
0,
0.0,
"Массив1Связь12"
],
[
"DistanceX",
0,
3,
5,
3,
-2000,
0,
0.0,
"Массив1Связь13"
],
[
"DistanceY",
0,
3,
5,
3,
-2000,
0,
15.0,
"Массив1Связь14"
],
[
"Equal",
0,
0,
6,
0,
-2000,
0,
0.0,
"Массив1Связь15"
],
[
"DistanceX",
0,
3,
6,
3,
-2000,
0,
12.0,
"Массив1Связь16"
],
[
"DistanceY",
0,
3,
6,
3,
-2000,
0,
15.0,
"Массив1Связь17"
],
[
"Equal",
0,
0,
7,
0,
-2000,
0,
0.0,
"Массив1Связь18"
],
[
"DistanceX",
0,
3,
7,
3,
-2000,
0,
24.0,
"Массив1Связь19"
],
[
"DistanceY",
0,
3,
7,
3,
-2000,
0,
15.0,
"Массив1Связь20"
]
],
"datum_label_positions": [
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
10.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
24.347156524658203,
0.0
],
[
3.0,
-13.0
],
[
38.0,
-4.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
]
],
"construction": [
false,
true,
true,
false,
false,
false,
false,
false
],
"property_names": [
"ArcFitTolerance",
"AttacherEngine",
"AttacherType",
"AttachmentOffset",
"AttachmentSupport",
"Constraints",
"Exports",
"ExpressionEngine",
"ExternalGeo",
"ExternalGeometry",
"ExternalTypes",
"FullyConstrained",
"Geometry",
"InternalShape",
"Label",
"Label2",
"MakeInternals",
"MapMode",
"MapPathParameter",
"MapReversed",
"Placement",
"QISketchPatterns",
"Shape",
"ShapeMaterial",
"Visibility",
"_ElementMapVersion",
"_ExternalGeoVersion"
],
"patterns": [
{
"id": "p1",
"kind": "rectangular",
"parameters": {
"count_x": 3,
"count_y": 2,
"spacing_x": 12.0,
"spacing_y": 15.0,
"angle": 0.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
4,
5,
6,
7,
8
],
"helper_geometry_ids": [
2,
3
],
"constraint_names": [
"Массив1Связь1",
"Массив1Связь2",
"Массив1Направление",
"Массив1ШагX",
"Массив1ШагY",
"Массив1Связь6",
"Массив1Связь7",
"Массив1Связь8",
"Массив1Связь9",
"Массив1Связь10",
"Массив1Связь11",
"Массив1Связь12",
"Массив1Связь13",
"Массив1Связь14",
"Массив1Связь15",
"Массив1Связь16",
"Массив1Связь17",
"Массив1Связь18",
"Массив1Связь19",
"Массив1Связь20"
],
"dimension_names": {
"Направление": "Массив1Направление",
"ШагX": "Массив1ШагX",
"ШагY": "Массив1ШагY"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
4,
5,
6,
7
],
"generated_ids": [
3,
4,
5,
6,
7
],
"helper_ids": [
1,
2
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22
]
}
]
},
"registry": "{\"version\": 1, \"patterns\": [{\"id\": \"p1\", \"kind\": \"rectangular\", \"parameters\": {\"count_x\": 3, \"count_y\": 2, \"spacing_x\": 12.0, \"spacing_y\": 15.0, \"angle\": 0.0}, \"source_geometry_ids\": [1], \"created_geometry_ids\": [4, 5, 6, 7, 8], \"helper_geometry_ids\": [2, 3], \"constraint_names\": [\"Массив1Связь1\", \"Массив1Связь2\", \"Массив1Направление\", \"Массив1ШагX\", \"Массив1ШагY\", \"Массив1Связь6\", \"Массив1Связь7\", \"Массив1Связь8\", \"Массив1Связь9\", \"Массив1Связь10\", \"Массив1Связь11\", \"Массив1Связь12\", \"Массив1Связь13\", \"Массив1Связь14\", \"Массив1Связь15\", \"Массив1Связь16\", \"Массив1Связь17\", \"Массив1Связь18\", \"Массив1Связь19\", \"Массив1Связь20\"], \"dimension_names\": {\"Направление\": \"Массив1Направление\", \"ШагX\": \"Массив1ШагX\", \"ШагY\": \"Массив1ШагY\"}, \"associative\": true}]}",
"formulas": [
[
".Constraints.Массив1Связь10",
"2 * .Constraints.Массив1ШагX * cos(.Constraints.Массив1Направление) - 0 * .Constraints.Массив1ШагY * sin(.Constraints.Массив1Направление)"
],
[
".Constraints.Массив1Связь11",
"2 * .Constraints.Массив1ШагX * sin(.Constraints.Массив1Направление) + 0 * .Constraints.Массив1ШагY * cos(.Constraints.Массив1Направление)"
],
[
".Constraints.Массив1Связь13",
"0 * .Constraints.Массив1ШагX * cos(.Constraints.Массив1Направление) - 1 * .Constraints.Массив1ШагY * sin(.Constraints.Массив1Направление)"
],
[
".Constraints.Массив1Связь14",
"0 * .Constraints.Массив1ШагX * sin(.Constraints.Массив1Направление) + 1 * .Constraints.Массив1ШагY * cos(.Constraints.Массив1Направление)"
],
[
".Constraints.Массив1Связь16",
"1 * .Constraints.Массив1ШагX * cos(.Constraints.Массив1Направление) - 1 * .Constraints.Массив1ШагY * sin(.Constraints.Массив1Направление)"
],
[
".Constraints.Массив1Связь17",
"1 * .Constraints.Массив1ШагX * sin(.Constraints.Массив1Направление) + 1 * .Constraints.Массив1ШагY * cos(.Constraints.Массив1Направление)"
],
[
".Constraints.Массив1Связь19",
"2 * .Constraints.Массив1ШагX * cos(.Constraints.Массив1Направление) - 1 * .Constraints.Массив1ШагY * sin(.Constraints.Массив1Направление)"
],
[
".Constraints.Массив1Связь2",
"1 mm"
],
[
".Constraints.Массив1Связь20",
"2 * .Constraints.Массив1ШагX * sin(.Constraints.Массив1Направление) + 1 * .Constraints.Массив1ШагY * cos(.Constraints.Массив1Направление)"
],
[
".Constraints.Массив1Связь7",
"1 * .Constraints.Массив1ШагX * cos(.Constraints.Массив1Направление) - 0 * .Constraints.Массив1ШагY * sin(.Constraints.Массив1Направление)"
],
[
".Constraints.Массив1Связь8",
"1 * .Constraints.Массив1ШагX * sin(.Constraints.Массив1Направление) + 0 * .Constraints.Массив1ШагY * cos(.Constraints.Массив1Направление)"
]
],
"point_count": 1
},
"revised_native_preview": {
"circle_count": 8,
"native_geometry_count": 10,
"constraint_count": 29,
"centers_and_radii_mm": [
[
7.0,
4.0,
2.0
],
[
7.0,
19.0,
2.0
],
[
19.0,
4.0,
2.0
],
[
19.0,
19.0,
2.0
],
[
31.0,
4.0,
2.0
],
[
31.0,
19.0,
2.0
],
[
43.0,
4.0,
2.0
],
[
43.0,
19.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "rectangular",
"parameters": {
"count_x": 4,
"count_y": 2,
"spacing_x": 12.0,
"spacing_y": 15.0,
"angle": 0.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
11,
12,
13,
14,
15,
16,
17
],
"helper_geometry_ids": [
9,
10
],
"constraint_names": [
"Массив1Связь1",
"Массив1Связь2",
"Массив1Направление",
"Массив1ШагX",
"Массив1ШагY",
"Массив1Связь6",
"Массив1Связь7",
"Массив1Связь8",
"Массив1Связь9",
"Массив1Связь10",
"Массив1Связь11",
"Массив1Связь12",
"Массив1Связь13",
"Массив1Связь14",
"Массив1Связь15",
"Массив1Связь16",
"Массив1Связь17",
"Массив1Связь18",
"Массив1Связь19",
"Массив1Связь20",
"Массив1Связь21",
"Массив1Связь22",
"Массив1Связь23",
"Массив1Связь24",
"Массив1Связь25",
"Массив1Связь26"
],
"dimension_names": {
"Направление": "Массив1Направление",
"ШагX": "Массив1ШагX",
"ШагY": "Массив1ШагY"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
4,
5,
6,
7,
8,
9
],
"generated_ids": [
3,
4,
5,
6,
7,
8,
9
],
"helper_ids": [
1,
2
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28
]
}
],
"solver_result": 0
},
"temporary_document": "QIPreview4ed32be399f7421c87145d667488634e",
"original_registry_preserved": true,
"original_formulas_preserved": true,
"source_datum_label_positions_before": [
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
10.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
24.347156524658203,
0.0
],
[
3.0,
-13.0
],
[
38.0,
-4.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
]
],
"rendered_dialog": "C:\\Repos\\qinventor\\artifacts\\validation\\sketch-rectangular-existing-pattern-edit-dialog.png",
"cancel_preserved_native_data_history_dirty_flag": true,
"source_datum_label_positions_after_cancel": [
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
10.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
24.347156524658203,
0.0
],
[
3.0,
-13.0
],
[
38.0,
-4.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
]
],
"history_before": {
"undo_count": 1,
"redo_count": 1,
"undo_names": [
"Прямоугольный массив"
],
"redo_names": [
"Изменить радиус исходной окружности массива"
]
},
"history_after_native_redo": {
"undo_count": 2,
"redo_count": 0,
"undo_names": [
"Изменить радиус исходной окружности массива",
"Прямоугольный массив"
],
"redo_names": []
},
"source_radius_after_native_redo_mm": 3.0,
"regenerated_pattern_after_native_redo": {
"circle_count": 6,
"native_geometry_count": 8,
"constraint_count": 23,
"centers_and_radii_mm": [
[
7.0,
4.0,
3.0
],
[
7.0,
19.0,
3.0
],
[
19.0,
4.0,
3.0
],
[
19.0,
19.0,
3.0
],
[
31.0,
4.0,
3.0
],
[
31.0,
19.0,
3.0
]
],
"metadata": [
{
"id": "p1",
"kind": "rectangular",
"parameters": {
"count_x": 3,
"count_y": 2,
"spacing_x": 12.0,
"spacing_y": 15.0,
"angle": 0.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
4,
5,
6,
7,
8
],
"helper_geometry_ids": [
2,
3
],
"constraint_names": [
"Массив1Связь1",
"Массив1Связь2",
"Массив1Направление",
"Массив1ШагX",
"Массив1ШагY",
"Массив1Связь6",
"Массив1Связь7",
"Массив1Связь8",
"Массив1Связь9",
"Массив1Связь10",
"Массив1Связь11",
"Массив1Связь12",
"Массив1Связь13",
"Массив1Связь14",
"Массив1Связь15",
"Массив1Связь16",
"Массив1Связь17",
"Массив1Связь18",
"Массив1Связь19",
"Массив1Связь20"
],
"dimension_names": {
"Направление": "Массив1Направление",
"ШагX": "Массив1ШагX",
"ШагY": "Массив1ШагY"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
4,
5,
6,
7
],
"generated_ids": [
3,
4,
5,
6,
7
],
"helper_ids": [
1,
2
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22
]
}
],
"solver_result": 0
}
}
},
{
"name": "circular: existing Point helpers survive detached Edit preview; Cancel preserves registry/formulas/Redo",
"passed": true,
"result": {
"shadow_before_set_parameters": {
"signature": {
"geometry": [
[
"Circle",
[
7.0,
4.0,
0.0
],
[
0.0,
0.0,
1.0
],
2.0
],
[
"Point",
[
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
],
[
"LineSegment",
[
0.0,
0.0,
0.0
],
[
7.0,
4.0,
0.0
]
],
[
"Circle",
[
-4.0,
7.0,
0.0
],
[
0.0,
0.0,
1.0
],
2.0
],
[
"LineSegment",
[
0.0,
0.0,
0.0
],
[
-4.0,
7.0,
0.0
]
],
[
"Circle",
[
-7.0,
-4.0,
0.0
],
[
0.0,
0.0,
1.0
],
2.0
],
[
"LineSegment",
[
0.0,
0.0,
0.0
],
[
-7.0,
-4.0,
0.0
]
],
[
"Circle",
[
4.0,
-7.0,
0.0
],
[
0.0,
0.0,
1.0
],
2.0
],
[
"LineSegment",
[
0.0,
0.0,
0.0
],
[
4.0,
-7.0,
0.0
]
]
],
"constraints": [
[
"DistanceX",
0,
3,
-2000,
0,
-2000,
0,
7.0,
"ЦентрX"
],
[
"DistanceY",
0,
3,
-2000,
0,
-2000,
0,
4.0,
"ЦентрY"
],
[
"Radius",
0,
0,
-2000,
0,
-2000,
0,
2.0,
"Радиус"
],
[
"DistanceX",
1,
1,
-2000,
0,
-2000,
0,
0.0,
"КруговойМассив1ЦентрX"
],
[
"DistanceY",
1,
1,
-2000,
0,
-2000,
0,
0.0,
"КруговойМассив1ЦентрY"
],
[
"Coincident",
2,
1,
1,
1,
-2000,
0,
0.0,
"КруговойМассив1Связь3"
],
[
"Coincident",
2,
2,
0,
3,
-2000,
0,
0.0,
"КруговойМассив1Связь4"
],
[
"Equal",
0,
0,
3,
0,
-2000,
0,
0.0,
"КруговойМассив1Связь5"
],
[
"Coincident",
4,
1,
1,
1,
-2000,
0,
0.0,
"КруговойМассив1Связь6"
],
[
"Coincident",
4,
2,
3,
3,
-2000,
0,
0.0,
"КруговойМассив1Связь7"
],
[
"Equal",
2,
0,
4,
0,
-2000,
0,
0.0,
"КруговойМассив1Связь8"
],
[
"Angle",
2,
0,
4,
0,
-2000,
0,
1.570796327,
"КруговойМассив1УголШага"
],
[
"Equal",
0,
0,
5,
0,
-2000,
0,
0.0,
"КруговойМассив1Связь10"
],
[
"Coincident",
6,
1,
1,
1,
-2000,
0,
0.0,
"КруговойМассив1Связь11"
],
[
"Coincident",
6,
2,
5,
3,
-2000,
0,
0.0,
"КруговойМассив1Связь12"
],
[
"Equal",
2,
0,
6,
0,
-2000,
0,
0.0,
"КруговойМассив1Связь13"
],
[
"Angle",
2,
0,
6,
0,
-2000,
0,
3.141592654,
"КруговойМассив1Связь14"
],
[
"Equal",
0,
0,
7,
0,
-2000,
0,
0.0,
"КруговойМассив1Связь15"
],
[
"Coincident",
8,
1,
1,
1,
-2000,
0,
0.0,
"КруговойМассив1Связь16"
],
[
"Coincident",
8,
2,
7,
3,
-2000,
0,
0.0,
"КруговойМассив1Связь17"
],
[
"Equal",
2,
0,
8,
0,
-2000,
0,
0.0,
"КруговойМассив1Связь18"
],
[
"Angle",
2,
0,
8,
0,
-2000,
0,
4.71238898,
"КруговойМассив1Связь19"
]
],
"datum_label_positions": [
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
10.0
],
[
14.0,
0.0
],
[
14.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
11.363961219787598,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
]
],
"construction": [
false,
true,
true,
false,
true,
false,
true,
false,
true
],
"property_names": [
"ArcFitTolerance",
"AttacherEngine",
"AttacherType",
"AttachmentOffset",
"AttachmentSupport",
"Constraints",
"Exports",
"ExpressionEngine",
"ExternalGeo",
"ExternalGeometry",
"ExternalTypes",
"FullyConstrained",
"Geometry",
"InternalShape",
"Label",
"Label2",
"MakeInternals",
"MapMode",
"MapPathParameter",
"MapReversed",
"Placement",
"QISketchPatterns",
"Shape",
"ShapeMaterial",
"Visibility",
"_ElementMapVersion",
"_ExternalGeoVersion"
],
"patterns": [
{
"id": "p1",
"kind": "circular",
"parameters": {
"count": 4,
"center": [
0.0,
0.0
],
"angle": 360.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
4,
6,
8
],
"helper_geometry_ids": [
2,
3,
5,
7,
9
],
"constraint_names": [
"КруговойМассив1ЦентрX",
"КруговойМассив1ЦентрY",
"КруговойМассив1Связь3",
"КруговойМассив1Связь4",
"КруговойМассив1Связь5",
"КруговойМассив1Связь6",
"КруговойМассив1Связь7",
"КруговойМассив1Связь8",
"КруговойМассив1УголШага",
"КруговойМассив1Связь10",
"КруговойМассив1Связь11",
"КруговойМассив1Связь12",
"КруговойМассив1Связь13",
"КруговойМассив1Связь14",
"КруговойМассив1Связь15",
"КруговойМассив1Связь16",
"КруговойМассив1Связь17",
"КруговойМассив1Связь18",
"КруговойМассив1Связь19"
],
"dimension_names": {
"ЦентрX": "КруговойМассив1ЦентрX",
"ЦентрY": "КруговойМассив1ЦентрY",
"УголШага": "КруговойМассив1УголШага"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
5,
7
],
"generated_ids": [
3,
5,
7
],
"helper_ids": [
1,
2,
4,
6,
8
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7,
8
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
]
}
]
},
"registry": "{\"version\": 1, \"patterns\": [{\"id\": \"p1\", \"kind\": \"circular\", \"parameters\": {\"count\": 4, \"center\": [0.0, 0.0], \"angle\": 360.0}, \"source_geometry_ids\": [1], \"created_geometry_ids\": [4, 6, 8], \"helper_geometry_ids\": [2, 3, 5, 7, 9], \"constraint_names\": [\"КруговойМассив1ЦентрX\", \"КруговойМассив1ЦентрY\", \"КруговойМассив1Связь3\", \"КруговойМассив1Связь4\", \"КруговойМассив1Связь5\", \"КруговойМассив1Связь6\", \"КруговойМассив1Связь7\", \"КруговойМассив1Связь8\", \"КруговойМассив1УголШага\", \"КруговойМассив1Связь10\", \"КруговойМассив1Связь11\", \"КруговойМассив1Связь12\", \"КруговойМассив1Связь13\", \"КруговойМассив1Связь14\", \"КруговойМассив1Связь15\", \"КруговойМассив1Связь16\", \"КруговойМассив1Связь17\", \"КруговойМассив1Связь18\", \"КруговойМассив1Связь19\"], \"dimension_names\": {\"ЦентрX\": \"КруговойМассив1ЦентрX\", \"ЦентрY\": \"КруговойМассив1ЦентрY\", \"УголШага\": \"КруговойМассив1УголШага\"}, \"associative\": true}]}",
"formulas": [
[
".Constraints.КруговойМассив1Связь14",
"2 * .Constraints.КруговойМассив1УголШага"
],
[
".Constraints.КруговойМассив1Связь19",
"3 * .Constraints.КруговойМассив1УголШага"
]
],
"point_count": 1
},
"revised_native_preview": {
"circle_count": 6,
"native_geometry_count": 13,
"constraint_count": 32,
"centers_and_radii_mm": [
[
-8.01426,
0.878429,
2.0
],
[
-7.0,
-4.0,
2.0
],
[
-5.967345,
5.421328,
2.0
],
[
-1.641107,
7.893464,
2.0
],
[
3.311978,
7.350565,
2.0
],
[
7.0,
4.0,
2.0
]
],
"metadata": [
{
"id": "p1",
"kind": "circular",
"parameters": {
"count": 6,
"center": [
0.0,
0.0
],
"angle": 180.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
12,
14,
16,
18,
20
],
"helper_geometry_ids": [
10,
11,
13,
15,
17,
19,
21
],
"constraint_names": [
"КруговойМассив1ЦентрX",
"КруговойМассив1ЦентрY",
"КруговойМассив1Связь3",
"КруговойМассив1Связь4",
"КруговойМассив1Связь5",
"КруговойМассив1Связь6",
"КруговойМассив1Связь7",
"КруговойМассив1Связь8",
"КруговойМассив1УголШага",
"КруговойМассив1Связь10",
"КруговойМассив1Связь11",
"КруговойМассив1Связь12",
"КруговойМассив1Связь13",
"КруговойМассив1Связь14",
"КруговойМассив1Связь15",
"КруговойМассив1Связь16",
"КруговойМассив1Связь17",
"КруговойМассив1Связь18",
"КруговойМассив1Связь19",
"КруговойМассив1Связь20",
"КруговойМассив1Связь21",
"КруговойМассив1Связь22",
"КруговойМассив1Связь23",
"КруговойМассив1Связь24",
"КруговойМассив1Связь25",
"КруговойМассив1Связь26",
"КруговойМассив1Связь27",
"КруговойМассив1Связь28",
"КруговойМассив1Связь29"
],
"dimension_names": {
"ЦентрX": "КруговойМассив1ЦентрX",
"ЦентрY": "КруговойМассив1ЦентрY",
"УголШага": "КруговойМассив1УголШага"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
5,
7,
9,
11
],
"generated_ids": [
3,
5,
7,
9,
11
],
"helper_ids": [
1,
2,
4,
6,
8,
10,
12
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
]
}
],
"solver_result": 0
},
"temporary_document": "QIPreviewbfb737b0690b4c579209a314501884be",
"original_registry_preserved": true,
"original_formulas_preserved": true,
"source_datum_label_positions_before": [
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
10.0
],
[
14.0,
0.0
],
[
14.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
11.363961219787598,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
]
],
"rendered_dialog": "C:\\Repos\\qinventor\\artifacts\\validation\\sketch-circular-existing-pattern-edit-dialog.png",
"cancel_preserved_native_data_history_dirty_flag": true,
"source_datum_label_positions_after_cancel": [
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
10.0
],
[
14.0,
0.0
],
[
14.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
11.363961219787598,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
],
[
10.0,
0.0
]
],
"history_before": {
"undo_count": 1,
"redo_count": 1,
"undo_names": [
"Круговой массив"
],
"redo_names": [
"Изменить радиус исходной окружности массива"
]
},
"history_after_native_redo": {
"undo_count": 2,
"redo_count": 0,
"undo_names": [
"Изменить радиус исходной окружности массива",
"Круговой массив"
],
"redo_names": []
},
"source_radius_after_native_redo_mm": 3.0,
"regenerated_pattern_after_native_redo": {
"circle_count": 4,
"native_geometry_count": 9,
"constraint_count": 22,
"centers_and_radii_mm": [
[
-7.0,
-4.0,
3.0
],
[
-4.0,
7.0,
3.0
],
[
4.0,
-7.0,
3.0
],
[
7.0,
4.0,
3.0
]
],
"metadata": [
{
"id": "p1",
"kind": "circular",
"parameters": {
"count": 4,
"center": [
0.0,
0.0
],
"angle": 360.0
},
"source_geometry_ids": [
1
],
"created_geometry_ids": [
4,
6,
8
],
"helper_geometry_ids": [
2,
3,
5,
7,
9
],
"constraint_names": [
"КруговойМассив1ЦентрX",
"КруговойМассив1ЦентрY",
"КруговойМассив1Связь3",
"КруговойМассив1Связь4",
"КруговойМассив1Связь5",
"КруговойМассив1Связь6",
"КруговойМассив1Связь7",
"КруговойМассив1Связь8",
"КруговойМассив1УголШага",
"КруговойМассив1Связь10",
"КруговойМассив1Связь11",
"КруговойМассив1Связь12",
"КруговойМассив1Связь13",
"КруговойМассив1Связь14",
"КруговойМассив1Связь15",
"КруговойМассив1Связь16",
"КруговойМассив1Связь17",
"КруговойМассив1Связь18",
"КруговойМассив1Связь19"
],
"dimension_names": {
"ЦентрX": "КруговойМассив1ЦентрX",
"ЦентрY": "КруговойМассив1ЦентрY",
"УголШага": "КруговойМассив1УголШага"
},
"associative": true,
"source_ids": [
0
],
"created_ids": [
3,
5,
7
],
"generated_ids": [
3,
5,
7
],
"helper_ids": [
1,
2,
4,
6,
8
],
"all_geometry_ids": [
1,
2,
3,
4,
5,
6,
7,
8
],
"constraint_ids": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21
]
}
],
"solver_result": 0
}
}
},
{
"name": "Russian transformation controls and Finish/Cancel remain visible at 1440 px",
"passed": true,
"result": {
"window_width": 1440,
"controls": {
"QI_SketchMirror": {
"caption": "Зеркальное отражение",
"tooltip": "Выберите геометрию эскиза и задайте ось отражения. Копии связаны с исходными размерами; доступен предпросмотр.",
"visible_without_scroll": true
},
"QI_SketchRectangularPattern": {
"caption": "Прямоугольный массив",
"tooltip": "Повторить выбранную геометрию в двух перпендикулярных направлениях. Задайте количество, шаг и угол направления.",
"visible_without_scroll": true
},
"QI_SketchCircularPattern": {
"caption": "Круговой массив",
"tooltip": "Повторить выбранную геометрию вокруг заданного центра. Задайте количество и общий угол; копии сохраняют связь.",
"visible_without_scroll": true
},
"QI_SketchOffset": {
"caption": "Смещение геометрии",
"tooltip": "Создать смещённую геометрию: выбор контура, расстояние и связь с исходными размерами. Отрицательное расстояние меняет сторону.",
"visible_without_scroll": true
},
"QI_EditSketchPattern": {
"caption": "Параметры повторений",
"tooltip": "Изменить ось зеркала, количество, шаг, центр или угол созданного повторения геометрии.",
"visible_without_scroll": true
},
"QI_FinishSketch": {
"caption": "Завершить\nэскиз",
"tooltip": "Закрыть редактор и вернуться к модели",
"visible_without_scroll": true
},
"QI_CancelSketch": {
"caption": "Отменить\nэскиз",
"tooltip": "Отменить новые построения; существующий эскиз вернётся к состоянию до редактирования",
"visible_without_scroll": true
}
},
"untranslated_candidates": []
}
}
],
"input_delivery": "Qt button and keyboard events on native dialogs",
"selection_method": "explicit native Sketch Edge1 preselection through Selection API",
"persistence_boundary": "Qt QI_Save and native App.openDocument on the saved FCStd",
"os_pointer_access": false,
"native_shadow_guard": {
"module_file": "C:\\Repos\\qinventor\\src\\QInventor\\qi_sketch_preview.py",
"point_coordinate_attributes": [
"X",
"Y",
"Z"
]
}
}
},
{
"name": "parametric_solid_kernel_suite",
"passed": true,
"result": {
"status": "passed",
"freecad_version": [
"1",
"1",
"4",
"20260928 (Git shallow)",
"Unknown",
"2026/09/28 13:46:34",
"(HEAD detached at 4fd3bf320)",
"4fd3bf320d9566a27e60069fc8387448aaa3a094"
],
"gui": true,
"source": "C:\\Repos\\qinventor\\src\\QInventor\\qi_model.py",
"passed": 20,
"failed": 0,
"skipped": 0,
"checks": [
{
"name": "box_volume_constraints",
"passed": true,
"status": "passed",
"detail": {
"volume_mm3": 63999.999999999985,
"fully_constrained": true,
"feature": "PartDesign::Pad"
}
},
{
"name": "box_edit_undo_redo",
"passed": true,
"status": "passed",
"detail": {
"volume_mm3": 15000.0,
"undo_redo": true,
"native_parameters": "App::VarSet"
}
},
{
"name": "creation_undo_redo",
"passed": true,
"status": "passed",
"detail": {
"single_creation_undo": true
}
},
{
"name": "cylinder_material",
"passed": true,
"status": "passed",
"detail": {
"material": "Алюминий",
"mass_kg": 0.0732870734229427
}
},
{
"name": "plate_parametric_holes",
"passed": true,
"status": "passed",
"detail": {
"volume_mm3": 83685.66394729842,
"fully_constrained": true,
"holes": 2
}
},
{
"name": "atomic_dimensions_and_rejection",
"passed": true,
"status": "passed",
"detail": {
"rejected_without_partial_changes": true
}
},
{
"name": "invalid_dimension_inputs",
"passed": true,
"status": "passed",
"detail": {
"invalid_cases": 14,
"document_unchanged": true
}
},
{
"name": "free_sketch_dimensions",
"passed": true,
"status": "passed",
"detail": {
"rectangle_driving_dimensions": [
"Length",
"Width"
],
"circle_radius": 9
}
},
{
"name": "all_origin_planes",
"passed": true,
"status": "passed",
"detail": {
"planes": [
"XY",
"XZ",
"YZ"
]
}
},
{
"name": "pocket_and_rollback",
"passed": true,
"status": "passed",
"detail": {
"real_subtractive_volume_mm3": 19214.601836602546,
"failed_pocket_rolled_back": true
}
},
{
"name": "save_and_reopen",
"passed": true,
"status": "passed",
"detail": {
"native_project": "C:\\Repos\\qinventor\\artifacts\\validation\\parametric-bracket.FCStd",
"editable_after_reopen": true
}
},
{
"name": "step_round_trip",
"passed": true,
"status": "passed",
"detail": {
"path": "C:\\Repos\\qinventor\\artifacts\\validation\\bracket.step",
"imported_volume_mm3": 56743.36293856411,
"valid": true
}
},
{
"name": "solid_export_formats",
"passed": true,
"status": "passed",
"detail": {
"formats": [
".iges",
".brep",
".stl"
],
"stl_facets": 12
}
},
{
"name": "flat_exports_world_geometry_and_history",
"passed": true,
"status": "passed",
"detail": {
"checks": 45,
"analytical_geometry_and_history": [
{
"case": "placed_assembly-default-brep",
"known_placements": {
"root": [
100,
200,
300,
90
],
"A_local": [
10,
20,
30,
90
],
"B_local": [
40,
50,
60,
180
],
"A_world": [
80,
210,
330,
180
],
"B_world": [
50,
240,
360,
270
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 234.0,
"native_volume_mm3": 233.99999999999997,
"com_mm": [
55.666666666666664,
234.52564102564102,
360.2692307692308
],
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
]
},
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 234.0,
"native_volume_mm3": 234.00000000000003,
"com_mm": [
55.666666666666664,
234.52564102564102,
360.2692307692308
],
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 234.0,
"native_volume_mm3": 233.99999999999997,
"com_mm": [
55.666666666666664,
234.52564102564102,
360.2692307692308
],
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 0.0,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "placed_assembly-default-iges",
"known_placements": {
"root": [
100,
200,
300,
90
],
"A_local": [
10,
20,
30,
90
],
"B_local": [
40,
50,
60,
180
],
"A_world": [
80,
210,
330,
180
],
"B_world": [
50,
240,
360,
270
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 0,
"shells": 0,
"faces": 12,
"volume_mm3": 0,
"native_volume_mm3": 233.99999999999994,
"com_mm": [
0.0,
0.0,
0.0
],
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
]
},
"iges_topology_readback": "native sewShape of raw imported surfaces and closed-shell makeSolid",
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 234.0,
"native_volume_mm3": 234.00000000000003,
"com_mm": [
55.666666666666664,
234.52564102564102,
360.2692307692308
],
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 234.0,
"native_volume_mm3": 233.99999999999994,
"com_mm": [
55.66666666666665,
234.52564102564102,
360.26923076923083
],
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 0.0,
"com_distance_mm": 5.859285502108464E-14,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "placed_assembly-default-stl",
"known_placements": {
"root": [
100,
200,
300,
90
],
"A_local": [
10,
20,
30,
90
],
"B_local": [
40,
50,
60,
180
],
"A_world": [
80,
210,
330,
180
],
"B_world": [
50,
240,
360,
270
]
},
"exact_snapshot_before_first_world_query": true,
"stl_facets": 24,
"volume_mm3": 234.0,
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
],
"original_redo_executed": true
},
{
"case": "placed_assembly-explicit-brep",
"known_placements": {
"root": [
100,
200,
300,
90
],
"A_local": [
10,
20,
30,
90
],
"B_local": [
40,
50,
60,
180
],
"A_world": [
80,
210,
330,
180
],
"B_world": [
50,
240,
360,
270
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 234.0,
"native_volume_mm3": 233.99999999999997,
"com_mm": [
55.666666666666664,
234.52564102564102,
360.2692307692308
],
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
]
},
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 234.0,
"native_volume_mm3": 234.00000000000003,
"com_mm": [
55.666666666666664,
234.52564102564102,
360.2692307692308
],
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 234.0,
"native_volume_mm3": 233.99999999999997,
"com_mm": [
55.666666666666664,
234.52564102564102,
360.2692307692308
],
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 0.0,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "placed_assembly-explicit-iges",
"known_placements": {
"root": [
100,
200,
300,
90
],
"A_local": [
10,
20,
30,
90
],
"B_local": [
40,
50,
60,
180
],
"A_world": [
80,
210,
330,
180
],
"B_world": [
50,
240,
360,
270
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 0,
"shells": 0,
"faces": 12,
"volume_mm3": 0,
"native_volume_mm3": 233.99999999999994,
"com_mm": [
0.0,
0.0,
0.0
],
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
]
},
"iges_topology_readback": "native sewShape of raw imported surfaces and closed-shell makeSolid",
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 234.0,
"native_volume_mm3": 234.00000000000003,
"com_mm": [
55.666666666666664,
234.52564102564102,
360.2692307692308
],
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 234.0,
"native_volume_mm3": 233.99999999999994,
"com_mm": [
55.66666666666665,
234.52564102564102,
360.26923076923083
],
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 0.0,
"com_distance_mm": 5.859285502108464E-14,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "placed_assembly-explicit-stl",
"known_placements": {
"root": [
100,
200,
300,
90
],
"A_local": [
10,
20,
30,
90
],
"B_local": [
40,
50,
60,
180
],
"A_world": [
80,
210,
330,
180
],
"B_world": [
50,
240,
360,
270
]
},
"exact_snapshot_before_first_world_query": true,
"stl_facets": 24,
"volume_mm3": 234.0,
"bounds_mm": [
50.0,
207.0,
330.0,
80.0,
240.0,
367.0
],
"original_redo_executed": true
},
{
"case": "placed_body-default-brep",
"known_placements": {
"parent": [
50,
60,
70,
90
],
"body": [
10,
20,
30,
90
],
"independent_world": [
30,
70,
100,
180
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 23.999999999999996,
"native_volume_mm3": 23.999999999999996,
"com_mm": [
29.0,
68.5,
102.0
],
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
]
},
"comparison": {
"expected": {
"type": "Solid",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 24.0,
"native_volume_mm3": 24.0,
"com_mm": [
29.0,
68.5,
102.0
],
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 23.999999999999996,
"native_volume_mm3": 23.999999999999996,
"com_mm": [
29.0,
68.5,
102.0
],
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 3.552713678800501E-15,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "placed_body-default-iges",
"known_placements": {
"parent": [
50,
60,
70,
90
],
"body": [
10,
20,
30,
90
],
"independent_world": [
30,
70,
100,
180
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 0,
"shells": 0,
"faces": 6,
"volume_mm3": 0,
"native_volume_mm3": 23.999999999999996,
"com_mm": [
0.0,
0.0,
0.0
],
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
]
},
"iges_topology_readback": "native sewShape of raw imported surfaces and closed-shell makeSolid",
"comparison": {
"expected": {
"type": "Solid",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 24.0,
"native_volume_mm3": 24.0,
"com_mm": [
29.0,
68.5,
102.0
],
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 23.999999999999996,
"native_volume_mm3": 23.999999999999996,
"com_mm": [
29.0,
68.50000000000001,
101.99999999999997
],
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 3.552713678800501E-15,
"com_distance_mm": 3.1776437161565096E-14,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "placed_body-default-stl",
"known_placements": {
"parent": [
50,
60,
70,
90
],
"body": [
10,
20,
30,
90
],
"independent_world": [
30,
70,
100,
180
]
},
"exact_snapshot_before_first_world_query": true,
"stl_facets": 12,
"volume_mm3": 24.0,
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
],
"original_redo_executed": true
},
{
"case": "placed_body-explicit-brep",
"known_placements": {
"parent": [
50,
60,
70,
90
],
"body": [
10,
20,
30,
90
],
"independent_world": [
30,
70,
100,
180
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 23.999999999999996,
"native_volume_mm3": 23.999999999999996,
"com_mm": [
29.0,
68.5,
102.0
],
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
]
},
"comparison": {
"expected": {
"type": "Solid",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 24.0,
"native_volume_mm3": 24.0,
"com_mm": [
29.0,
68.5,
102.0
],
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 23.999999999999996,
"native_volume_mm3": 23.999999999999996,
"com_mm": [
29.0,
68.5,
102.0
],
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 3.552713678800501E-15,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "placed_body-explicit-iges",
"known_placements": {
"parent": [
50,
60,
70,
90
],
"body": [
10,
20,
30,
90
],
"independent_world": [
30,
70,
100,
180
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 0,
"shells": 0,
"faces": 6,
"volume_mm3": 0,
"native_volume_mm3": 23.999999999999996,
"com_mm": [
0.0,
0.0,
0.0
],
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
]
},
"iges_topology_readback": "native sewShape of raw imported surfaces and closed-shell makeSolid",
"comparison": {
"expected": {
"type": "Solid",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 24.0,
"native_volume_mm3": 24.0,
"com_mm": [
29.0,
68.5,
102.0
],
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 23.999999999999996,
"native_volume_mm3": 23.999999999999996,
"com_mm": [
29.0,
68.50000000000001,
101.99999999999997
],
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 3.552713678800501E-15,
"com_distance_mm": 3.1776437161565096E-14,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "placed_body-explicit-stl",
"known_placements": {
"parent": [
50,
60,
70,
90
],
"body": [
10,
20,
30,
90
],
"independent_world": [
30,
70,
100,
180
]
},
"exact_snapshot_before_first_world_query": true,
"stl_facets": 12,
"volume_mm3": 24.0,
"bounds_mm": [
28.0,
67.0,
100.0,
30.0,
70.0,
104.0
],
"original_redo_executed": true
},
{
"case": "array-default-brep",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 3,
"all_elements_visible": true
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 3,
"shells": 3,
"faces": 18,
"volume_mm3": 864.0,
"native_volume_mm3": 864.0,
"com_mm": [
95.91666666666667,
219.94444444444446,
305.44444444444446
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 3,
"shells": 3,
"faces": 18,
"volume_mm3": 864.0000000000002,
"native_volume_mm3": 864.0000000000002,
"com_mm": [
95.91666666666667,
219.94444444444446,
305.44444444444446
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 3,
"shells": 3,
"faces": 18,
"volume_mm3": 864.0,
"native_volume_mm3": 864.0,
"com_mm": [
95.91666666666667,
219.94444444444446,
305.44444444444446
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 2.2737367544323206E-13,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "array-default-iges",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 3,
"all_elements_visible": true
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 0,
"shells": 0,
"faces": 18,
"volume_mm3": 0,
"native_volume_mm3": 864.0,
"com_mm": [
0.0,
0.0,
0.0
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"iges_topology_readback": "native sewShape of raw imported surfaces and closed-shell makeSolid",
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 3,
"shells": 3,
"faces": 18,
"volume_mm3": 864.0000000000002,
"native_volume_mm3": 864.0000000000002,
"com_mm": [
95.91666666666667,
219.94444444444446,
305.44444444444446
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 3,
"shells": 3,
"faces": 18,
"volume_mm3": 864.0,
"native_volume_mm3": 864.0,
"com_mm": [
95.91666666666669,
219.94444444444446,
305.44444444444446
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 2.2737367544323206E-13,
"com_distance_mm": 1.4210854715202004E-14,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "array-default-stl",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 3,
"all_elements_visible": true
},
"exact_snapshot_before_first_world_query": true,
"stl_facets": 36,
"volume_mm3": 864.0,
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
],
"original_redo_executed": true
},
{
"case": "array-explicit-brep",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 3,
"all_elements_visible": true
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 3,
"shells": 3,
"faces": 18,
"volume_mm3": 864.0,
"native_volume_mm3": 864.0,
"com_mm": [
95.91666666666667,
219.94444444444446,
305.44444444444446
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 3,
"shells": 3,
"faces": 18,
"volume_mm3": 864.0000000000002,
"native_volume_mm3": 864.0000000000002,
"com_mm": [
95.91666666666667,
219.94444444444446,
305.44444444444446
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 3,
"shells": 3,
"faces": 18,
"volume_mm3": 864.0,
"native_volume_mm3": 864.0,
"com_mm": [
95.91666666666667,
219.94444444444446,
305.44444444444446
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 2.2737367544323206E-13,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "array-explicit-iges",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 3,
"all_elements_visible": true
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 0,
"shells": 0,
"faces": 18,
"volume_mm3": 0,
"native_volume_mm3": 864.0,
"com_mm": [
0.0,
0.0,
0.0
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"iges_topology_readback": "native sewShape of raw imported surfaces and closed-shell makeSolid",
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 3,
"shells": 3,
"faces": 18,
"volume_mm3": 864.0000000000002,
"native_volume_mm3": 864.0000000000002,
"com_mm": [
95.91666666666667,
219.94444444444446,
305.44444444444446
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 3,
"shells": 3,
"faces": 18,
"volume_mm3": 864.0,
"native_volume_mm3": 864.0,
"com_mm": [
95.91666666666669,
219.94444444444446,
305.44444444444446
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 2.2737367544323206E-13,
"com_distance_mm": 1.4210854715202004E-14,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "array-explicit-stl",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 3,
"all_elements_visible": true
},
"exact_snapshot_before_first_world_query": true,
"stl_facets": 36,
"volume_mm3": 864.0,
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
],
"original_redo_executed": true
},
{
"case": "scaled_mirror_subassembly-default-brep",
"known_placements": {
"root": [
100,
200,
300,
90
],
"source_child_x": [
10,
30
],
"source_child_rotations_z": [
0,
90
],
"linked_subassembly_local_x": [
50,
200
],
"linked_subassembly_scales": [
2,
-1
],
"independent_occurrences": 4,
"independent_volume_mm3": 432
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 4,
"shells": 4,
"faces": 24,
"volume_mm3": 432.0,
"native_volume_mm3": 432.0,
"com_mm": [
97.91666666666669,
299.5833333333333,
303.3333333333333
],
"bounds_mm": [
94.00000000000001,
270.0,
296.0,
103.00000000000004,
390.0,
308.0
]
},
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 4,
"shells": 4,
"faces": 24,
"volume_mm3": 432.00000000000006,
"native_volume_mm3": 431.9999999999999,
"com_mm": [
97.91666666666667,
299.5833333333333,
303.3333333333333
],
"bounds_mm": [
94.0,
270.0,
296.0,
103.0,
390.0,
308.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 4,
"shells": 4,
"faces": 24,
"volume_mm3": 432.0,
"native_volume_mm3": 432.0,
"com_mm": [
97.91666666666669,
299.5833333333333,
303.3333333333333
],
"bounds_mm": [
94.00000000000001,
270.0,
296.0,
103.00000000000004,
390.0,
308.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 5.684341886080802E-14,
"com_distance_mm": 1.4210854715202004E-14,
"max_bound_delta_mm": 4.263256414560601E-14,
"matches": true
},
"original_redo_executed": true
},
{
"case": "scaled_mirror_subassembly-default-iges",
"known_placements": {
"root": [
100,
200,
300,
90
],
"source_child_x": [
10,
30
],
"source_child_rotations_z": [
0,
90
],
"linked_subassembly_local_x": [
50,
200
],
"linked_subassembly_scales": [
2,
-1
],
"independent_occurrences": 4,
"independent_volume_mm3": 432
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 0,
"shells": 0,
"faces": 24,
"volume_mm3": 0,
"native_volume_mm3": 432.0,
"com_mm": [
0.0,
0.0,
0.0
],
"bounds_mm": [
94.0,
270.0,
296.0,
103.0,
390.0,
308.0
]
},
"iges_topology_readback": "native sewShape of raw imported surfaces and closed-shell makeSolid",
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 4,
"shells": 4,
"faces": 24,
"volume_mm3": 432.00000000000006,
"native_volume_mm3": 431.9999999999999,
"com_mm": [
97.91666666666667,
299.5833333333333,
303.3333333333333
],
"bounds_mm": [
94.0,
270.0,
296.0,
103.0,
390.0,
308.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 4,
"shells": 4,
"faces": 24,
"volume_mm3": 432.0,
"native_volume_mm3": 432.0,
"com_mm": [
97.91666666666667,
299.5833333333333,
303.3333333333333
],
"bounds_mm": [
94.0,
270.0,
296.0,
103.0,
390.0,
308.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 5.684341886080802E-14,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "scaled_mirror_subassembly-default-stl",
"known_placements": {
"root": [
100,
200,
300,
90
],
"source_child_x": [
10,
30
],
"source_child_rotations_z": [
0,
90
],
"linked_subassembly_local_x": [
50,
200
],
"linked_subassembly_scales": [
2,
-1
],
"independent_occurrences": 4,
"independent_volume_mm3": 432
},
"exact_snapshot_before_first_world_query": true,
"stl_facets": 48,
"volume_mm3": 432.0,
"bounds_mm": [
94.0,
270.0,
296.0,
103.0,
390.0,
308.0
],
"original_redo_executed": true
},
{
"case": "scaled_mirror_subassembly-explicit-brep",
"known_placements": {
"root": [
100,
200,
300,
90
],
"source_child_x": [
10,
30
],
"source_child_rotations_z": [
0,
90
],
"linked_subassembly_local_x": [
50,
200
],
"linked_subassembly_scales": [
2,
-1
],
"independent_occurrences": 4,
"independent_volume_mm3": 432
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 4,
"shells": 4,
"faces": 24,
"volume_mm3": 432.0,
"native_volume_mm3": 432.0,
"com_mm": [
97.91666666666669,
299.5833333333333,
303.3333333333333
],
"bounds_mm": [
94.00000000000001,
270.0,
296.0,
103.00000000000004,
390.0,
308.0
]
},
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 4,
"shells": 4,
"faces": 24,
"volume_mm3": 432.00000000000006,
"native_volume_mm3": 431.9999999999999,
"com_mm": [
97.91666666666667,
299.5833333333333,
303.3333333333333
],
"bounds_mm": [
94.0,
270.0,
296.0,
103.0,
390.0,
308.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 4,
"shells": 4,
"faces": 24,
"volume_mm3": 432.0,
"native_volume_mm3": 432.0,
"com_mm": [
97.91666666666669,
299.5833333333333,
303.3333333333333
],
"bounds_mm": [
94.00000000000001,
270.0,
296.0,
103.00000000000004,
390.0,
308.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 5.684341886080802E-14,
"com_distance_mm": 1.4210854715202004E-14,
"max_bound_delta_mm": 4.263256414560601E-14,
"matches": true
},
"original_redo_executed": true
},
{
"case": "scaled_mirror_subassembly-explicit-iges",
"known_placements": {
"root": [
100,
200,
300,
90
],
"source_child_x": [
10,
30
],
"source_child_rotations_z": [
0,
90
],
"linked_subassembly_local_x": [
50,
200
],
"linked_subassembly_scales": [
2,
-1
],
"independent_occurrences": 4,
"independent_volume_mm3": 432
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 0,
"shells": 0,
"faces": 24,
"volume_mm3": 0,
"native_volume_mm3": 432.0,
"com_mm": [
0.0,
0.0,
0.0
],
"bounds_mm": [
94.0,
270.0,
296.0,
103.0,
390.0,
308.0
]
},
"iges_topology_readback": "native sewShape of raw imported surfaces and closed-shell makeSolid",
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 4,
"shells": 4,
"faces": 24,
"volume_mm3": 432.00000000000006,
"native_volume_mm3": 431.9999999999999,
"com_mm": [
97.91666666666667,
299.5833333333333,
303.3333333333333
],
"bounds_mm": [
94.0,
270.0,
296.0,
103.0,
390.0,
308.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 4,
"shells": 4,
"faces": 24,
"volume_mm3": 432.0,
"native_volume_mm3": 432.0,
"com_mm": [
97.91666666666667,
299.5833333333333,
303.3333333333333
],
"bounds_mm": [
94.0,
270.0,
296.0,
103.0,
390.0,
308.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 5.684341886080802E-14,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "scaled_mirror_subassembly-explicit-stl",
"known_placements": {
"root": [
100,
200,
300,
90
],
"source_child_x": [
10,
30
],
"source_child_rotations_z": [
0,
90
],
"linked_subassembly_local_x": [
50,
200
],
"linked_subassembly_scales": [
2,
-1
],
"independent_occurrences": 4,
"independent_volume_mm3": 432
},
"exact_snapshot_before_first_world_query": true,
"stl_facets": 48,
"volume_mm3": 432.0,
"bounds_mm": [
94.0,
270.0,
296.0,
103.0,
390.0,
308.0
],
"original_redo_executed": true
},
{
"case": "masked_array_virtual-default-brep",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 2,
"all_elements_visible": false,
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0,
"native_volume_mm3": 672.0,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0000000000002,
"native_volume_mm3": 672.0000000000002,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0,
"native_volume_mm3": 672.0,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 2.2737367544323206E-13,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "masked_array_virtual-default-iges",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 2,
"all_elements_visible": false,
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 0,
"shells": 0,
"faces": 12,
"volume_mm3": 0,
"native_volume_mm3": 672.0,
"com_mm": [
0.0,
0.0,
0.0
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"iges_topology_readback": "native sewShape of raw imported surfaces and closed-shell makeSolid",
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0000000000002,
"native_volume_mm3": 672.0000000000002,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0,
"native_volume_mm3": 672.0,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 2.2737367544323206E-13,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "masked_array_virtual-default-stl",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 2,
"all_elements_visible": false,
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"stl_facets": 24,
"volume_mm3": 672.0,
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
],
"original_redo_executed": true
},
{
"case": "masked_array_virtual-explicit-brep",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 2,
"all_elements_visible": false,
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0,
"native_volume_mm3": 672.0,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0000000000002,
"native_volume_mm3": 672.0000000000002,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0,
"native_volume_mm3": 672.0,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 2.2737367544323206E-13,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "masked_array_virtual-explicit-iges",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 2,
"all_elements_visible": false,
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 0,
"shells": 0,
"faces": 12,
"volume_mm3": 0,
"native_volume_mm3": 672.0,
"com_mm": [
0.0,
0.0,
0.0
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"iges_topology_readback": "native sewShape of raw imported surfaces and closed-shell makeSolid",
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0000000000002,
"native_volume_mm3": 672.0000000000002,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0,
"native_volume_mm3": 672.0,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 2.2737367544323206E-13,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "masked_array_virtual-explicit-stl",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 2,
"all_elements_visible": false,
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"stl_facets": 24,
"volume_mm3": 672.0,
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
],
"original_redo_executed": true
},
{
"case": "masked_array_expanded-default-brep",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 2,
"all_elements_visible": false,
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0,
"native_volume_mm3": 672.0,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0000000000002,
"native_volume_mm3": 672.0000000000002,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0,
"native_volume_mm3": 672.0,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 2.2737367544323206E-13,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "masked_array_expanded-default-iges",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 2,
"all_elements_visible": false,
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 0,
"shells": 0,
"faces": 12,
"volume_mm3": 0,
"native_volume_mm3": 672.0,
"com_mm": [
0.0,
0.0,
0.0
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"iges_topology_readback": "native sewShape of raw imported surfaces and closed-shell makeSolid",
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0000000000002,
"native_volume_mm3": 672.0000000000002,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0,
"native_volume_mm3": 672.0,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 2.2737367544323206E-13,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "masked_array_expanded-default-stl",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 2,
"all_elements_visible": false,
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"stl_facets": 24,
"volume_mm3": 672.0,
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
],
"original_redo_executed": true
},
{
"case": "masked_array_expanded-explicit-brep",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 2,
"all_elements_visible": false,
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0,
"native_volume_mm3": 672.0,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0000000000002,
"native_volume_mm3": 672.0000000000002,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0,
"native_volume_mm3": 672.0,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 2.2737367544323206E-13,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "masked_array_expanded-explicit-iges",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 2,
"all_elements_visible": false,
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 0,
"shells": 0,
"faces": 12,
"volume_mm3": 0,
"native_volume_mm3": 672.0,
"com_mm": [
0.0,
0.0,
0.0
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"iges_topology_readback": "native sewShape of raw imported surfaces and closed-shell makeSolid",
"comparison": {
"expected": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0000000000002,
"native_volume_mm3": 672.0000000000002,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 2,
"shells": 2,
"faces": 12,
"volume_mm3": 672.0,
"native_volume_mm3": 672.0,
"com_mm": [
95.60714285714286,
222.21428571428572,
305.85714285714283
],
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 2.2737367544323206E-13,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "masked_array_expanded-explicit-stl",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 2,
"all_elements_visible": false,
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"stl_facets": 24,
"volume_mm3": 672.0,
"bounds_mm": [
91.0,
200.0,
300.0,
100.0,
226.0,
312.0
],
"original_redo_executed": true
},
{
"case": "hidden_element-explicit-brep",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 1,
"all_elements_visible": false,
"explicitly_selected_hidden_element": "Array_i1",
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 191.99999999999997,
"native_volume_mm3": 191.99999999999997,
"com_mm": [
97.0,
212.0,
304.0
],
"bounds_mm": [
94.0,
210.0,
300.0,
100.0,
214.0,
308.0
]
},
"comparison": {
"expected": {
"type": "Solid",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 192.00000000000006,
"native_volume_mm3": 192.00000000000006,
"com_mm": [
97.00000000000001,
212.0,
304.0
],
"bounds_mm": [
94.0,
210.0,
300.0,
100.0,
214.0,
308.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 191.99999999999997,
"native_volume_mm3": 191.99999999999997,
"com_mm": [
97.0,
212.0,
304.0
],
"bounds_mm": [
94.0,
210.0,
300.0,
100.0,
214.0,
308.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 8.526512829121202E-14,
"com_distance_mm": 1.4210854715202004E-14,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "hidden_element-explicit-iges",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 1,
"all_elements_visible": false,
"explicitly_selected_hidden_element": "Array_i1",
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"raw_readback": {
"type": "Compound",
"valid": true,
"solids": 0,
"shells": 0,
"faces": 6,
"volume_mm3": 0,
"native_volume_mm3": 192.0,
"com_mm": [
0.0,
0.0,
0.0
],
"bounds_mm": [
94.0,
210.0,
300.0,
100.0,
214.0,
308.0
]
},
"iges_topology_readback": "native sewShape of raw imported surfaces and closed-shell makeSolid",
"comparison": {
"expected": {
"type": "Solid",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 192.00000000000006,
"native_volume_mm3": 192.00000000000006,
"com_mm": [
97.00000000000001,
212.0,
304.0
],
"bounds_mm": [
94.0,
210.0,
300.0,
100.0,
214.0,
308.0
]
},
"actual": {
"type": "Compound",
"valid": true,
"solids": 1,
"shells": 1,
"faces": 6,
"volume_mm3": 192.0,
"native_volume_mm3": 192.0,
"com_mm": [
97.00000000000001,
212.0,
304.0
],
"bounds_mm": [
94.0,
210.0,
300.0,
100.0,
214.0,
308.0
]
},
"missing_volume_mm3": 0.0,
"excess_volume_mm3": 0.0,
"volume_delta_mm3": 5.684341886080802E-14,
"com_distance_mm": 0.0,
"max_bound_delta_mm": 0.0,
"matches": true
},
"original_redo_executed": true
},
{
"case": "hidden_element-explicit-stl",
"known_placements": {
"root": [
100,
200,
300,
90
],
"array_local_x": [
0,
10,
20
],
"array_scales": [
1,
2,
3
],
"independent_occurrences": 1,
"all_elements_visible": false,
"explicitly_selected_hidden_element": "Array_i1",
"native_element_visibility": [
1,
0,
1
]
},
"exact_snapshot_before_first_world_query": true,
"stl_facets": 12,
"volume_mm3": 192.0,
"bounds_mm": [
94.0,
210.0,
300.0,
100.0,
214.0,
308.0
],
"original_redo_executed": true
},
{
"case": "post-native-writer-fault.brep",
"original_exact_payload_history_active_doc": true,
"original_redo_executed": true,
"old_destination_exact": true,
"temporary_cleanup_exact": true,
"native_writer_completed_before_injected_failure": true,
"before_first_world_query": true
},
{
"case": "post-native-writer-fault.iges",
"original_exact_payload_history_active_doc": true,
"original_redo_executed": true,
"old_destination_exact": true,
"temporary_cleanup_exact": true,
"native_writer_completed_before_injected_failure": true,
"before_first_world_query": true
},
{
"case": "post-native-writer-fault.stl",
"original_exact_payload_history_active_doc": true,
"original_redo_executed": true,
"old_destination_exact": true,
"temporary_cleanup_exact": true,
"native_writer_completed_before_injected_failure": true,
"before_first_world_query": true
},
{
"case": "all-hidden-array-rejection.brep",
"original_exact_payload_history_active_doc": true,
"original_redo_executed": true,
"old_destination_exact": true,
"temporary_cleanup_exact": true,
"empty_geometry_rejected": "Нет твердых тел для экспорта",
"before_first_world_query": true
},
{
"case": "all-hidden-array-rejection.iges",
"original_exact_payload_history_active_doc": true,
"original_redo_executed": true,
"old_destination_exact": true,
"temporary_cleanup_exact": true,
"empty_geometry_rejected": "Нет твердых тел для экспорта",
"before_first_world_query": true
},
{
"case": "all-hidden-array-rejection.stl",
"original_exact_payload_history_active_doc": true,
"original_redo_executed": true,
"old_destination_exact": true,
"temporary_cleanup_exact": true,
"empty_geometry_rejected": "Нет твердых тел для экспорта",
"before_first_world_query": true
}
]
}
},
{
"name": "export_rejects_non_solids",
"passed": true,
"status": "passed",
"detail": {
"rejected_selections": [
"Sketch.step",
"Sketch.iges",
"Sketch.brep",
"Sketch.stl",
"Empty.step",
"Empty.iges",
"Empty.brep",
"Empty.stl",
"Wire.step",
"Wire.iges",
"Wire.brep",
"Wire.stl",
"Mixed.step",
"Mixed.iges",
"Mixed.brep",
"Mixed.stl"
],
"existing_file_preserved": true
}
},
{
"name": "export_rejects_cached_failed_feature",
"passed": true,
"status": "passed",
"detail": {
"native_error": "Cannot create a pad with a total length of zero.",
"cached_volume_mm3": 999.9999999999998,
"rejected_exports": 16,
"independent_and_recovered_exports": true
}
},
{
"name": "assembly_solver_links_bom",
"passed": true,
"status": "passed",
"detail": {
"solver_status": 0,
"joint_types": [
"Fixed",
"Revolute"
],
"components": 3,
"bom_rows": [
{
"position": "1",
"parent_position": "",
"level": 0,
"part_number": "QI-001",
"name": "Плита с отверстиями",
"quantity": 1,
"quantity_total": 1,
"material": "Алюминий",
"density_kg_m3": 2700.0,
"unit_mass_kg": 0.15063419510513718,
"mass_kg": 0.15063419510513718,
"source_id": "QInventorAssembly#Body",
"source_name": "Body",
"source_doc": "QInventorAssembly",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorAssembly#Body|1",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Алюминий', 2700.0, 55790.4426315, 17430.7964474)",
"materials": [
"Алюминий"
]
},
{
"position": "2",
"parent_position": "",
"level": 0,
"part_number": "QI-002",
"name": "Штифт",
"quantity": 2,
"quantity_total": 2,
"material": "Сталь",
"density_kg_m3": 7850.000000000001,
"unit_mass_kg": 0.02903645284414249,
"mass_kg": 0.05807290568828498,
"source_id": "QInventorAssembly#Body001",
"source_name": "Body001",
"source_doc": "QInventorAssembly",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorAssembly#Body001|2",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 3698.91119034, 1486.85297109)",
"materials": [
"Сталь"
]
}
]
}
},
{
"name": "assembly_reopen_step",
"passed": true,
"status": "passed",
"detail": {
"reopened_joints": true,
"step_solids": 3
}
},
{
"name": "drawing_associativity",
"passed": true,
"status": "passed",
"detail": {
"views": 3,
"model_change_recomputed": true,
"gui_exports": true,
"direct_dxf_after_rapid_edits": true,
"dxf_front_width_mm": 100.0,
"dxf_front_height_mm": 50.0
}
},
{
"name": "complete_examples",
"passed": true,
"status": "passed",
"detail": {
"volumes_mm3": {
"bracket": 56743.36293856411,
"plate": 38743.362938564074,
"shaft": 45238.93421169302,
"pulley": 50265.48245743669
}
}
}
],
"artifacts": [
"C:\\Repos\\qinventor\\artifacts\\validation\\parametric-bracket.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\bracket.step",
"C:\\Repos\\qinventor\\artifacts\\validation\\solid.iges",
"C:\\Repos\\qinventor\\artifacts\\validation\\solid.brep",
"C:\\Repos\\qinventor\\artifacts\\validation\\solid.stl",
"C:\\Repos\\qinventor\\artifacts\\validation\\independent-good-body.step",
"C:\\Repos\\qinventor\\artifacts\\validation\\recovered-body.step",
"C:\\Repos\\qinventor\\artifacts\\validation\\assembly-bom.csv",
"C:\\Repos\\qinventor\\artifacts\\validation\\native-assembly.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\assembly.step",
"C:\\Repos\\qinventor\\artifacts\\validation\\associative-drawing.dxf",
"C:\\Repos\\qinventor\\artifacts\\validation\\associative-drawing.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\associative-drawing.svg",
"C:\\Repos\\qinventor\\artifacts\\validation\\associative-drawing.pdf"
],
"success": true
}
},
{
"name": "native_project_russian_label_suite",
"passed": true,
"result": {
"status": "passed",
"passed": 12,
"failed": 0,
"skipped": 0,
"checks": [
{
"name": "native_label_roundtrip",
"passed": true,
"status": "passed",
"detail": {
"native_open_label": "ascii-part",
"restored_label": "Деталь — русское имя № 1",
"sha256": "12bb1c1827f0e229c2abc3b2853fe287b4a8467dab7f5d5007e8b1f9948ab09e",
"file_unchanged": true
}
},
{
"name": "missing_invalid_other_formats",
"passed": true,
"status": "passed",
"detail": {
"rejected": 4,
"files_and_label_unchanged": true
}
},
{
"name": "malformed_xml_missing_label",
"passed": true,
"status": "passed",
"detail": {
"rejected": 5,
"child_label_ignored": true
}
},
{
"name": "reject_dtd_and_entities",
"passed": true,
"status": "passed",
"detail": {
"rejected_encodings": [
"utf-8",
"utf-16",
"utf-32"
]
}
},
{
"name": "reject_oversize_without_extraction",
"passed": true,
"status": "passed",
"detail": {
"max_xml_bytes": 8388608,
"oversize_rejected": true,
"no_extraction": true
}
},
{
"name": "gui_modified_state_and_history",
"passed": true,
"status": "passed",
"detail": {
"clean_preserved": true,
"dirty_preserved": true,
"undo_redo_unchanged": true,
"file_unchanged": true,
"title_marker_after_recompute": true,
"title_marker_cleared_on_save": true,
"native_save_return": null,
"states": {
"before_native_save": {
"gui_document_modified": true,
"window_modified": true
},
"after_native_save": {
"gui_document_modified": true,
"window_modified": true
},
"before_qi_save_as": {
"gui_document_modified": true,
"window_modified": true
},
"after_qi_save_as": {
"gui_document_modified": false,
"window_modified": false
},
"before_qi_save": {
"gui_document_modified": true,
"window_modified": true
},
"after_qi_save": {
"gui_document_modified": false,
"window_modified": false
},
"before_failed_save": {
"gui_document_modified": true,
"window_modified": true
},
"after_failed_save": {
"gui_document_modified": true,
"window_modified": true
},
"before_cancel_save_as": {
"gui_document_modified": true,
"window_modified": true
},
"after_cancel_save_as": {
"gui_document_modified": true,
"window_modified": true
}
},
"saved_geometry_reopened_mm": [
19,
23
],
"failed_save_errors": [
{
"title": "QInventor",
"text": "Не удалось выполнить команду. Проверьте выбранную геометрию и параметры."
}
],
"failed_and_cancelled_saves_preserve_dirty_history_and_file": true
}
},
{
"name": "gui_qi_open_fcstd",
"passed": true,
"status": "passed",
"detail": {
"suffix": ".fcstd",
"document": "ascii_part1",
"native_modified": false,
"opened_modified": false,
"geometry": {
"volume_mm3": 999.9999999999998
},
"saved_russian_label": "Деталь — русское имя № 1",
"existing_unsaved_edits_preserved": true,
"source_unchanged": true
}
},
{
"name": "gui_qi_open_step",
"passed": true,
"status": "passed",
"detail": {
"suffix": ".step",
"document": "Unnamed",
"native_modified": true,
"opened_modified": true,
"geometry": {
"volume_mm3": 999.9999999999998
},
"source_unchanged": true
}
},
{
"name": "gui_qi_open_iges",
"passed": true,
"status": "passed",
"detail": {
"suffix": ".iges",
"document": "Unnamed",
"native_modified": true,
"opened_modified": true,
"geometry": {
"volume_mm3": 999.9999999999998
},
"source_unchanged": true
}
},
{
"name": "gui_qi_open_brep",
"passed": true,
"status": "passed",
"detail": {
"suffix": ".brep",
"document": "Обмен",
"native_modified": true,
"opened_modified": true,
"geometry": {
"volume_mm3": 999.9999999999998
},
"source_unchanged": true
}
},
{
"name": "gui_qi_open_stl",
"passed": true,
"status": "passed",
"detail": {
"suffix": ".stl",
"document": "Unnamed",
"native_modified": true,
"opened_modified": true,
"geometry": {
"facets": 12,
"dimensions_mm": [
10.0,
10.0,
10.0
]
},
"source_unchanged": true
}
},
{
"name": "gui_qi_open_failures",
"passed": true,
"status": "passed",
"detail": {
"rejected": 6,
"errors": [
{
"title": "QInventor",
"text": "Формат файла не поддерживается. Выберите FCStd, STEP, IGES, BREP или STL."
},
{
"title": "QInventor",
"text": "Не удалось прочитать файл модели. Проверьте его наличие и доступ к нему."
},
{
"title": "QInventor",
"text": "Файл модели пуст."
},
{
"title": "QInventor",
"text": "Не удалось открыть модель. Файл повреждён или его содержимое не соответствует формату."
},
{
"title": "QInventor",
"text": "Не удалось открыть модель. Файл повреждён или его содержимое не соответствует формату."
},
{
"title": "QInventor",
"text": "Не удалось прочитать файл модели. Проверьте его наличие и доступ к нему."
}
],
"previous_model_preserved": true,
"cancel_preserved": true
}
}
],
"artifacts": [
"C:\\Repos\\qinventor\\artifacts\\validation\\ascii-part.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\title-indicator.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\Обмен.step",
"C:\\Repos\\qinventor\\artifacts\\validation\\Обмен.iges",
"C:\\Repos\\qinventor\\artifacts\\validation\\Обмен.brep",
"C:\\Repos\\qinventor\\artifacts\\validation\\Обмен.stl"
],
"source": "C:\\Repos\\qinventor\\src\\QInventor\\qi_io.py",
"success": true
}
},
{
"name": "unified_extrude_suite",
"passed": true,
"result": {
"passed": true,
"count": 41,
"gui": true,
"scenarios": [
{
"name": "XY forward",
"passed": true,
"volume": 239.99999999999997,
"bbox": [
10.0,
6.0,
4.0
]
},
{
"name": "XY reverse",
"passed": true,
"volume": 239.99999999999997,
"bbox": [
10.0,
6.0,
4.0
]
},
{
"name": "XY symmetric",
"passed": true,
"volume": 239.99999999999997,
"bbox": [
10.0,
6.0,
4.0
]
},
{
"name": "XZ plane placement",
"passed": true,
"volume": 240.0000000000001,
"bbox": [
10.000000000000002,
4.000000000000001,
6.000000000000002
]
},
{
"name": "YZ plane placement",
"passed": true,
"volume": 240.00000000000006,
"bbox": [
4.000000000000002,
6.000000000000002,
10.000000000000002
]
},
{
"name": "Nested wires preserve hole",
"passed": true,
"volume": 1143.5397259066845
},
{
"name": "Sketch edits, length expressions and FCStd reopen",
"passed": true,
"volumeAfterReopenAndEdit": 763.4070148223199,
"file": "C:\\Repos\\qinventor\\artifacts\\validation\\parametric-extrusion.FCStd"
},
{
"name": "Join against previous solid Body Tip",
"passed": true,
"volume": 4500.0,
"base": "Pad"
},
{
"name": "Cut reverse against previous solid Body Tip",
"passed": true,
"volume": 3915.1769983530758,
"base": "Pad"
},
{
"name": "Cut through all",
"passed": true,
"volume": 3717.256661176918,
"base": "Pad"
},
{
"name": "True OCCT intersection",
"passed": true,
"volume": 399.9999999999999,
"base": "Pad"
},
{
"name": "Through all recalculates extent after base change",
"passed": true,
"volumeAfterBaseChange": 5947.610657883069
},
{
"name": "New Solid is independent and preserves body placement",
"passed": true,
"bodies": 2
},
{
"name": "New Solid remains a sibling inside transformed App Part",
"passed": true,
"samePartSiblingAndLocalPlacementPreserved": true
},
{
"name": "Open profile and invalid lengths leave document unchanged",
"passed": true,
"objectsUnchanged": true
},
{
"name": "Disjoint booleans are rejected before mutation",
"passed": true,
"objectsUnchanged": true
},
{
"name": "Native undo redo retains geometry",
"passed": true,
"undoRedo": true
},
{
"name": "Asymmetric persisted distances, expressions, undo and reopen",
"passed": true,
"length2ExpressionUndoAndReopen": true,
"volumeAfterReopen": 899.9999999999999
},
{
"name": "To face planar termination and support movement",
"passed": true,
"slope": 0,
"reverse": false,
"volumeAfterPlaneMove": 719.9999999999999
},
{
"name": "To face exact oblique termination",
"passed": true,
"slope": 0.5,
"reverse": false,
"volumeAfterPlaneMove": 870.0000000000003
},
{
"name": "To face exact oblique reverse termination",
"passed": true,
"slope": 0.5,
"reverse": true,
"volumeAfterPlaneMove": 870.0
},
{
"name": "To face exact oblique cap preserves nested holes",
"passed": true,
"obliqueAnnulusVolume": 5717.698630133525
},
{
"name": "To face finite support coverage and explicit extension",
"passed": true,
"finiteBoundaryRejected": true,
"extendedPlaneVolume": 750.0000000000002
},
{
"name": "To face cut references previous solid and survives undo redo",
"passed": true,
"sameBodyFaceReferenceWithoutDependencyCycle": true
},
{
"name": "To face finite boundary honors holes in termination support",
"passed": true,
"terminationFaceHoleRespected": true
},
{
"name": "To face across transformed containers and FCStd reopen",
"passed": true,
"globalPlacementsAndReopen": true,
"volumeAfterReopen": 968.2982453146791
},
{
"name": "Invalid target surfaces, directions and second length rejected in Russian",
"passed": true,
"invalidTargetsAndDirectionsLeaveDocumentUnchanged": true
},
{
"name": "To next true planar termination on preceding solid",
"passed": true,
"nextWholePlanarFace": true,
"volumeAfterBaseChange": 5717.256661176918
},
{
"name": "To next explicit terminator tracks nearest complete face",
"passed": true,
"selectedTerminatorRegenerates": true,
"volume": 4780.000000000001
},
{
"name": "To next rejects ambiguous crossing support planes",
"passed": true,
"ambiguousCrossingPlanesRejected": true
},
{
"name": "To next explicitly rejects curved terminators",
"passed": true,
"curvedNextLimitationExplicit": true
},
{
"name": "Changing operation moves real history between solid bodies with undo redo",
"passed": true,
"operationChangeMovesFeatureAndUndoRestoresBodies": true
},
{
"name": "GUI real preview update and cancel rollback",
"passed": true,
"previewDeleted": true,
"visibilityRestored": true
},
{
"name": "GUI accept, parameter edit and undo",
"passed": true,
"acceptPreviewDeleted": true,
"editUndo": true
},
{
"name": "GUI preview respects sketch and body placements",
"passed": true,
"rotatedSketchAndTranslatedBody": true
},
{
"name": "GUI Control.showDialog and selected profile",
"passed": true,
"nativeTaskDialog": true,
"nativeOkCancelButtons": true,
"nativeFeatureEdit": true,
"screenshot": "C:\\Repos\\qinventor\\artifacts\\validation\\extrusion-task-panel.png"
},
{
"name": "GUI asymmetric distances and direction inversion",
"passed": true,
"asymmetricSwapPreviewAcceptEditUndo": true
},
{
"name": "GUI native selection of oblique face, automatic extension and edit undo",
"passed": true,
"nativeFaceSelectionAndEditUndo": true,
"previewEqualsAcceptedSolid": true,
"screenshot": "C:\\Repos\\qinventor\\artifacts\\validation\\extrusion-to-oblique-face.png"
},
{
"name": "GUI selected next-face terminator",
"passed": true,
"nextTerminatorSelectionPreviewAcceptUndo": true
},
{
"name": "GUI invalid target rolls back and cancels cleanly",
"passed": true,
"invalidTargetAcceptRollbackAndCancel": true
},
{
"name": "GUI native operation edits migrate solid history and undo",
"passed": true,
"nativeOperationChangeAndBodyMigrationUndo": true
}
]
}
},
{
"name": "typed_parameter_editor_suite",
"passed": true,
"result": {
"passed": true,
"count": 9,
"gui": true,
"checks": [
{
"name": "Signed coordinates, zero and undo redo",
"passed": true,
"evidence": {
"signed_x_mm": -18,
"zero_y_mm": 0,
"native_undo_redo": true
}
},
{
"name": "Native degree and radian angle units",
"passed": true,
"evidence": {
"editor_unit": "degrees",
"kernel_constraint_unit": "radians",
"signed_angle_degrees": -30
}
},
{
"name": "Indexed and named formulas remain read only",
"passed": true,
"evidence": {
"indexed_and_named_formula_paths": [
[
".Constraints.РадиусКруга",
"4 mm"
],
[
".Constraints.ЦентрX",
"SourceSizes.X"
]
],
"no_op_preserves_undo": true,
"formula_updates_still_associative": true
}
},
{
"name": "Native reference dimensions remain read only",
"passed": true,
"evidence": {
"reference_radius_read_only": true,
"rejected_edit_is_atomic": true
}
},
{
"name": "Body VarSet delegation and user formulas",
"passed": true,
"evidence": {
"internal_delegation_remains_editable": true,
"source_formula_read_only": true,
"overridden_body_formula_read_only": true
}
},
{
"name": "Invalid values and dimensional units rejected atomically",
"passed": true,
"evidence": {
"invalid_numbers_units_unknown_parameters_rejected": true,
"all_inputs_atomic": true
}
},
{
"name": "Typed parameter FCStd persistence",
"passed": true,
"evidence": {
"native_project": "C:\\Repos\\qinventor\\artifacts\\validation\\typed-parameters.FCStd",
"typed_metadata_and_formulas_survive_reopen": true
}
},
{
"name": "Drawing refuses cached invalid source geometry",
"passed": true,
"evidence": {
"cached_invalid_source_rejected_before_document_mutation": true,
"recovered_source_creates_three_native_views": true
}
},
{
"name": "Qt parameter editor preserves readonly values, precision and undo",
"passed": true,
"evidence": {
"screenshot": "C:\\Repos\\qinventor\\artifacts\\validation\\typed-parameter-dialog.png",
"actual_apply_button": true,
"untouched_precision_preserved": true,
"one_native_undo_step": true
}
}
]
}
},
{
"name": "document_parameter_table_kernel_suite",
"passed": true,
"result": {
"passed": true,
"count": 16,
"checks": [
{
"name": "Discover native model sources and stable identities",
"passed": true,
"evidence": {
"native_controller_source": true,
"no_discovery_mutation": true,
"label_independent_ids": true,
"rows": 11
}
},
{
"name": "Native user parameter types and Russian literals",
"passed": true,
"evidence": {
"native_types": [
"Distance (signed length)",
"Angle",
"Float"
],
"unit_conversions": true,
"russian_literals": true,
"one_undo_creation": true
}
},
{
"name": "Create chain and model bindings in one batch",
"passed": true,
"evidence": {
"add_bind_chain_atomic": true,
"native_expressions": true,
"kernel_volume_mm3": 6433.9817545518945,
"undo_redo": true
}
},
{
"name": "No-op and foreign CAD transactions",
"passed": true,
"evidence": {
"numeric_noop_no_undo": true,
"foreign_empty_and_pending_transaction_preserved": true
}
},
{
"name": "Reject invalid inputs without losing existing redo",
"passed": true,
"evidence": {
"rejected_cases": 18,
"existing_redo_branch_usable": true,
"native_clamping_rejected": true
}
},
{
"name": "Validate native expression dimensions",
"passed": true,
"evidence": {
"native_expression_quantity_checks": 4,
"native_functions_and_unit_conversion": true
}
},
{
"name": "Native syntax missing references and cycles",
"passed": true,
"evidence": {
"native_syntax_missing_divide_zero_self_and_cycle_rejected": true
}
},
{
"name": "Native rename and transactional comments",
"passed": true,
"evidence": {
"native_dependency_rename": true,
"comment_metadata_transactional": true,
"comment_only_undo": true
}
},
{
"name": "Referenced delete and clear formulas",
"passed": true,
"evidence": {
"referenced_delete_rejected_with_redo": true,
"native_cached_dangling_formula_detected": true,
"unbind_and_delete_same_batch": true,
"clear_preserves_evaluated_value": true
}
},
{
"name": "Unnamed angular and reference constraints",
"passed": true,
"evidence": {
"unnamed_native_paths": true,
"degrees_not_radians": true,
"reference_readonly": true
}
},
{
"name": "Native solver and cached shape errors",
"passed": true,
"evidence": {
"native_unsolvable_constraints_rejected": true,
"native_invalid_feature_with_cached_valid_shape_rejected": true,
"rejected_kernel_edits_preserve_redo": true
}
},
{
"name": "FCStd persistence and continued parametric rebuild",
"passed": true,
"evidence": {
"file": "C:\\Repos\\qinventor\\artifacts\\validation\\document-parameters.FCStd",
"native_saved_formulas_comments_values": true,
"reopened_edit_rebuilds_solid": true
}
},
{
"name": "New native document-qualified expressions",
"passed": true,
"evidence": {
"new_qualified_expression_reads_proposed_values": true,
"rejected_qualified_expression_preserves_redo": true,
"native_quoted_document_and_object_labels": true,
"raw_cyrillic_document_and_object_identifiers": true
}
},
{
"name": "Cross-document consumers and global Undo",
"passed": true,
"evidence": {
"external_consumers_recomputed": true,
"native_global_undo_redo": true,
"both_document_redo_preserved_after_rejected_delete": true,
"external_rename_dependency_preserved": true
}
},
{
"name": "Real document cycles and FCStd requirements",
"passed": true,
"evidence": {
"real_unsaved_owner_and_target_rejected_before_mutation": true,
"valid_saved_external_binding": true,
"object_acyclic_document_cycle_rejected": true,
"redo_preserved": true,
"first_external_bound_user_parameter_preserves_source_name": true
}
},
{
"name": "Generated plate rules and grouped native drawing",
"passed": true,
"evidence": {
"generated_hole_fit_rules_preserved": true,
"group_does_not_reimport_techdraw_in_clone": true,
"real_page_and_group_preserved": true,
"clone_cad_objects": 15
}
}
],
"summary": {
"total": 16,
"passed": 16,
"failed": 0
},
"gui_exercised": false
}
},
{
"name": "native_parameter_preflight_fidelity_suite",
"passed": true,
"result": {
"passed": true,
"count": 10,
"checks": [
{
"name": "Persistent topology rejects before live and retains executable Redo",
"passed": true,
"evidence": {
"rejections": [
{
"message": "Перестроение объекта «FaceProfile» завершилось ошибкой: AttachEngine3D: subshape not found Groove.?Face8",
"original_exact_unchanged": true,
"undo": 0,
"redo": 1
},
{
"message": "Перестроение объекта «FaceProfile» завершилось ошибкой: AttachEngine3D: subshape not found Groove.?Face8",
"original_exact_unchanged": true,
"undo": 0,
"redo": 1
}
],
"original_redo_executed": true,
"native_redo_x_mm": 110.0
}
},
{
"name": "Valid reference retaining Pocket edit native shapes Undo Redo",
"passed": true,
"evidence": {
"volume_mm3": 1809.5573684677208,
"undo_native_shape_comparison": {
"revolution": {
"volume_mm3": 2010.6192982974676,
"area_mm2": 1023.7167544041137,
"bounds_mm": [
-8.0,
0.0,
-8.0,
8.0,
20.0,
9.797174393178826E-16
],
"volume_weighted_solid_com_mm": [
7.953604365817317E-17,
9.999999999999998,
-3.3953054526271003
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"groove": {
"volume_mm3": 1834.6901096964393,
"area_mm2": 1070.5486074759096,
"bounds_mm": [
-8.0,
0.0,
-8.0,
8.0,
20.0,
9.79718964375792E-16
],
"volume_weighted_solid_com_mm": [
9.325808307180692E-17,
10.0,
-3.2906556270324296
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"pocket": {
"volume_mm3": 1815.8405537749002,
"area_mm2": 1077.3981633974483,
"bounds_mm": [
-8.0,
0.0,
-8.0,
8.0,
20.0,
9.79718964375792E-16
],
"volume_weighted_solid_com_mm": [
-5.936976608789613E-17,
9.911764705882351,
-3.3160033356539773
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"body_local": {
"volume_mm3": 1815.8405537749006,
"area_mm2": 1077.3981633974483,
"bounds_mm": [
-6.928203230275509,
16.0,
22.0,
16.92820323027551,
41.32050807568878,
30.000000000000004
],
"volume_weighted_solid_com_mm": [
5.044117647058824,
28.583840031628114,
26.683996664346022
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"body_world": {
"volume_mm3": 1815.840553774901,
"area_mm2": 1077.398163397449,
"bounds_mm": [
58.67949192431122,
193.07179676972447,
322.0,
84.0,
216.9282032302755,
330.0
],
"volume_weighted_solid_com_mm": [
71.41615996837189,
205.0441176470588,
326.683996664346
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"occurrence_a": {
"volume_mm3": 1815.840553774902,
"area_mm2": 1077.398163397449,
"bounds_mm": [
958.6794919243113,
43.071796769724486,
62.0,
984.0,
66.92820323027551,
70.0
],
"volume_weighted_solid_com_mm": [
971.4161599683719,
55.04411764705882,
66.68399666434603
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"occurrence_b": {
"volume_mm3": 1815.8405537749024,
"area_mm2": 1077.398163397449,
"bounds_mm": [
1016.0,
133.0717967697245,
62.0,
1041.3205080756888,
156.92820323027553,
70.0
],
"volume_weighted_solid_com_mm": [
1028.5838400316281,
144.9558823529412,
66.68399666434603
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"assembly_world": {
"volume_mm3": 3631.6811075498035,
"area_mm2": 2154.796326794898,
"bounds_mm": [
958.6794919243113,
43.071796769724486,
62.0,
1041.3205080756888,
156.92820323027553,
70.0
],
"volume_weighted_solid_com_mm": [
1000.0,
100.00000000000001,
66.68399666434603
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
}
},
"redo_native_shape_comparison": {
"revolution": {
"volume_mm3": 2010.6192982974676,
"area_mm2": 1023.7167544041137,
"bounds_mm": [
-8.0,
0.0,
-8.0,
8.0,
20.0,
9.797174393178826E-16
],
"volume_weighted_solid_com_mm": [
7.953604365817317E-17,
9.999999999999998,
-3.3953054526271003
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"groove": {
"volume_mm3": 1834.6901096964393,
"area_mm2": 1070.5486074759096,
"bounds_mm": [
-8.0,
0.0,
-8.0,
8.0,
20.0,
9.79718964375792E-16
],
"volume_weighted_solid_com_mm": [
9.325808307180692E-17,
10.0,
-3.2906556270324296
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"pocket": {
"volume_mm3": 1809.5573684677208,
"area_mm2": 1079.681348704628,
"bounds_mm": [
-8.0,
0.0,
-8.0,
8.0,
20.0,
1.133107779529596E-15
],
"volume_weighted_solid_com_mm": [
-1.6107560374667792E-17,
9.888888888888888,
-3.3245699223640366
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"body_local": {
"volume_mm3": 1809.5573684677204,
"area_mm2": 1079.681348704628,
"bounds_mm": [
-6.928203230275509,
16.0,
22.0,
16.92820323027551,
41.32050807568878,
30.000000000000004
],
"volume_weighted_solid_com_mm": [
5.055555555555555,
28.564028992979452,
26.675430077635962
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"body_world": {
"volume_mm3": 1809.5573684677215,
"area_mm2": 1079.6813487046286,
"bounds_mm": [
58.67949192431122,
193.07179676972447,
322.0,
84.0,
216.9282032302755,
330.0
],
"volume_weighted_solid_com_mm": [
71.43597100702056,
205.05555555555554,
326.67543007763595
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"occurrence_a": {
"volume_mm3": 1809.5573684677222,
"area_mm2": 1079.6813487046286,
"bounds_mm": [
958.6794919243113,
43.071796769724486,
62.0,
984.0,
66.92820323027551,
70.0
],
"volume_weighted_solid_com_mm": [
971.4359710070205,
55.05555555555554,
66.67543007763597
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"occurrence_b": {
"volume_mm3": 1809.5573684677233,
"area_mm2": 1079.6813487046286,
"bounds_mm": [
1016.0,
133.0717967697245,
62.0,
1041.3205080756888,
156.92820323027553,
70.0
],
"volume_weighted_solid_com_mm": [
1028.5640289929795,
144.94444444444446,
66.67543007763597
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"assembly_world": {
"volume_mm3": 3619.1147369354444,
"area_mm2": 2159.3626974092567,
"bounds_mm": [
958.6794919243113,
43.071796769724486,
62.0,
1041.3205080756888,
156.92820323027553,
70.0
],
"volume_weighted_solid_com_mm": [
1000.0,
100.00000000000001,
66.67543007763597
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
}
}
}
},
{
"name": "Valid native270 without face support",
"passed": true,
"evidence": {
"native_type": "PartDesign::Revolution",
"actual_volume_mm3": 706.8583470577034,
"scope": "No downstream face attachment; 270 is not generally invalid"
}
},
{
"name": "Ordinary user SheetPython remains genuine model input",
"passed": true,
"evidence": {
"actual_input_type": "Spreadsheet::SheetPython",
"native_input_contents_preserved": {
"A1": "=4 mm",
"alias": "Height"
},
"cad": {
"parameter_key": "Parameters:QIHeight",
"height_mm": 8.0,
"volume_mm3": 48.0
},
"rejection": {
"message": "Не удалось применить параметры: Property 'MissingAlias' not found in 'UserInput.MissingAlias'",
"original_exact_unchanged": true,
"undo": 1,
"redo": 0
}
}
},
{
"name": "Parameters after real drawing BOM source cells mass and direct DXF",
"passed": true,
"evidence": {
"initial": {
"parameter_key": "Parameters:QIHeight",
"height_mm": 4.0,
"volume_mm3": 24.0,
"mass_kg": 0.0001884,
"cells": {
"A1": "'Поз.",
"A2": "'1",
"B1": "'Обозначение",
"B2": "'PARAM-BOX",
"C1": "'Наименование",
"C2": "'Брусок",
"C3": "'Итого",
"D1": "'Кол.",
"D2": "1",
"E1": "'Материал",
"E2": "'Сталь",
"F1": "'Масса, кг",
"F2": "'0,0001884",
"F3": "'0,0001884"
},
"actual_mass_cell": "'0,0001884"
},
"immediate": {
"parameter_key": "Parameters:QIHeight",
"height_mm": 8.0,
"volume_mm3": 48.0,
"mass_kg": 0.0003768,
"cells": {
"A1": "'Поз.",
"A2": "'1",
"B1": "'Обозначение",
"B2": "'PARAM-BOX",
"C1": "'Наименование",
"C2": "'Брусок",
"C3": "'Итого",
"D1": "'Кол.",
"D2": "1",
"E1": "'Материал",
"E2": "'Сталь",
"F1": "'Масса, кг",
"F2": "'0,0003768",
"F3": "'0,0003768"
},
"actual_mass_cell": "'0,0003768"
},
"one_native_undo_step": true,
"undo": {
"parameter_key": "Parameters:QIHeight",
"height_mm": 4.0,
"volume_mm3": 24.0,
"mass_kg": 0.0001884,
"cells": {
"A1": "'Поз.",
"A2": "'1",
"B1": "'Обозначение",
"B2": "'PARAM-BOX",
"C1": "'Наименование",
"C2": "'Брусок",
"C3": "'Итого",
"D1": "'Кол.",
"D2": "1",
"E1": "'Материал",
"E2": "'Сталь",
"F1": "'Масса, кг",
"F2": "'0,0001884",
"F3": "'0,0001884"
},
"actual_mass_cell": "'0,0001884"
},
"redo": {
"parameter_key": "Parameters:QIHeight",
"height_mm": 8.0,
"volume_mm3": 48.0,
"mass_kg": 0.0003768,
"cells": {
"A1": "'Поз.",
"A2": "'1",
"B1": "'Обозначение",
"B2": "'PARAM-BOX",
"C1": "'Наименование",
"C2": "'Брусок",
"C3": "'Итого",
"D1": "'Кол.",
"D2": "1",
"E1": "'Материал",
"E2": "'Сталь",
"F1": "'Масса, кг",
"F2": "'0,0003768",
"F3": "'0,0003768"
},
"actual_mass_cell": "'0,0003768"
},
"actual_direct_DXF": [
{
"path": "C:\\Repos\\qinventor\\artifacts\\validation\\integrated-height8-direct.dxf",
"sha256": "2a7b7cf2ea0fab6b75c3feedbfd8c7aacc1d0c144dbcf8854093fade825ae880",
"texts": [
"Поз.",
"1",
"Обозначение",
"PARAM-BOX",
"Наименование",
"Брусок",
"Итого",
"Кол.",
"1",
"Материал",
"Сталь",
"Масса, кг",
"0,0003768",
"0,0003768"
],
"actual_native_front_width_mm": 2.0,
"actual_native_front_height_mm": 8.0
},
{
"path": "C:\\Repos\\qinventor\\artifacts\\validation\\integrated-height4-undo-direct.dxf",
"sha256": "446acedb1f778e66001001b0b48c2f8560c27c44c8247e9b7e3732d930169465",
"texts": [
"Поз.",
"1",
"Обозначение",
"PARAM-BOX",
"Наименование",
"Брусок",
"Итого",
"Кол.",
"1",
"Материал",
"Сталь",
"Масса, кг",
"0,0001884",
"0,0001884"
],
"actual_native_front_width_mm": 2.0,
"actual_native_front_height_mm": 4.0
},
{
"path": "C:\\Repos\\qinventor\\artifacts\\validation\\integrated-height8-redo-direct.dxf",
"sha256": "2a7b7cf2ea0fab6b75c3feedbfd8c7aacc1d0c144dbcf8854093fade825ae880",
"texts": [
"Поз.",
"1",
"Обозначение",
"PARAM-BOX",
"Наименование",
"Брусок",
"Итого",
"Кол.",
"1",
"Материал",
"Сталь",
"Масса, кг",
"0,0003768",
"0,0003768"
],
"actual_native_front_width_mm": 2.0,
"actual_native_front_height_mm": 8.0
}
],
"GUI_parameter_Apply_unproven_here": true
}
},
{
"name": "Own output used as native CAD input is guarded before live",
"passed": true,
"evidence": {
"native_input_expression": "DrawingBOM.D2",
"valid_native_noncyclic_fixture": true,
"rejection": {
"message": "Лист спецификации «Данные спецификации» используется как вход «Размеры — Брусок001». Такую связь необходимо отделить от выходной спецификации перед изменением параметров",
"original_exact_unchanged": true,
"undo": 0,
"redo": 1
},
"original_redo_executed": true
}
},
{
"name": "Native drawing scale and ordinary BOM cell expressions validate before live",
"passed": true,
"evidence": {
"native_front_scale_expression_and_BOM_note_delete_rejection": {
"message": "Не удалось применить параметры: Property 'ViewScale' not found in 'QIUserParameters.ViewScale'",
"original_exact_unchanged": true,
"undo": 5,
"redo": 1
},
"original_scale_redo_executed": true,
"valid_change_has_one_native_undo": true,
"first_undo_before_recompute": {
"present": true,
"type": "App::PropertyFloat",
"value": 2.2,
"formula": "=QIUserParameters.ViewScale * 2"
},
"undo_before_recompute": {
"present": true,
"type": "App::PropertyFloat",
"value": 2.4,
"formula": "=QIUserParameters.ViewScale * 2"
},
"redo_before_recompute": {
"present": true,
"type": "App::PropertyFloat",
"value": 2.6,
"formula": "=QIUserParameters.ViewScale * 2"
},
"isolated_undo_before_recompute": {
"present": true,
"type": "App::PropertyFloat",
"value": 2.6,
"formula": "=QIUserParameters.ViewScale * 2"
},
"BOM_user_note_formula_preserved": "=QIUserParameters.ViewScale * 2",
"isolated_BOM_user_note_delete_rejection": {
"message": "Перестроение объекта «Данные спецификации» завершилось ошибкой: One or more cells failed contains errors.",
"original_exact_unchanged": true,
"undo": 7,
"redo": 1
},
"isolated_BOM_user_note_original_redo_executed": true
}
},
{
"name": "Native Spreadsheet and own BOM cell type changes preserve executable history",
"passed": true,
"evidence": [
{
"kind": "Spreadsheet::Sheet",
"genuine_CAD_input": true,
"integer_to_float_rejection": {
"message": "Изменение параметров меняет тип вычисленной ячейки «UserInput.H1»; штатная отмена не сохраняет такую ячейку. Сохраните тип результата её формулы перед изменением параметров",
"original_exact_unchanged": true,
"undo": 1,
"redo": 1
},
"original_redo_x_mm": 11.0,
"stable_float_change_one_undo": true,
"undo_before_recompute": {
"present": true,
"type": "App::PropertyFloat",
"value": 2.2,
"formula": "=QIUserParameters.Scale * 2"
},
"redo_before_recompute": {
"present": true,
"type": "App::PropertyFloat",
"value": 2.4,
"formula": "=QIUserParameters.Scale * 2"
},
"float_to_integer_rejection": {
"message": "Изменение параметров меняет тип вычисленной ячейки «UserInput.H1»; штатная отмена не сохраняет такую ячейку. Сохраните тип результата её формулы перед изменением параметров",
"original_exact_unchanged": true,
"undo": 3,
"redo": 0
}
},
{
"kind": "Spreadsheet::SheetPython",
"genuine_CAD_input": true,
"integer_to_float_rejection": {
"message": "Изменение параметров меняет тип вычисленной ячейки «UserInput.H1»; штатная отмена не сохраняет такую ячейку. Сохраните тип результата её формулы перед изменением параметров",
"original_exact_unchanged": true,
"undo": 1,
"redo": 1
},
"original_redo_x_mm": 11.0,
"stable_float_change_one_undo": true,
"undo_before_recompute": {
"present": true,
"type": "App::PropertyFloat",
"value": 2.2,
"formula": "=QIUserParameters.Scale * 2"
},
"redo_before_recompute": {
"present": true,
"type": "App::PropertyFloat",
"value": 2.4,
"formula": "=QIUserParameters.Scale * 2"
},
"float_to_integer_rejection": {
"message": "Изменение параметров меняет тип вычисленной ячейки «UserInput.H1»; штатная отмена не сохраняет такую ячейку. Сохраните тип результата её формулы перед изменением параметров",
"original_exact_unchanged": true,
"undo": 3,
"redo": 0
}
},
{
"kind": "OwnBOM",
"genuine_CAD_input": false,
"integer_to_float_rejection": {
"message": "Изменение параметров меняет тип вычисленной ячейки «Данные спецификации.H1»; штатная отмена не сохраняет такую ячейку. Сохраните тип результата её формулы перед изменением параметров",
"original_exact_unchanged": true,
"undo": 4,
"redo": 1
},
"original_redo_x_mm": 11.0,
"stable_float_change_one_undo": true,
"undo_before_recompute": {
"present": true,
"type": "App::PropertyFloat",
"value": 2.2,
"formula": "=QIUserParameters.Scale * 2"
},
"redo_before_recompute": {
"present": true,
"type": "App::PropertyFloat",
"value": 2.4,
"formula": "=QIUserParameters.Scale * 2"
},
"float_to_integer_rejection": {
"message": "Изменение параметров меняет тип вычисленной ячейки «Данные спецификации.H1»; штатная отмена не сохраняет такую ячейку. Сохраните тип результата её формулы перед изменением параметров",
"original_exact_unchanged": true,
"undo": 6,
"redo": 0
}
}
]
},
{
"name": "Native canonical formula no-op preserves executable history; distinct equal-value formulas remain edits",
"passed": true,
"evidence": {
"qualified_canonical_noop_exact_payload_history_active_document": true,
"independent_original_redo_executed": true,
"equal_value_other_dependency_and_arithmetic_are_real_edits": true,
"actual_comment_change_is_edit": true,
"rejected_formula_exact_state": {
"message": "Не удалось применить параметры: Document object 'MissingCanonicalSource' not found in 'ParameterCanonicalNoop#MissingCanonicalSource.Size'",
"original_exact_unchanged": true,
"undo": 0,
"redo": 1
}
}
},
{
"name": "Fresh native process FCStd history inputs outputs and real reedit",
"passed": true,
"evidence": {
"passed": true,
"gui_up": false,
"parameter_module": "C:\\Repos\\qinventor\\src\\QInventor\\qi_parameters.py",
"parameter_module_sha256": "9f384e40b930b6ebc4e7f068651c0797134818803b82704258e26215997c01c2",
"checks": [
{
"name": "persistent_support_native_history_and_reedit",
"passed": true,
"structure": {
"serialized_placement_rounding": [
{
"object": "XZ_Plane",
"property": "Placement",
"component": 1,
"index": 0,
"expected": 0.7071067811865475,
"actual": 0.7071067811865476,
"absolute_delta": 1.1102230246251565E-16
},
{
"object": "XZ_Plane001",
"property": "Placement",
"component": 1,
"index": 0,
"expected": 0.7071067811865475,
"actual": 0.7071067811865476,
"absolute_delta": 1.1102230246251565E-16
},
{
"object": "XZ_Plane002",
"property": "Placement",
"component": 1,
"index": 0,
"expected": 0.7071067811865475,
"actual": 0.7071067811865476,
"absolute_delta": 1.1102230246251565E-16
}
],
"base_absolute_tolerance_mm": 1E-09,
"quaternion_absolute_tolerance": 1E-12,
"all_nonplacement_fields_exact": true
},
"shapes": {
"revolution": {
"volume_mm3": 2010.6192982974676,
"area_mm2": 1023.7167544041137,
"bounds_mm": [
-8.0,
0.0,
-8.0,
8.0,
20.0,
9.4E-16
],
"volume_weighted_solid_com_mm": [
1.0765503945384812E-16,
9.999999999999998,
-3.3953054526271007
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"groove": {
"volume_mm3": 1834.6901096964393,
"area_mm2": 1070.5486074759096,
"bounds_mm": [
-8.0,
0.0,
-8.0,
8.0,
20.0,
9.4E-16
],
"volume_weighted_solid_com_mm": [
1.2287337249806946E-16,
10.0,
-3.290655627032431
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"pocket": {
"volume_mm3": 1809.5573684677208,
"area_mm2": 1079.681348704628,
"bounds_mm": [
-8.0,
0.0,
-8.0,
8.0,
20.0,
1.2449293598294708E-15
],
"volume_weighted_solid_com_mm": [
-1.6678840012356495E-17,
9.888888888888888,
-3.3245699223640366
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"body_local": {
"volume_mm3": 1809.5573684677224,
"area_mm2": 1079.6813487046286,
"bounds_mm": [
-6.928203230275512,
16.0,
22.0,
16.928203230275514,
41.32050807568878,
30.000000000000004
],
"volume_weighted_solid_com_mm": [
5.055555555555556,
28.564028992979452,
26.675430077635962
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"body_world": {
"volume_mm3": 1809.5573684677227,
"area_mm2": 1079.6813487046288,
"bounds_mm": [
58.67949192431122,
193.07179676972447,
322.0,
84.0,
216.9282032302755,
330.0
],
"volume_weighted_solid_com_mm": [
71.43597100702056,
205.05555555555554,
326.67543007763595
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"occurrence_a": {
"volume_mm3": 1809.5573684677238,
"area_mm2": 1079.6813487046288,
"bounds_mm": [
958.6794919243113,
43.07179676972448,
62.0,
984.0,
66.92820323027551,
70.0
],
"volume_weighted_solid_com_mm": [
971.4359710070205,
55.05555555555554,
66.67543007763597
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"occurrence_b": {
"volume_mm3": 1809.5573684677233,
"area_mm2": 1079.6813487046286,
"bounds_mm": [
1016.0,
133.0717967697245,
62.0,
1041.3205080756888,
156.92820323027553,
70.0
],
"volume_weighted_solid_com_mm": [
1028.5640289929795,
144.94444444444446,
66.67543007763597
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
},
"assembly_world": {
"volume_mm3": 3619.114736935446,
"area_mm2": 2159.362697409257,
"bounds_mm": [
958.6794919243113,
43.07179676972448,
62.0,
1041.3205080756888,
156.92820323027553,
70.0
],
"volume_weighted_solid_com_mm": [
1000.0,
100.00000000000001,
66.67543007763597
],
"bidirectional_boolean_difference_volume_mm3": [
0.0,
0.0
]
}
},
"actual_reedit_volume_mm3": 1822.1237390820797
},
{
"name": "valid270_native90_reedit",
"passed": true,
"volume_mm3": 235.61944901923448
},
{
"name": "ordinary_user_sheet_real_input",
"passed": true,
"cad": {
"parameter_key": "Parameters:QIHeight",
"height_mm": 12.0,
"volume_mm3": 72.0
}
},
{
"name": "parameters_after_BOM_actual_reedit_and_direct_export",
"passed": true,
"restored": {
"parameter_key": "Parameters:QIHeight",
"height_mm": 8.0,
"volume_mm3": 48.0,
"mass_kg": 0.0003768,
"cells": {
"A1": "'Поз.",
"A2": "'1",
"B1": "'Обозначение",
"B2": "'PARAM-BOX",
"C1": "'Наименование",
"C2": "'Брусок",
"C3": "'Итого",
"D1": "'Кол.",
"D2": "1",
"E1": "'Материал",
"E2": "'Сталь",
"F1": "'Масса, кг",
"F2": "'0,0003768",
"F3": "'0,0003768"
},
"actual_mass_cell": "'0,0003768"
},
"immediate": {
"parameter_key": "Parameters:QIHeight",
"height_mm": 6.0,
"volume_mm3": 36.0,
"mass_kg": 0.0002826,
"cells": {
"A1": "'Поз.",
"A2": "'1",
"B1": "'Обозначение",
"B2": "'PARAM-BOX",
"C1": "'Наименование",
"C2": "'Брусок",
"C3": "'Итого",
"D1": "'Кол.",
"D2": "1",
"E1": "'Материал",
"E2": "'Сталь",
"F1": "'Масса, кг",
"F2": "'0,0002826",
"F3": "'0,0002826"
},
"actual_mass_cell": "'0,0002826"
},
"direct_DXF": {
"path": "C:\\Repos\\qinventor\\artifacts\\validation\\restored-height6-direct.dxf",
"sha256": "ff21b3ad86ef0eff449d37e0dac7044586abee3097eac269bbb2cba64cd5c0ba",
"texts": [
"Поз.",
"1",
"Обозначение",
"PARAM-BOX",
"Наименование",
"Брусок",
"Итого",
"Кол.",
"1",
"Материал",
"Сталь",
"Масса, кг",
"0,0002826",
"0,0002826"
],
"actual_native_front_width_mm": 2.0,
"actual_native_front_height_mm": 6.0
}
}
],
"source_stable": true,
"native_exit_code": 0,
"native_pid": 4500,
"report_path": "C:\\Repos\\qinventor\\artifacts\\validation\\parameter-preflight-reopen-p4grki90\\report.json"
}
}
],
"gui": true,
"source_sha256": {
"src/QInventor/Init.py": "7d2681813d2efe5a3b79147da578b67290117e61575e4e1735dd6a9aab7a37e1",
"src/QInventor/InitGui.py": "0f6fa12520a656980d3a3d61582cfcbebfa3f41728d63b75ad2fb001116a850e",
"src/QInventor/qi_bom.py": "548b7196392650b790f8263440cc12039eb1aae20c19ce6158e4588f9cc2053d",
"src/QInventor/qi_bom_ui.py": "522ea28fcce9f7a22e0ea107304ca32406846ec99af16b6adf04ef3da008811d",
"src/QInventor/qi_commands.py": "19816cbda6a9cc15023484022d0a13f84bd176d6e9eae0b681b968da21732f61",
"src/QInventor/qi_drawing_bom.py": "143dfa91623c6ac08c80e02e1671f6628ec18a5fd551bda362d7d99d252a4d11",
"src/QInventor/qi_drawing_bom_export.py": "1e0fbe90cafcf2321ce4eae90868211be7db105767f98bcf42789950d52dab2f",
"src/QInventor/qi_drawing_bom_ui.py": "8a50502dd648a42a2e6e4b436972c67b71ec0683f0c4276b13f313357d0c103a",
"src/QInventor/qi_extrude.py": "03b5b7eea4adbf168d623995e84e0d3af4ccea58494b3b34542b10447ef0c072",
"src/QInventor/qi_io.py": "77ea249f6d3a374e89ac294e0de8a386356ed47f908ba494cbe8fea37c34df1f",
"src/QInventor/qi_localization.py": "84041c5888157e7844b99ebda3fddf9e86531667c9e1aa56cde917795f1b91e1",
"src/QInventor/qi_messages.py": "5c0c41cf0c1bd60f30d0aec0da6934c2af70a88765d86c07e500046714eeecb5",
"src/QInventor/qi_model.py": "08c094382cfadd5e94e3ab6d1ce01ad1214985cc2a3222814ab5b2da26c4d762",
"src/QInventor/qi_parameters.py": "9f384e40b930b6ebc4e7f068651c0797134818803b82704258e26215997c01c2",
"src/QInventor/qi_parameters_ui.py": "4e10337d61bb38f229736f0e877d16cc99106943fa3a8f4333fa905aad7ec19f",
"src/QInventor/qi_projection.py": "a4923dd69f7dcb3230a4b60bd001698d90d6d02db5aa016362034ee73520925d",
"src/QInventor/qi_sketch_offset.py": "ffb0f2a000b91528587110d7f5d47b7e26902b499e1b35220e3c09fc89786cb9",
"src/QInventor/qi_sketch_patterns.py": "c98dfd369c639436f0aed0664cf43cc6345b6639c102309efb90041fe65d4e1e",
"src/QInventor/qi_sketch_preview.py": "4858dc39046bad95306179212fe44a63e2e1437259a9c6d14bc847b68c7aab76",
"src/QInventor/qi_sketch_ui.py": "d505b802c65f1566a64d7687e290a64226aff91958db59b8d621ac69909ead37",
"src/QInventor/qi_step_export.py": "754f7f8b841f87a696ddf800e19f947d5e8712fc53faf8fce4d2d0d0f3ee51f6",
"src/QInventor/qi_ui.py": "7432d1939919b30e5fc81cd333caf220ca3b490d71851328aa26d8070a7ac307",
"src/QInventor/qi_workbench.py": "312d49f40d78e8bde48cd8fa57232cd380565fe5b30a688e4612d57bde210c59",
"src/QInventor/resources/qinventor-a4.svg": "f77419e8559cb24b29a62ebcdc02d781f52c6910c0299d4820d1dd8c820c4128",
"src/QInventor/resources/qinventor.ico": "ea229e71d0fcdd749c35977fc0f11720a972c3ee04b3d9042d850182e0a6ed1c",
"src/QInventor/resources/qinventor.png": "3de618b2d07a1fd36a14f71d3f0b85f36a5dcc22ccf070b4629491da6e6f9e32",
"src/QInventor/resources/qinventor.svg": "12e95fa28c4aaf927311a777b3928d0518799e51663aab2f0f036015210dc954",
"tests/assembly_suite.py": "988aaa37573ab5c6543fd4f8f67b7fa7fff604721dcc6fe31b7c71abea747709",
"tests/bom_gui_suite.py": "043aa3632033bf5a6cc4fba0b1167b9cc6e89610f1db562067b00b32c62640de",
"tests/bom_suite.py": "2a52ef5fb7f99f4f21d6858f0860eba2db0a18993f7092059029c3f73b145f9e",
"tests/command_workflows_suite.py": "9c2cd271b6cde306dc9c228755579c299ead6ab6d4773d83dfefe7b37ecdb950",
"tests/drawing_bom_gui_suite.py": "12a60a1f8550922b5e3b069df09e3416111e367ba82a1d2f25fed5abf7555393",
"tests/drawing_bom_suite.py": "3da48ba3aa9b7f70ac02732fe41699776542d72e840a4d5843bc98f9e72a2509",
"tests/extrude_suite.py": "83da33ea4ce4d5da538f46e0a03a88acdb4e46a1424da32d899602a4b735605a",
"tests/gui_suite.py": "87cee20dc57dffa1384be594d7e8ba96580808685c0ec9419c8fd3a3a4f9007b",
"tests/io_suite.py": "53f8662e37fac45216d2858e732a2e8bbccf3d344c607aa57a99d9cb8d630c45",
"tests/kernel_suite.py": "bfd56a485e11b76f4b402439185db813601d93ce001b54a68e0303826157f3f8",
"tests/parameter_preflight_suite.py": "dc0dd00f59ea60baa90ab6930d7b8a68ebcb33f5e5ea00f3354d94a67d75a966",
"tests/parameter_table_gui_suite.py": "c19beaaf1c0dda693dbdd964319b1c199ea51bb79a4300f0b15177c15b5f8489",
"tests/parameter_table_suite.py": "f0c9eb2975bbac0a5d6a0a6f50bf64bc8cbd094b09942c167207574d3e1ba895",
"tests/parameters_suite.py": "7bbcc44d6d9f1595ac2ab90e8a8f01fb1d0d0acfd32294241d3ef595713f985b",
"tests/probe.FCMacro": "928efa45b20a145f313cf2ae6dcbcbc7ee9f3609df67ec678078aed8e264bd07",
"tests/projection_suite.py": "77770dc7c82656794ed68770d26c5da7871f2a8949ea8acc7ee637f8caaa1d24",
"tests/ribbon_camera_probe.FCMacro": "ed96daba842fbd362bf2ce7ec8014e011a46cc0941fae48b05f78714aeefc3c6",
"tests/ribbon_gui.FCMacro": "bbaa7367526cb924f096a97bc3f6005a6184061955abfdd15d0e91d1f5986575",
"tests/ribbon_probe.FCMacro": "b519579dcb0cee106aa40caf674fa611e105168299e933fe9930ac20a6238872",
"tests/ribbon_suite.py": "b5d5459532bdfb7113da2fea228248e87aa0e7abfa8ecec116e1222141aae05b",
"tests/sketch_offset_suite.py": "97de15e62d59b7c3113dda26d48670163853acf8a404067d676c6db3a2cc82f1",
"tests/sketch_operations_gui_suite.py": "4b088da978f506f3afe04fac6c9a3762895eb8fb1f21b2e7f5d8f08a656e53a1",
"tests/sketch_patterns_suite.py": "2205b605bd5ab7b8077cbd2421bdb469105d04daa5806fdc02edadb7a5f68414",
"scripts/bootstrap.ps1": "aeecd11aa2b609fbbbc6d4bcaf6eb6a4c236913aff26cd5096b3cb5a33dd499c",
"scripts/build-launcher.ps1": "b78168056b1009576872bc7d93f35fb7db5d409e8dd24418cfe74b42c30c6c7e",
"scripts/launcher/Program.cs": "7cee5b394ba055bb63619a5aef4c9b9db82055c3ca1a61a2550da221a996cfc5",
"scripts/launcher/QInventor.Launcher.csproj": "b46bb80c4b39b66a66b9d2e25ba97c186a9ca48d9e6bc4cdd11531b9c89990d8",
"scripts/launcher/RuntimePath.cs": "13fd9e93326afef703fa1926f83ea519dceaccb3781526e1e5e2c23243f78057",
"scripts/package.ps1": "9352bd79ee9ac41a1766745a86fd1e1c9193163f544cf838e122dcf4b770fdbb",
"scripts/render-icon.py": "2063594fde4d169f141b3a386f455be1f116b3c8a01f8bb257f4ff575b02aa42",
"scripts/startup.FCMacro": "813b4e857b3e184f3a41c7b72debfd995e7ee36ad2532aa3f57a4c878d6fc38b",
"scripts/sync.ps1": "e1349b8d1527bab9f700d0e8418a6e6be6d3df97838103efc5c473d2bcb3a5de",
"scripts/test.ps1": "6e827d4aa63e150006b2a77e77243d8445612d684bb0cea79ef4d67811c599dd",
"scripts/translator-probe.py": "5ee83e97742a65eb147227cf6c020f4307122908a3c06e1417727ee603a819ae"
},
"source_stable": true,
"parameter_module": "C:\\Repos\\qinventor\\src\\QInventor\\qi_parameters.py",
"parameter_module_sha256": "9f384e40b930b6ebc4e7f068651c0797134818803b82704258e26215997c01c2"
}
},
{
"name": "document_parameter_table_gui_suite",
"passed": true,
"result": {
"status": "passed",
"passed": 9,
"failed": 0,
"checks": [
{
"name": "Add user parameters, edit model formulas and rebuild native solid",
"passed": true,
"evidence": {
"screenshot": "C:\\Repos\\qinventor\\artifacts\\validation\\parameter-table-formulas.png",
"native_project": "C:\\Repos\\qinventor\\artifacts\\validation\\document-parameters.FCStd",
"new_user_and_model_formulas_one_undo": true,
"expression_chain_drives_solid": true,
"hidden_draft_applies": true,
"FCStd_reopen": true
}
},
{
"name": "Units and cyclic formulas reject atomically and recover in the open table",
"passed": true,
"evidence": {
"units_error": "Параметр «Size» должен быть числом в мм",
"cycle_error": "Обнаружена циклическая зависимость. Измените формулы так, чтобы параметр не зависел от самого себя.",
"screenshot": "C:\\Repos\\qinventor\\artifacts\\validation\\parameter-table-cycle-error.png",
"errors_keep_document_and_drafts": true,
"corrected_apply_rebuilds_native_solid": true
}
},
{
"name": "Reference dimensions, unchanged precision and Close discard drafts",
"passed": true,
"evidence": {
"screenshot": "C:\\Repos\\qinventor\\artifacts\\validation\\parameter-table-reference-and-draft.png",
"untouched_native_precision": 3.141592653589793,
"reference_not_editable": true,
"close_discards_unapplied_rows_and_values": true
}
},
{
"name": "User rename updates formula consumers and guarded deletion",
"passed": true,
"evidence": {
"native_rename_updates_consumers": true,
"referenced_delete_rejected": "Параметр или объект, указанный в формуле, не найден. Проверьте ссылку выбранной строки.",
"unused_parameter_removed_in_one_undo": true
}
},
{
"name": "Closed document refuses pending Apply",
"passed": true,
"evidence": {
"closed_document_has_no_write": true,
"dialog_error_stays_visible": true
}
},
{
"name": "Native Sketcher task protects its edit transaction",
"passed": true,
"evidence": {
"actual_Sketcher_task_blocks_floating_apply": true,
"after_finishing_task_apply_succeeds": true
}
},
{
"name": "Parameter command updates a grouped existing drawing, exports and reopens",
"passed": true,
"evidence": {
"screenshot": "C:\\Repos\\qinventor\\artifacts\\validation\\parameter-table-existing-grouped-drawing.png",
"opened_by_QI_Dimensions_without_selection": true,
"grouped_native_page_preserved": true,
"front_heights_mm": [
24.0,
32.0,
32.0
],
"new_expressions_drive_existing_projection": true,
"FCStd_group_and_association_reopen": true,
"rejected_geometry_preserves_usable_native_redo": "Параметр «Radius» должен быть больше нуля",
"no_hidden_validation_documents": true,
"pdf": "C:\\Repos\\qinventor\\artifacts\\validation\\parameter-table-grouped-drawing.pdf",
"svg": "C:\\Repos\\qinventor\\artifacts\\validation\\parameter-table-grouped-drawing.svg",
"project": "C:\\Repos\\qinventor\\artifacts\\validation\\parameter-table-grouped-drawing.FCStd"
}
},
{
"name": "Filtering clears hidden user selection and prevents unseen deletion",
"passed": true,
"evidence": {
"screenshot": "C:\\Repos\\qinventor\\artifacts\\validation\\parameter-table-filter-protected-selection.png",
"hidden_selected_row_cleared": true,
"hidden_delete_slot_refuses_removal": true,
"filter_does_not_write_native_document": true
}
},
{
"name": "Native Undo, external edits and unnamed index shifts protect table drafts",
"passed": true,
"evidence": {
"screenshot": "C:\\Repos\\qinventor\\artifacts\\validation\\parameter-table-stale-constraint-edit.png",
"undo_refresh_preserves_redo": true,
"external_native_property_rejects_stale_draft": true,
"unnamed_constraint_index_shift_rejects_old_target": true,
"refresh_is_read_only_and_discards_drafts": true,
"own_apply_updates_baseline": true,
"external_edit_delivery": "FreeCAD native transactions and public property/constraint APIs"
}
}
],
"input_delivery": "actual Qt buttons, keyboard and Russian input-method events in QI_ParameterTable",
"kernel_boundary": "native Sketcher, PartDesign Pad, App::VarSet and FreeCAD expressions",
"os_pointer_access": false,
"count": 9
}
},
{
"name": "assembly_joint_validation_suite",
"passed": true,
"result": {
"passed": true,
"checks": [
{
"name": "Joint rejects connection to the same component before mutation",
"passed": true,
"evidence": {
"message": "Выберите два разных компонента для соединения",
"unchanged": true
}
},
{
"name": "Joint and grounding reject components outside the assembly",
"passed": true,
"evidence": {
"joint_message": "Выберите компоненты выбранной сборки",
"ground_message": "Выберите компоненты выбранной сборки",
"unchanged": true
}
},
{
"name": "Joint and grounding reject components from another document",
"passed": true,
"evidence": {
"joint_message": "Выберите компоненты выбранной сборки",
"ground_message": "Выберите компоненты выбранной сборки",
"both_documents_unchanged": true
}
},
{
"name": "Conflicting native joint rolls back objects and all component placements",
"passed": true,
"evidence": {
"message": "Соединение «Жёсткое соединение002» конфликтует с положением компонентов. Проверьте существующие соединения.",
"all_three_placements_restored": true,
"remaining_solver_status": 0
}
},
{
"name": "Conflicting indirect loop preserves both previous fixed joints",
"passed": true,
"evidence": {
"message": "Соединение «Жёсткое соединение001» конфликтует с положением компонентов. Проверьте существующие соединения.",
"indirect_loop_rejected": true,
"both_previous_joints_preserved": true,
"all_three_placements_restored": true
}
},
{
"name": "Accepted native joint is one undo step and survives redo save reopen",
"passed": true,
"evidence": {
"native_joint": true,
"undo_redo": true,
"reopened": true,
"project": "C:\\Repos\\qinventor\\artifacts\\validation\\atomic-joint.FCStd",
"solver_status": 0
}
}
],
"summary": {
"total": 6,
"passed": 6,
"failed": 0
},
"gui_exercised": true
}
},
{
"name": "nested_assembly_bom_kernel_suite",
"passed": true,
"result": {
"passed": true,
"count": 14,
"checks": [
{
"name": "STEP world frames readonly payload shared identities and atomic writer",
"passed": true,
"evidence": {
"exchanges": [
{
"path": "C:\\Repos\\qinventor\\artifacts\\validation\\placed-root-default.step",
"solids": 7,
"volume_mm3": 2120.000000000001,
"world_com_mm": [
995.1981132075472,
225.56603773584908,
4.830188679245285
],
"source_exact_and_redo_executes": true,
"products": [
[
"Экспорт модели",
"Экспорт модели"
],
[
"Assembly",
"Assembly"
],
[
"Узел",
"Узел"
],
[
"Болт",
"Болт"
],
[
"Корпус",
"Корпус"
],
[
"Узел",
"Узел"
]
],
"occurrences": [
"Assembly",
"SubA",
"BoltA001",
"BoltB001",
"HousingOccurrence001",
"SubB",
"BoltA002",
"BoltB002",
"HousingOccurrence002",
"DirectBolt"
]
},
{
"path": "C:\\Repos\\qinventor\\artifacts\\validation\\placed-root-explicit.step",
"solids": 7,
"volume_mm3": 2120.000000000001,
"world_com_mm": [
995.1981132075472,
225.56603773584908,
4.830188679245285
],
"source_exact_and_redo_executes": true,
"products": [
[
"Экспорт модели",
"Экспорт модели"
],
[
"Assembly",
"Assembly"
],
[
"Узел",
"Узел"
],
[
"Болт",
"Болт"
],
[
"Корпус",
"Корпус"
],
[
"Узел",
"Узел"
]
],
"occurrences": [
"Assembly",
"SubA",
"BoltA001",
"BoltB001",
"HousingOccurrence001",
"SubB",
"BoltA002",
"BoltB002",
"HousingOccurrence002",
"DirectBolt"
]
},
{
"path": "C:\\Repos\\qinventor\\artifacts\\validation\\placed-body-default.step",
"solids": 1,
"volume_mm3": 24.000000000000007,
"world_com_mm": [
28.200961894323342,
70.11602540378443,
102.00000000000001
],
"source_exact_and_redo_executes": true,
"products": [
[
"Экспорт модели",
"Экспорт модели"
],
[
"Брусок",
"Брусок"
]
],
"occurrences": [
"Брусок"
]
},
{
"path": "C:\\Repos\\qinventor\\artifacts\\validation\\placed-body-explicit.step",
"solids": 1,
"volume_mm3": 24.000000000000007,
"world_com_mm": [
28.200961894323342,
70.11602540378443,
102.00000000000001
],
"source_exact_and_redo_executes": true,
"products": [
[
"Экспорт модели",
"Экспорт модели"
],
[
"Брусок",
"Брусок"
]
],
"occurrences": [
"Брусок"
]
}
],
"native_writer_fault_old_bytes_and_source_exact": true,
"native_instance_identity_labels_and_world_geometry_proved": true
}
},
{
"name": "Nested rigid/flexible quantities density and world COM",
"passed": true,
"evidence": {
"flat": [
{
"position": "1",
"parent_position": "",
"level": 0,
"part_number": "BOLT",
"name": "Болт",
"quantity": 5,
"quantity_total": 5,
"material": "Сталь",
"density_kg_m3": 7850.000000000001,
"unit_mass_kg": 0.00018840000000000013,
"mass_kg": 0.0009420000000000007,
"source_id": "QInventorPart3#Body",
"source_name": "Body",
"source_doc": "QInventorPart3",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart3#Body|1",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 24.0, 52.0)",
"materials": [
"Сталь"
]
},
{
"position": "2",
"parent_position": "",
"level": 0,
"part_number": "HOUSING",
"name": "Корпус",
"quantity": 2,
"quantity_total": 2,
"material": "Алюминий",
"density_kg_m3": 2700.0,
"unit_mass_kg": 0.0027000000000000014,
"mass_kg": 0.005400000000000003,
"source_id": "QInventorPart3#Body001",
"source_name": "Body001",
"source_doc": "QInventorPart3",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart3#Body001|2",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Алюминий', 2700.0, 1000.0, 600.0)",
"materials": [
"Алюминий"
]
}
],
"mass": {
"volume_mm3": 2120.000000000001,
"area_mm2": 1460.0000000000002,
"mass_kg": 0.006342000000000003,
"density_kg_m3": 2991.509433962264,
"material": "Смешанные материалы",
"materials": [
"Сталь",
"Алюминий"
],
"center_mm": [
995.5198675496691,
226.48533585619683,
4.554399243140967
],
"dimensions_mm": [
10.0,
202.00000000000003,
10.000000000000002
],
"solids": 7,
"components": 7,
"assembly_count": 3
},
"independent_world_com": [
995.5198675496688,
226.4853358561968,
4.554399243140964
],
"rigid_and_flexible_native_links": true,
"read_only_persistence_history": true
}
},
{
"name": "Structured local/cumulative multiplicity and explicit roots",
"passed": true,
"evidence": {
"rows": [
{
"position": "1",
"parent_position": "",
"level": 0,
"part_number": "SubAssembly",
"name": "Узел",
"quantity": 2,
"quantity_total": 2,
"material": "Смешанные материалы",
"density_kg_m3": 2935.87786259542,
"unit_mass_kg": 0.0030767999999999993,
"mass_kg": 0.006153599999999999,
"source_id": "QInventorPart4#SubAssembly",
"source_name": "SubAssembly",
"source_doc": "QInventorPart4",
"is_assembly": true,
"kind": "assembly",
"row_id": "QInventorPart4#SubAssembly|1",
"variant_id": "('assembly', ((('QInventorPart4', 'Body'), ((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 24.0, 52.0), (('QInventorPart4', 'Body'), ((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 24.0, 52.0), (('QInventorPart4', 'Body001'), ((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Алюминий', 2700.0, 1000.0, 600.0)))",
"materials": [
"Алюминий",
"Сталь"
]
},
{
"position": "1.1",
"parent_position": "1",
"level": 1,
"part_number": "BOLT",
"name": "Болт",
"quantity": 2,
"quantity_total": 4,
"material": "Сталь",
"density_kg_m3": 7850.0,
"unit_mass_kg": 0.00018840000000000003,
"mass_kg": 0.0007536000000000001,
"source_id": "QInventorPart4#Body",
"source_name": "Body",
"source_doc": "QInventorPart4",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart4#Body|1.1",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 24.0, 52.0)",
"materials": [
"Сталь"
]
},
{
"position": "1.2",
"parent_position": "1",
"level": 1,
"part_number": "HOUSING",
"name": "Корпус",
"quantity": 1,
"quantity_total": 2,
"material": "Алюминий",
"density_kg_m3": 2700.0,
"unit_mass_kg": 0.0026999999999999993,
"mass_kg": 0.0053999999999999986,
"source_id": "QInventorPart4#Body001",
"source_name": "Body001",
"source_doc": "QInventorPart4",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart4#Body001|1.2",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Алюминий', 2700.0, 1000.0, 600.0)",
"materials": [
"Алюминий"
]
},
{
"position": "2",
"parent_position": "",
"level": 0,
"part_number": "BOLT",
"name": "Болт",
"quantity": 1,
"quantity_total": 1,
"material": "Сталь",
"density_kg_m3": 7850.0,
"unit_mass_kg": 0.00018840000000000003,
"mass_kg": 0.00018840000000000003,
"source_id": "QInventorPart4#Body",
"source_name": "Body",
"source_doc": "QInventorPart4",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart4#Body|2",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 24.0, 52.0)",
"materials": [
"Сталь"
]
}
],
"scoped_subassembly": [
{
"position": "1",
"parent_position": "",
"level": 0,
"part_number": "BOLT",
"name": "Болт",
"quantity": 2,
"quantity_total": 2,
"material": "Сталь",
"density_kg_m3": 7850.0,
"unit_mass_kg": 0.00018840000000000003,
"mass_kg": 0.00037680000000000005,
"source_id": "QInventorPart4#Body",
"source_name": "Body",
"source_doc": "QInventorPart4",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart4#Body|1",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 24.0, 52.0)",
"materials": [
"Сталь"
]
},
{
"position": "2",
"parent_position": "",
"level": 0,
"part_number": "HOUSING",
"name": "Корпус",
"quantity": 1,
"quantity_total": 1,
"material": "Алюминий",
"density_kg_m3": 2700.0,
"unit_mass_kg": 0.0026999999999999993,
"mass_kg": 0.0026999999999999993,
"source_id": "QInventorPart4#Body001",
"source_name": "Body001",
"source_doc": "QInventorPart4",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart4#Body001|2",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Алюминий', 2700.0, 1000.0, 600.0)",
"materials": [
"Алюминий"
]
}
],
"summary_never_double_counts": true,
"actual_scope_roots": [
"Assembly",
"SubA",
"SubB"
]
}
},
{
"name": "CAD source identity independent of labels and part numbers",
"passed": true,
"evidence": {
"rows": [
{
"position": "1",
"parent_position": "",
"level": 0,
"part_number": "SAME",
"name": "Одинаковая подпись",
"quantity": 1,
"quantity_total": 1,
"material": "Сталь",
"density_kg_m3": 7850.0,
"unit_mass_kg": 0.00018840000000000003,
"mass_kg": 0.00018840000000000003,
"source_id": "QInventorPart5#Body",
"source_name": "Body",
"source_doc": "QInventorPart5",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart5#Body|1",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 24.0, 52.0)",
"materials": [
"Сталь"
]
},
{
"position": "2",
"parent_position": "",
"level": 0,
"part_number": "SAME",
"name": "Одинаковая подпись001",
"quantity": 1,
"quantity_total": 1,
"material": "Сталь",
"density_kg_m3": 7850.0,
"unit_mass_kg": 0.00037680000000000005,
"mass_kg": 0.00037680000000000005,
"source_id": "QInventorPart5#Body001",
"source_name": "Body001",
"source_doc": "QInventorPart5",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart5#Body001|2",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 48.0, 80.0)",
"materials": [
"Сталь"
]
}
],
"labels_and_numbers_do_not_define_identity": true
}
},
{
"name": "Native hidden arrays mirror and nonuniform scales",
"passed": true,
"evidence": {
"virtual_hidden_array_elements_counted": true,
"array_variants": [
{
"position": "1",
"parent_position": "",
"level": 0,
"part_number": "Bolt",
"name": "Bolt",
"quantity": 1,
"quantity_total": 1,
"material": "Сталь",
"density_kg_m3": 7850.0,
"unit_mass_kg": 0.00018839999999999997,
"mass_kg": 0.00018839999999999997,
"source_id": "QInventorPart6#Bolt",
"source_name": "Bolt",
"source_doc": "QInventorPart6",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart6#Bolt|1",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 24.0, 52.0)",
"materials": [
"Сталь"
]
},
{
"position": "2",
"parent_position": "",
"level": 0,
"part_number": "Bolt",
"name": "Bolt",
"quantity": 1,
"quantity_total": 1,
"material": "Сталь",
"density_kg_m3": 7850.0,
"unit_mass_kg": 0.0015071999999999998,
"mass_kg": 0.0015071999999999998,
"source_id": "QInventorPart6#Bolt",
"source_name": "Bolt",
"source_doc": "QInventorPart6",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart6#Bolt|2",
"variant_id": "(((4.0, 0.0, 0.0, 4.0, 0.0, 4.0), 1), 'Сталь', 7850.0, 192.0, 208.0)",
"materials": [
"Сталь"
]
},
{
"position": "3",
"parent_position": "",
"level": 0,
"part_number": "Bolt",
"name": "Bolt",
"quantity": 1,
"quantity_total": 1,
"material": "Сталь",
"density_kg_m3": 7850.0,
"unit_mass_kg": 0.005086800000000001,
"mass_kg": 0.005086800000000001,
"source_id": "QInventorPart6#Bolt",
"source_name": "Bolt",
"source_doc": "QInventorPart6",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart6#Bolt|3",
"variant_id": "(((9.0, 0.0, 0.0, 9.0, 0.0, 9.0), 1), 'Сталь', 7850.0, 648.0, 468.0)",
"materials": [
"Сталь"
]
}
],
"mirrored_positive_physical_mass": true,
"nonuniform_scaling": true
}
},
{
"name": "Expanded and virtual arrays preserve materials without duplicate roots",
"passed": true,
"evidence": {
"both_native_array_representations": [
{
"expanded_elements": false,
"rows": [
{
"position": "1",
"parent_position": "",
"level": 0,
"part_number": "Bolt",
"name": "Bolt",
"quantity": 3,
"quantity_total": 3,
"material": "ABS",
"density_kg_m3": 999.9999999999999,
"unit_mass_kg": 2.3999999999999997E-05,
"mass_kg": 7.199999999999999E-05,
"source_id": "QInventorPart7#Bolt",
"source_name": "Bolt",
"source_doc": "QInventorPart7",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart7#Bolt|1",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'ABS', 1000.0, 24.0, 52.0)",
"materials": [
"ABS"
]
}
],
"components": 3,
"actual_material_service_used": true,
"array_view_properties": [
"ChildViewProvider",
"DisplayMode",
"DrawStyle",
"LineWidth",
"MaterialList",
"OnTopWhenSelected",
"OverrideColorList",
"OverrideMaterial",
"OverrideMaterialList",
"PointSize",
"Selectable",
"SelectionStyle",
"ShapeMaterial",
"ShowInTree",
"Visibility"
],
"assembly_view_properties": [
"DisplayMode",
"OnTopWhenSelected",
"SelectionStyle",
"ShowInTree",
"TransformOrigin",
"Visibility"
]
},
{
"expanded_elements": true,
"rows": [
{
"position": "1",
"parent_position": "",
"level": 0,
"part_number": "Bolt",
"name": "Bolt",
"quantity": 3,
"quantity_total": 3,
"material": "ABS",
"density_kg_m3": 999.9999999999999,
"unit_mass_kg": 2.3999999999999997E-05,
"mass_kg": 7.199999999999999E-05,
"source_id": "QInventorPart8#Bolt",
"source_name": "Bolt",
"source_doc": "QInventorPart8",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart8#Bolt|1",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'ABS', 1000.0, 24.0, 52.0)",
"materials": [
"ABS"
]
}
],
"components": 3,
"actual_material_service_used": true,
"array_view_properties": [
"ChildViewProvider",
"DisplayMode",
"DrawStyle",
"LineWidth",
"MaterialList",
"OnTopWhenSelected",
"OverrideColorList",
"OverrideMaterial",
"OverrideMaterialList",
"PointSize",
"Selectable",
"SelectionStyle",
"ShapeMaterial",
"ShowInTree",
"Visibility"
],
"assembly_view_properties": [
"DisplayMode",
"OnTopWhenSelected",
"SelectionStyle",
"ShowInTree",
"TransformOrigin",
"Visibility"
]
}
],
"parent_array_material_used": true,
"expanded_elements_not_extra_document_roots": true,
"container_density_does_not_replace_leaf_density": true
}
},
{
"name": "Effective scale cancellation rootless transforms and mirror identity",
"passed": true,
"evidence": {
"uniform_scale_chain_cancels": true,
"rootless_effective_transform": true,
"mirror_variant_separate": true,
"rows": [
{
"position": "1",
"parent_position": "",
"level": 0,
"part_number": "Bolt",
"name": "Bolt",
"quantity": 2,
"quantity_total": 2,
"material": "Сталь",
"density_kg_m3": 7850.0,
"unit_mass_kg": 0.00018839999999999997,
"mass_kg": 0.00037679999999999994,
"source_id": "QInventorPart9#Bolt",
"source_name": "Bolt",
"source_doc": "QInventorPart9",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart9#Bolt|1",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 24.0, 52.0)",
"materials": [
"Сталь"
]
},
{
"position": "2",
"parent_position": "",
"level": 0,
"part_number": "Bolt",
"name": "Bolt",
"quantity": 1,
"quantity_total": 1,
"material": "Сталь",
"density_kg_m3": 7850.0,
"unit_mass_kg": 0.00018839999999999997,
"mass_kg": 0.00018839999999999997,
"source_id": "QInventorPart9#Bolt",
"source_name": "Bolt",
"source_doc": "QInventorPart9",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart9#Bolt|2",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), -1), 'Сталь', 7850.0, 24.0, 52.0)",
"materials": [
"Сталь"
]
}
]
}
},
{
"name": "Container Boolean history native mirroring and helper groups",
"passed": true,
"evidence": {
"native_inputs_not_counted_inside_container": true,
"actual_source_link_counted": true,
"helper_sketch_group_omitted": true,
"native_Mirroring_Source_consumed": true
}
},
{
"name": "External source recompute and generic native container links",
"passed": true,
"evidence": {
"external_dependency_recomputed": true,
"generic_AppPart_link_traversed": true,
"scope_selector_contains_only_addressable_local_occurrences": [
"Assembly",
"ExternalContainer"
]
}
},
{
"name": "Consumed Boolean history and native density units",
"passed": true,
"evidence": {
"Boolean_base_and_tool_are_not_independent_parts": true,
"explicit_base_occurrence_counted": true,
"native_density_quantity_converted_to_kg_m3": true
}
},
{
"name": "Cached native feature errors density and scoped validation",
"passed": true,
"evidence": {
"cached_valid_BRep_invalid_feature_rejected": true,
"explicit_scope_ignores_unrelated_failed_body": true,
"invalid_density_rejected": 4,
"wire_solid_compound_rejected": true
}
},
{
"name": "Missing targets and native link/assembly cycles",
"passed": true,
"evidence": {
"missing_and_wrong_assembly_target_rejected": true,
"missing_wrong_target_gui_exercised": true,
"native_cycle_evidence": {
"passed": true,
"service_path": "C:\\Repos\\qinventor\\src\\QInventor\\qi_bom.py",
"service_sha256": "548b7196392650b790f8263440cc12039eb1aae20c19ce6158e4588f9cc2053d",
"suite_sha256": "2a52ef5fb7f99f4f21d6858f0860eba2db0a18993f7092059029c3f73b145f9e",
"freecad_version": [
"1",
"1",
"4",
"20260928 (Git shallow)",
"Unknown",
"2026/09/28 13:46:34",
"(HEAD detached at 4fd3bf320)",
"4fd3bf320d9566a27e60069fc8387448aaa3a094"
],
"gui_up": false,
"user_cfg": "C:\\Repos\\qinventor\\artifacts\\validation\\bom-cycle-02rn2633\\user.cfg",
"system_cfg": "C:\\Repos\\qinventor\\artifacts\\validation\\bom-cycle-02rn2633\\system.cfg",
"evidence": {
"real_two_link_cycle_guarded_before_delegated_geometry": true,
"real_cross_assembly_cycle_guarded": true,
"rejection_count": 4,
"rejections": [
"Обнаружен цикл в составе сборки «A»",
"Обнаружен цикл в составе сборки «A»",
"Обнаружен цикл в составе сборки «A»",
"Обнаружен цикл в составе сборки «AssemblyA»"
],
"gui_up": false
},
"native_exit_code": 0,
"native_pid": 21276,
"engine_path": "C:\\Repos\\qinventor\\runtime\\FreeCAD_1.1.4-Windows-x86_64-py311\\bin\\FreeCADCmd.exe",
"report_path": "C:\\Repos\\qinventor\\artifacts\\validation\\bom-cycle-02rn2633\\cycle-report.json",
"execution_boundary": "owned headless FreeCADCmd; parent missing/wrong targets remain GUI"
}
}
},
{
"name": "Atomic CSV validation old bytes and empty scope",
"passed": true,
"evidence": {
"flat_csv": "C:\\Repos\\qinventor\\artifacts\\validation\\nested-flat.csv",
"structured_csv": "C:\\Repos\\qinventor\\artifacts\\validation\\nested-structured.csv",
"old_bytes_preserved_on_failure": true,
"no_parent_directory_on_invalid_input": true,
"empty_export_rejected": true
}
},
{
"name": "FCStd source edits Undo/Redo and STEP instance proof",
"passed": true,
"evidence": {
"fcstd": "C:\\Repos\\qinventor\\artifacts\\validation\\nested-assembly.FCStd",
"step": "C:\\Repos\\qinventor\\artifacts\\validation\\nested-assembly.step",
"step_leaf_solids": 7,
"step_volume_mm3": 2240.0,
"source_edit_and_undo_redo_updates_all_occurrences": true,
"step_world_centers": [
[
102.0,
1.5,
2.0
],
[
112.0,
1.5,
2.0
],
[
125.0,
5.0,
5.0
],
[
202.0,
1.5,
2.0
],
[
212.0,
1.5,
2.0
],
[
225.0,
5.0,
5.0
],
[
302.0,
1.5,
2.0
]
]
}
}
],
"summary": {
"total": 14,
"passed": 14,
"failed": 0
},
"gui_exercised": true,
"cycle_execution_boundary": "owned headless FreeCADCmd child"
}
},
{
"name": "nested_assembly_bom_gui_suite",
"passed": true,
"result": {
"status": "passed",
"passed": 3,
"failed": 0,
"checks": [
{
"name": "Native insertion, flat and structured quantities, materials and nested scope",
"passed": true,
"evidence": {
"native_inserted_subassemblies": 2,
"native_inserted_direct_bolts": 1,
"flat_quantities": {
"GUI-HOUSING": 2,
"GUI-BOLT": 5
},
"mixed_mass_kg": 0.006633075116533993,
"prototype_excluded": true,
"construction_sketch_container_has_no_BOM_rows": true,
"assembly_material_rejected_before_chooser_without_mutation": [
{
"type": "Assembly::AssemblyObject",
"message": "Выберите конечную деталь или её экземпляр. Материалы сборки задаются у входящих деталей."
},
{
"type": "Assembly::AssemblyLink",
"message": "Выберите конечную деталь или её экземпляр. Материалы сборки задаются у входящих деталей."
}
],
"physical_counts_ignore_visibility": true,
"structured_local_and_total_quantities": true,
"selected_live_nested_instance": true,
"screenshots": [
"C:\\Repos\\qinventor\\artifacts\\validation\\bom-gui-flat.png",
"C:\\Repos\\qinventor\\artifacts\\validation\\bom-gui-structured.png"
]
}
},
{
"name": "Russian mass properties, native source refresh, actual CSV dialogs and FCStd reopen",
"passed": true,
"evidence": {
"mass_properties_russian_labels": {
"Объём, мм³": "2157.08",
"Площадь поверхности, мм²": "1545.58",
"Масса, кг": "0.00663308",
"Средняя плотность, кг/м³": "3075.03",
"Материал": "Смешанные материалы",
"Материалы деталей": "Сталь, Алюминий",
"Центр масс, мм": "6.74; 4.13743; 5.06692",
"Габариты, мм": "21; 10.9989; 11.7998",
"Твёрдых тел": "7",
"Экземпляров деталей": "7",
"Сборок": "3"
},
"source_edit_refresh": true,
"export_refreshes_current_model": true,
"native_save_dialog_keyboard_and_button": true,
"flat_csv": "C:\\Repos\\qinventor\\artifacts\\validation\\bom-gui-flat.csv",
"structured_csv": "C:\\Repos\\qinventor\\artifacts\\validation\\bom-gui-structured.csv",
"FCStd_external_sources_reopened": true,
"mass_kg_after_reopen": 0.012033075116533992,
"screenshots": [
"C:\\Repos\\qinventor\\artifacts\\validation\\bom-gui-updated-and-exported.png",
"C:\\Repos\\qinventor\\artifacts\\validation\\bom-gui-reopened.png"
]
}
},
{
"name": "Invalid cached source, native task and closed document protect BOM export",
"passed": true,
"evidence": {
"invalid_cached_source_blocks_export": true,
"previous_csv_unchanged": "8dc2bb6168478bb57ea4ef83a0992357d21edde7da78a289a1250e477f4d881f",
"native_task_blocks_refresh": true,
"closed_document_refuses_refresh_and_export": true
}
}
],
"input_delivery": "Qt native Assembly insertion list, BOM controls, native file and property dialogs",
"fixture_boundary": "native Assembly::AssemblyLink/App::Link instances of saved FCStd sources",
"os_pointer_access": false,
"fixture_attempts": [
{
"number": 1,
"initial_docs": [],
"clicks": [
{
"requested_source": {
"document": "QInventorAssembly",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Подсборка"
},
"item_source": {
"document": "QInventorAssembly",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Подсборка"
},
"item_at_click": {
"document": "QInventorAssembly",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Подсборка"
},
"rectangle": [
24,
18,
229,
18
],
"viewport": [
253,
198
],
"before": {
"app_document": "QInventorAssembly1",
"gui_document": "QInventorAssembly1",
"in_edit": {
"QInventorAssembly": null,
"QInventorAssembly1": {
"native_class": "ViewProviderAssembly",
"name": "",
"representation": "<Assembly View provider object at 00000148329EA400>"
},
"QInventorPart": null
},
"selection": [],
"active_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_part": null,
"assembly_groups": {
"QInventorAssembly#Assembly": [
{
"document": "QInventorAssembly",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "Основание закреплено"
},
{
"document": "QInventorAssembly",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
},
{
"document": "QInventorAssembly",
"name": "Component002",
"type": "App::Link",
"label": "Болт001"
}
],
"QInventorAssembly1#Assembly": [
{
"document": "QInventorAssembly1",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
}
],
"QInventorAssembly1#PrototypeAssembly": [
{
"document": "QInventorAssembly1",
"name": "Joints001",
"type": "Assembly::JointGroup",
"label": "Joints001"
},
{
"document": "QInventorAssembly1",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly1",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
}
]
}
},
"after": {
"app_document": "QInventorAssembly1",
"gui_document": "QInventorAssembly1",
"in_edit": {
"QInventorAssembly": null,
"QInventorAssembly1": {
"native_class": "ViewProviderAssembly",
"name": "",
"representation": "<Assembly View provider object at 00000148329EA400>"
},
"QInventorPart": null
},
"selection": [
{
"document": "QInventorAssembly1",
"name": "Подсборка",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
}
],
"active_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_part": null,
"assembly_groups": {
"QInventorAssembly#Assembly": [
{
"document": "QInventorAssembly",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "Основание закреплено"
},
{
"document": "QInventorAssembly",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
},
{
"document": "QInventorAssembly",
"name": "Component002",
"type": "App::Link",
"label": "Болт001"
}
],
"QInventorAssembly1#Assembly": [
{
"document": "QInventorAssembly1",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "GroundedJoint"
}
],
"QInventorAssembly1#PrototypeAssembly": [
{
"document": "QInventorAssembly1",
"name": "Joints001",
"type": "Assembly::JointGroup",
"label": "Joints001"
},
{
"document": "QInventorAssembly1",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly1",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
}
]
}
}
},
{
"requested_source": {
"document": "QInventorAssembly",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Подсборка"
},
"item_source": {
"document": "QInventorAssembly",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Подсборка"
},
"item_at_click": {
"document": "QInventorAssembly",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Подсборка"
},
"rectangle": [
24,
18,
229,
18
],
"viewport": [
253,
198
],
"before": {
"app_document": "QInventorAssembly1",
"gui_document": "QInventorAssembly1",
"in_edit": {
"QInventorAssembly": null,
"QInventorAssembly1": {
"native_class": "ViewProviderAssembly",
"name": "",
"representation": "<Assembly View provider object at 00000148329EA400>"
},
"QInventorPart": null
},
"selection": [
{
"document": "QInventorAssembly1",
"name": "Подсборка",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
}
],
"active_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_part": null,
"assembly_groups": {
"QInventorAssembly#Assembly": [
{
"document": "QInventorAssembly",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "Основание закреплено"
},
{
"document": "QInventorAssembly",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
},
{
"document": "QInventorAssembly",
"name": "Component002",
"type": "App::Link",
"label": "Болт001"
}
],
"QInventorAssembly1#Assembly": [
{
"document": "QInventorAssembly1",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "GroundedJoint"
}
],
"QInventorAssembly1#PrototypeAssembly": [
{
"document": "QInventorAssembly1",
"name": "Joints001",
"type": "Assembly::JointGroup",
"label": "Joints001"
},
{
"document": "QInventorAssembly1",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly1",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
}
]
}
},
"after": {
"app_document": "QInventorAssembly1",
"gui_document": "QInventorAssembly1",
"in_edit": {
"QInventorAssembly": null,
"QInventorAssembly1": {
"native_class": "ViewProviderAssembly",
"name": "",
"representation": "<Assembly View provider object at 00000148329EA400>"
},
"QInventorPart": null
},
"selection": [
{
"document": "QInventorAssembly1",
"name": "Подсборка001",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
}
],
"active_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_part": null,
"assembly_groups": {
"QInventorAssembly#Assembly": [
{
"document": "QInventorAssembly",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "Основание закреплено"
},
{
"document": "QInventorAssembly",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
},
{
"document": "QInventorAssembly",
"name": "Component002",
"type": "App::Link",
"label": "Болт001"
}
],
"QInventorAssembly1#Assembly": [
{
"document": "QInventorAssembly1",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "GroundedJoint"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка001",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
}
],
"QInventorAssembly1#PrototypeAssembly": [
{
"document": "QInventorAssembly1",
"name": "Joints001",
"type": "Assembly::JointGroup",
"label": "Joints001"
},
{
"document": "QInventorAssembly1",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly1",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
}
]
}
}
},
{
"requested_source": {
"document": "QInventorPart",
"name": "Body001",
"type": "PartDesign::Body",
"label": "Болт"
},
"item_source": {
"document": "QInventorPart",
"name": "Body001",
"type": "PartDesign::Body",
"label": "Болт"
},
"item_at_click": {
"document": "QInventorPart",
"name": "Body001",
"type": "PartDesign::Body",
"label": "Болт"
},
"rectangle": [
24,
162,
229,
18
],
"viewport": [
253,
198
],
"before": {
"app_document": "QInventorAssembly1",
"gui_document": "QInventorAssembly1",
"in_edit": {
"QInventorAssembly": null,
"QInventorAssembly1": {
"native_class": "ViewProviderAssembly",
"name": "",
"representation": "<Assembly View provider object at 00000148329EA400>"
},
"QInventorPart": null
},
"selection": [
{
"document": "QInventorAssembly1",
"name": "Подсборка001",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
}
],
"active_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_part": null,
"assembly_groups": {
"QInventorAssembly#Assembly": [
{
"document": "QInventorAssembly",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "Основание закреплено"
},
{
"document": "QInventorAssembly",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
},
{
"document": "QInventorAssembly",
"name": "Component002",
"type": "App::Link",
"label": "Болт001"
}
],
"QInventorAssembly1#Assembly": [
{
"document": "QInventorAssembly1",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "GroundedJoint"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка001",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
}
],
"QInventorAssembly1#PrototypeAssembly": [
{
"document": "QInventorAssembly1",
"name": "Joints001",
"type": "Assembly::JointGroup",
"label": "Joints001"
},
{
"document": "QInventorAssembly1",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly1",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
}
]
}
},
"after": {
"app_document": "QInventorAssembly1",
"gui_document": "QInventorAssembly1",
"in_edit": {
"QInventorAssembly": null,
"QInventorAssembly1": {
"native_class": "ViewProviderAssembly",
"name": "",
"representation": "<Assembly View provider object at 00000148329EA400>"
},
"QInventorPart": null
},
"selection": [
{
"document": "QInventorAssembly1",
"name": "Болт",
"type": "App::Link",
"label": "Болт005"
}
],
"active_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_part": null,
"assembly_groups": {
"QInventorAssembly#Assembly": [
{
"document": "QInventorAssembly",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "Основание закреплено"
},
{
"document": "QInventorAssembly",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
},
{
"document": "QInventorAssembly",
"name": "Component002",
"type": "App::Link",
"label": "Болт001"
}
],
"QInventorAssembly1#Assembly": [
{
"document": "QInventorAssembly1",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "GroundedJoint"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка001",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "Болт",
"type": "App::Link",
"label": "Болт005"
}
],
"QInventorAssembly1#PrototypeAssembly": [
{
"document": "QInventorAssembly1",
"name": "Joints001",
"type": "Assembly::JointGroup",
"label": "Joints001"
},
{
"document": "QInventorAssembly1",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly1",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
}
]
}
}
}
],
"fixture_directory": "C:\\Repos\\qinventor\\artifacts\\validation\\bom-gui-fixture-47a83b90a0d34e11a7aab8fd904907d3",
"before_set_edit": {
"app_document": "QInventorAssembly1",
"gui_document": "QInventorAssembly1",
"in_edit": {
"QInventorAssembly": null,
"QInventorAssembly1": null,
"QInventorPart": null
},
"selection": [],
"active_assembly": null,
"view_assembly": null,
"view_part": null,
"assembly_groups": {
"QInventorAssembly#Assembly": [
{
"document": "QInventorAssembly",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "Основание закреплено"
},
{
"document": "QInventorAssembly",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
},
{
"document": "QInventorAssembly",
"name": "Component002",
"type": "App::Link",
"label": "Болт001"
}
],
"QInventorAssembly1#Assembly": [
{
"document": "QInventorAssembly1",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
}
],
"QInventorAssembly1#PrototypeAssembly": [
{
"document": "QInventorAssembly1",
"name": "Joints001",
"type": "Assembly::JointGroup",
"label": "Joints001"
},
{
"document": "QInventorAssembly1",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly1",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
}
]
}
},
"expected_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"after_set_edit": {
"app_document": "QInventorAssembly1",
"gui_document": "QInventorAssembly1",
"in_edit": {
"QInventorAssembly": null,
"QInventorAssembly1": {
"native_class": "ViewProviderAssembly",
"name": "",
"representation": "<Assembly View provider object at 00000148329EA400>"
},
"QInventorPart": null
},
"selection": [],
"active_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_part": null,
"assembly_groups": {
"QInventorAssembly#Assembly": [
{
"document": "QInventorAssembly",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "Основание закреплено"
},
{
"document": "QInventorAssembly",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
},
{
"document": "QInventorAssembly",
"name": "Component002",
"type": "App::Link",
"label": "Болт001"
}
],
"QInventorAssembly1#Assembly": [
{
"document": "QInventorAssembly1",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
}
],
"QInventorAssembly1#PrototypeAssembly": [
{
"document": "QInventorAssembly1",
"name": "Joints001",
"type": "Assembly::JointGroup",
"label": "Joints001"
},
{
"document": "QInventorAssembly1",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly1",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
}
]
}
},
"after_native_command": {
"app_document": "QInventorAssembly1",
"gui_document": "QInventorAssembly1",
"in_edit": {
"QInventorAssembly": null,
"QInventorAssembly1": {
"native_class": "ViewProviderAssembly",
"name": "",
"representation": "<Assembly View provider object at 00000148329EA400>"
},
"QInventorPart": null
},
"selection": [],
"active_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_part": null,
"assembly_groups": {
"QInventorAssembly#Assembly": [
{
"document": "QInventorAssembly",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "Основание закреплено"
},
{
"document": "QInventorAssembly",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
},
{
"document": "QInventorAssembly",
"name": "Component002",
"type": "App::Link",
"label": "Болт001"
}
],
"QInventorAssembly1#Assembly": [
{
"document": "QInventorAssembly1",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
}
],
"QInventorAssembly1#PrototypeAssembly": [
{
"document": "QInventorAssembly1",
"name": "Joints001",
"type": "Assembly::JointGroup",
"label": "Joints001"
},
{
"document": "QInventorAssembly1",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly1",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
}
]
}
},
"before_accept": {
"app_document": "QInventorAssembly1",
"gui_document": "QInventorAssembly1",
"in_edit": {
"QInventorAssembly": null,
"QInventorAssembly1": {
"native_class": "ViewProviderAssembly",
"name": "",
"representation": "<Assembly View provider object at 00000148329EA400>"
},
"QInventorPart": null
},
"selection": [
{
"document": "QInventorAssembly1",
"name": "Болт",
"type": "App::Link",
"label": "Болт005"
}
],
"active_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_part": null,
"assembly_groups": {
"QInventorAssembly#Assembly": [
{
"document": "QInventorAssembly",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "Основание закреплено"
},
{
"document": "QInventorAssembly",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
},
{
"document": "QInventorAssembly",
"name": "Component002",
"type": "App::Link",
"label": "Болт001"
}
],
"QInventorAssembly1#Assembly": [
{
"document": "QInventorAssembly1",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "GroundedJoint"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка001",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "Болт",
"type": "App::Link",
"label": "Болт005"
}
],
"QInventorAssembly1#PrototypeAssembly": [
{
"document": "QInventorAssembly1",
"name": "Joints001",
"type": "Assembly::JointGroup",
"label": "Joints001"
},
{
"document": "QInventorAssembly1",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly1",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
}
]
}
},
"after_accept": {
"app_document": "QInventorAssembly1",
"gui_document": "QInventorAssembly1",
"in_edit": {
"QInventorAssembly": null,
"QInventorAssembly1": {
"native_class": "ViewProviderAssembly",
"name": "",
"representation": "<Assembly View provider object at 00000148329EA400>"
},
"QInventorPart": null
},
"selection": [],
"active_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_assembly": {
"document": "QInventorAssembly1",
"name": "Assembly",
"type": "Assembly::AssemblyObject",
"label": "Сборка спецификации"
},
"view_part": null,
"assembly_groups": {
"QInventorAssembly#Assembly": [
{
"document": "QInventorAssembly",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "Основание закреплено"
},
{
"document": "QInventorAssembly",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
},
{
"document": "QInventorAssembly",
"name": "Component002",
"type": "App::Link",
"label": "Болт001"
}
],
"QInventorAssembly1#Assembly": [
{
"document": "QInventorAssembly1",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "GroundedJoint"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка001",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "Болт",
"type": "App::Link",
"label": "Болт005"
}
],
"QInventorAssembly1#PrototypeAssembly": [
{
"document": "QInventorAssembly1",
"name": "Joints001",
"type": "Assembly::JointGroup",
"label": "Joints001"
},
{
"document": "QInventorAssembly1",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly1",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
}
]
}
},
"actual_links": [
{
"document": "QInventorAssembly1",
"name": "Подсборка",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка001",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "Болт",
"type": "App::Link",
"label": "Болт005"
}
],
"before_count_assert": {
"app_document": "QInventorAssembly1",
"gui_document": "QInventorAssembly1",
"in_edit": {
"QInventorAssembly": null,
"QInventorAssembly1": null,
"QInventorPart": null
},
"selection": [],
"active_assembly": null,
"view_assembly": null,
"view_part": null,
"assembly_groups": {
"QInventorAssembly#Assembly": [
{
"document": "QInventorAssembly",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "Основание закреплено"
},
{
"document": "QInventorAssembly",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
},
{
"document": "QInventorAssembly",
"name": "Component002",
"type": "App::Link",
"label": "Болт001"
}
],
"QInventorAssembly1#Assembly": [
{
"document": "QInventorAssembly1",
"name": "Joints",
"type": "Assembly::JointGroup",
"label": "Joints"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "GroundedJoint",
"type": "App::FeaturePython",
"label": "GroundedJoint"
},
{
"document": "QInventorAssembly1",
"name": "Подсборка001",
"type": "Assembly::AssemblyLink",
"label": "Подсборка"
},
{
"document": "QInventorAssembly1",
"name": "Болт",
"type": "App::Link",
"label": "Болт005"
}
],
"QInventorAssembly1#PrototypeAssembly": [
{
"document": "QInventorAssembly1",
"name": "Joints001",
"type": "Assembly::JointGroup",
"label": "Joints001"
},
{
"document": "QInventorAssembly1",
"name": "Component",
"type": "App::Link",
"label": "Корпус"
},
{
"document": "QInventorAssembly1",
"name": "Component001",
"type": "App::Link",
"label": "Болт"
}
]
}
}
}
],
"count": 3
}
},
{
"name": "drawing_bom_kernel_suite",
"passed": true,
"result": {
"passed": true,
"checks": [
{
"name": "Native table explicit projection scope DAG and no-op",
"passed": true,
"evidence": {
"native_types": [
"Spreadsheet::SheetPython",
"TechDraw::DrawViewSpreadsheet"
],
"draft_is_read_only": true,
"one_create_undo": true,
"no_page_backlink": true,
"snapshot": {
"mode": "flat",
"rows": [
{
"position": "1",
"parent_position": "",
"level": 0,
"part_number": "BOLT",
"name": "Болт",
"quantity": 5,
"quantity_total": 5,
"material": "Сталь",
"density_kg_m3": 7850.000000000001,
"unit_mass_kg": 0.00018840000000000013,
"mass_kg": 0.0009420000000000007,
"source_id": "QInventorPart#Body",
"source_name": "Body",
"source_doc": "QInventorPart",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart#Body|1",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 24.0, 52.0)",
"materials": [
"Сталь"
]
},
{
"position": "2",
"parent_position": "",
"level": 0,
"part_number": "HOUSING",
"name": "Корпус",
"quantity": 2,
"quantity_total": 2,
"material": "Алюминий",
"density_kg_m3": 2700.0,
"unit_mass_kg": 0.0027000000000000014,
"mass_kg": 0.005400000000000003,
"source_id": "QInventorPart#Body001",
"source_name": "Body001",
"source_doc": "QInventorPart",
"is_assembly": false,
"kind": "part",
"row_id": "QInventorPart#Body001|2",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Алюминий', 2700.0, 1000.0, 600.0)",
"materials": [
"Алюминий"
]
}
],
"summary": {
"volume_mm3": 2120.000000000001,
"area_mm2": 1460.0000000000002,
"mass_kg": 0.006342000000000003,
"density_kg_m3": 2991.509433962264,
"material": "Смешанные материалы",
"materials": [
"Сталь",
"Алюминий"
],
"center_mm": [
995.5198675496691,
226.48533585619683,
4.554399243140967
],
"dimensions_mm": [
10.0,
202.00000000000003,
10.000000000000002
],
"solids": 7,
"components": 7,
"assembly_count": 3
},
"cells": {
"A1": "'Поз.",
"B1": "'Обозначение",
"C1": "'Наименование",
"D1": "'Кол.",
"E1": "'Материал",
"F1": "'Масса, кг",
"A2": "'1",
"B2": "'BOLT",
"C2": "'Болт",
"D2": "5",
"E2": "'Сталь",
"F2": "'0,000942",
"A3": "'2",
"B3": "'HOUSING",
"C3": "'Корпус",
"D3": "2",
"E3": "'Алюминий",
"F3": "'0,0054",
"C4": "'Итого",
"F4": "'0,006342"
},
"layout": {
"x_mm": 218.0,
"y_mm": 86.0,
"width_mm": 137.28000000000003,
"height_mm": 28.160000000000004,
"column_widths_native": [
35,
84,
104,
45,
65,
96
],
"row_height_native": 22,
"scale": 3.2,
"text_size_native": 9.0,
"font": "DejaVu Sans",
"last_row": 4,
"cell_start": "A1",
"cell_end": "F4",
"reserved_cells": "A:G",
"minimum_text_height_mm": 2.8800000000000003,
"printed_mass_significant_digits": 8,
"mixed_assembly_material_abbreviation": "Смеш."
},
"source_names": [
"Assembly"
],
"source_labels": [
"Assembly"
],
"geometry_view_names": [
"FrontView",
"TopView",
"IsoView"
],
"sheet_name": "DrawingBOM",
"view_name": "BOMView",
"native_symbol_bounds_mm": {
"width": 137.28000000000003,
"height": 28.160000000000004
}
}
}
},
{
"name": "Automatic source labels native formulas and Undo Redo",
"passed": true,
"evidence": {
"automatic_source_edit": true,
"native_formula_outside_generated_range": 7,
"callback_max_depth": 1,
"all_execute_returns_false": true,
"label_only_observer_and_literal_formula_prefix": true,
"undo_redo_preserved": true
}
},
{
"name": "Explicit scope repair and unrelated invalid body",
"passed": true,
"evidence": {
"explicit_rebind_repairs_old_sheet_invalid": true,
"unrelated_invalid_body_ignored": true,
"mixed_projection_sources_rejected_before_mutation": true,
"material_scope": "Алюминий"
}
},
{
"name": "Native invalid last-good cells and nonhealing validation",
"passed": true,
"evidence": {
"density_error_native_invalid": true,
"cached_valid_pad_rejected": true,
"last_good_cells_preserved": true,
"validate_does_not_heal": true
}
},
{
"name": "Structured quantities and overflow preserving redo",
"passed": true,
"evidence": {
"structured_local_total_quantities": true,
"mixed_material_print_abbreviation": "Смеш.",
"stable_E_cell_type_immediate_native_undo_redo": true,
"D_quantity_native_integer": true,
"quantity_total_metadata_numeric": true,
"native_overflow_reject_preserves_redo_branch": true
}
},
{
"name": "Changing row count preserves user notes",
"passed": true,
"evidence": {
"removed_computed_rows_cleared": true,
"printed_range_updates": true,
"outside_notes_preserved": true
}
},
{
"name": "Native top-root membership updates in one recompute",
"passed": true,
"evidence": {
"actual_projection_source": "Assembly",
"native_solid_counts": [
7,
4,
7
],
"sheet_components": [
7,
4,
7
],
"one_sheet_execute_per_native_recompute": true,
"fresh_native_symbol": true
}
},
{
"name": "Insert Undo Redo and FCStd fresh native process",
"passed": true,
"evidence": {
"create_undo_removes_sheet_and_view": true,
"redo_restores_proxy": true,
"fcstd": "C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-associative.FCStd",
"fresh_native_process": {
"passed": true,
"gui_up": false,
"service_path": "C:\\Repos\\qinventor\\src\\QInventor\\qi_drawing_bom.py",
"service_sha256": "143dfa91623c6ac08c80e02e1671f6628ec18a5fd551bda362d7d99d252a4d11",
"restored_proxy": "DrawingBOMProxy",
"initial": {
"mode": "flat",
"rows": [
{
"position": "1",
"parent_position": "",
"level": 0,
"part_number": "BOLT",
"name": "Болт",
"quantity": 5,
"quantity_total": 5,
"material": "Сталь",
"density_kg_m3": 7850.000000000001,
"unit_mass_kg": 0.00018840000000000013,
"mass_kg": 0.0009420000000000007,
"source_id": "drawing_bom_associative#Body",
"source_name": "Body",
"source_doc": "drawing_bom_associative",
"is_assembly": false,
"kind": "part",
"row_id": "drawing_bom_associative#Body|1",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 24.0, 52.0)",
"materials": [
"Сталь"
]
},
{
"position": "2",
"parent_position": "",
"level": 0,
"part_number": "HOUSING",
"name": "Корпус",
"quantity": 2,
"quantity_total": 2,
"material": "Алюминий",
"density_kg_m3": 2700.0,
"unit_mass_kg": 0.0027000000000000014,
"mass_kg": 0.005400000000000003,
"source_id": "drawing_bom_associative#Body001",
"source_name": "Body001",
"source_doc": "drawing_bom_associative",
"is_assembly": false,
"kind": "part",
"row_id": "drawing_bom_associative#Body001|2",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Алюминий', 2700.0, 1000.0, 600.0)",
"materials": [
"Алюминий"
]
}
],
"summary": {
"volume_mm3": 2120.000000000001,
"area_mm2": 1460.0000000000002,
"mass_kg": 0.006342000000000003,
"density_kg_m3": 2991.509433962264,
"material": "Смешанные материалы",
"materials": [
"Сталь",
"Алюминий"
],
"center_mm": [
995.5198675496691,
226.48533585619683,
4.554399243140967
],
"dimensions_mm": [
10.0,
202.00000000000003,
10.000000000000002
],
"solids": 7,
"components": 7,
"assembly_count": 3
},
"cells": {
"A1": "'Поз.",
"B1": "'Обозначение",
"C1": "'Наименование",
"D1": "'Кол.",
"E1": "'Материал",
"F1": "'Масса, кг",
"A2": "'1",
"B2": "'BOLT",
"C2": "'Болт",
"D2": "5",
"E2": "'Сталь",
"F2": "'0,000942",
"A3": "'2",
"B3": "'HOUSING",
"C3": "'Корпус",
"D3": "2",
"E3": "'Алюминий",
"F3": "'0,0054",
"C4": "'Итого",
"F4": "'0,006342"
},
"layout": {
"x_mm": 218.0,
"y_mm": 86.0,
"width_mm": 137.28000000000003,
"height_mm": 28.160000000000004,
"column_widths_native": [
35,
84,
104,
45,
65,
96
],
"row_height_native": 22,
"scale": 3.2,
"text_size_native": 9.0,
"font": "DejaVu Sans",
"last_row": 4,
"cell_start": "A1",
"cell_end": "F4",
"reserved_cells": "A:G",
"minimum_text_height_mm": 2.8800000000000003,
"printed_mass_significant_digits": 8,
"mixed_assembly_material_abbreviation": "Смеш."
},
"source_names": [
"Assembly"
],
"source_labels": [
"Assembly"
],
"geometry_view_names": [
"FrontView",
"TopView",
"IsoView"
],
"sheet_name": "DrawingBOM",
"view_name": "BOMView",
"native_symbol_bounds_mm": {
"width": 137.28000000000003,
"height": 28.160000000000004
}
},
"edited": {
"mode": "flat",
"rows": [
{
"position": "1",
"parent_position": "",
"level": 0,
"part_number": "BOLT",
"name": "Болт",
"quantity": 5,
"quantity_total": 5,
"material": "Сталь",
"density_kg_m3": 7850.000000000001,
"unit_mass_kg": 0.00037680000000000027,
"mass_kg": 0.0018840000000000013,
"source_id": "drawing_bom_associative#Body",
"source_name": "Body",
"source_doc": "drawing_bom_associative",
"is_assembly": false,
"kind": "part",
"row_id": "drawing_bom_associative#Body|1",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Сталь', 7850.0, 48.0, 92.0)",
"materials": [
"Сталь"
]
},
{
"position": "2",
"parent_position": "",
"level": 0,
"part_number": "HOUSING",
"name": "Корпус",
"quantity": 2,
"quantity_total": 2,
"material": "Алюминий",
"density_kg_m3": 2700.0,
"unit_mass_kg": 0.0027000000000000014,
"mass_kg": 0.005400000000000003,
"source_id": "drawing_bom_associative#Body001",
"source_name": "Body001",
"source_doc": "drawing_bom_associative",
"is_assembly": false,
"kind": "part",
"row_id": "drawing_bom_associative#Body001|2",
"variant_id": "(((1.0, 0.0, 0.0, 1.0, 0.0, 1.0), 1), 'Алюминий', 2700.0, 1000.0, 600.0)",
"materials": [
"Алюминий"
]
}
],
"summary": {
"volume_mm3": 2240.000000000001,
"area_mm2": 1660.0000000000002,
"mass_kg": 0.007284000000000004,
"density_kg_m3": 3251.7857142857147,
"material": "Смешанные материалы",
"materials": [
"Сталь",
"Алюминий"
],
"center_mm": [
995.9052718286656,
227.58649093904452,
4.741350906095553
],
"dimensions_mm": [
10.0,
202.00000000000003,
10.000000000000002
],
"solids": 7,
"components": 7,
"assembly_count": 3
},
"cells": {
"A1": "'Поз.",
"B1": "'Обозначение",
"C1": "'Наименование",
"D1": "'Кол.",
"E1": "'Материал",
"F1": "'Масса, кг",
"A2": "'1",
"B2": "'BOLT",
"C2": "'Болт",
"D2": "5",
"E2": "'Сталь",
"F2": "'0,001884",
"A3": "'2",
"B3": "'HOUSING",
"C3": "'Корпус",
"D3": "2",
"E3": "'Алюминий",
"F3": "'0,0054",
"C4": "'Итого",
"F4": "'0,007284"
},
"layout": {
"x_mm": 218.0,
"y_mm": 86.0,
"width_mm": 137.28000000000003,
"height_mm": 28.160000000000004,
"column_widths_native": [
35,
84,
104,
45,
65,
96
],
"row_height_native": 22,
"scale": 3.2,
"text_size_native": 9.0,
"font": "DejaVu Sans",
"last_row": 4,
"cell_start": "A1",
"cell_end": "F4",
"reserved_cells": "A:G",
"minimum_text_height_mm": 2.8800000000000003,
"printed_mass_significant_digits": 8,
"mixed_assembly_material_abbreviation": "Смеш."
},
"source_names": [
"Assembly"
],
"source_labels": [
"Assembly"
],
"geometry_view_names": [
"FrontView",
"TopView",
"IsoView"
],
"sheet_name": "DrawingBOM",
"view_name": "BOMView",
"native_symbol_bounds_mm": {
"width": 137.28000000000003,
"height": 28.160000000000004
}
},
"undo_redo": true,
"native_exit_code": 0,
"report_path": "C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-reopen-kb1j_hw6\\report.json",
"engine": "C:\\Repos\\qinventor\\runtime\\FreeCAD_1.1.4-Windows-x86_64-py311\\bin\\FreeCADCmd.exe",
"native_pid": 21452
}
}
},
{
"name": "Ordinary mass precision and untruncated text errors",
"passed": true,
"evidence": {
"ordinary_cylinder_mass_printed": "'0,0015536746",
"oversized_text_rejected_without_truncation": true
}
},
{
"name": "Actual native table format position and missing-source guards",
"passed": true,
"evidence": {
"actual_native_xy_checked": true,
"native_font_change_rejected_and_repaired": true,
"native_rotation_rejected_and_repaired": true,
"lost_sheet_source_not_treated_as_absent_table": true,
"validation_read_only": true,
"native_undo_restores_source": true
}
}
],
"summary": {
"total": 10,
"passed": 10,
"failed": 0
},
"gui_exercised": true
}
},
{
"name": "drawing_bom_gui_suite",
"passed": true,
"result": {
"status": "passed",
"passed": 3,
"failed": 0,
"checks": [
{
"name": "Actual ribbon preview cancel insertion mode update native Undo/Redo and A4 bounds",
"passed": true,
"evidence": {
"missing_and_ambiguous_page_rejected_before_dialog": true,
"preview_cancel_exact_native_state": true,
"page_sources_scope": [
"Assembly"
],
"single_native_transaction_create_and_update": true,
"undo_redo_mode": true,
"flat_symbol": {
"texts": [
"Поз.",
"1",
"2",
"",
"Обозначение",
"BOLT",
"HOUSING",
"",
"Наименование",
"Болт",
"Корпус",
"Итого",
"Кол.",
"5",
"2",
"",
"Материал",
"Сталь",
"Алюминий",
"",
"Масса, кг",
"0,000942",
"0,0054",
"0,006342"
],
"printed_bounds_mm": [
149.34249999999997,
71.9025,
286.6575,
100.0975
],
"hash": "7524315da86dbb5c648ab293a320a3ec72312d8449bc6c83e4692b63ecefb083"
},
"structured_symbol": {
"texts": [
"Поз.",
"1",
"1.1",
"1.2",
"2",
"",
"Обозначение",
"SubAssembly",
"BOLT",
"HOUSING",
"BOLT",
"",
"Наименование",
"Узел",
"Болт",
"Корпус",
"Болт",
"Итого",
"Кол.",
"2",
"2",
"1",
"1",
"",
"Всего",
"2",
"4",
"2",
"1",
"",
"Материал",
"Смеш.",
"Сталь",
"Алюминий",
"Сталь",
"",
"Масса, кг",
"0,0061536",
"0,0007536",
"0,0054",
"0,0001884",
"0,006342"
],
"printed_bounds_mm": [
149.25249995000001,
66.84249994999999,
286.74750005,
105.15750005000001
],
"hash": "0439233204940ad7ce427f5e3ab0301ef8877883d9ea1b9bad38cea567260e65"
},
"csv_caption_survives_language_change": true,
"screenshot": "C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-preview.png"
}
},
{
"name": "Live seven-leaf source cells Symbol native PDF/SVG/DXF and independent FCStd restore",
"passed": true,
"evidence": {
"automatic_source_edit_cells_and_symbol": true,
"outside_source_ignored": true,
"updated": {
"svg": "C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-updated.svg",
"pdf": "C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-updated.pdf",
"dxf": "C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-updated.dxf",
"dxf_evidence": {
"version": "AC1021",
"actual_UTF8_text": [
"Поз.",
"1",
"2",
"Обозначение",
"BOLT",
"HOUSING",
"Наименование",
"Болт",
"Корпус",
"Итого",
"Кол.",
"5",
"2",
"Материал",
"Сталь",
"Алюминий",
"Масса, кг",
"0,001884",
"0,0054",
"0,007284"
],
"native_editable_text_readback": [
"Поз.",
"1",
"2",
"Обозначение",
"BOLT",
"HOUSING",
"Наименование",
"Болт",
"Корпус",
"Итого",
"Кол.",
"5",
"2",
"Материал",
"Сталь",
"Алюминий",
"Масса, кг",
"0,001884",
"0,0054",
"0,007284"
],
"native_text_properties": [
{
"name": "Text",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text001",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text002",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text003",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text004",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text005",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text006",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text007",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text008",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text009",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text010",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text011",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text012",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text013",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text014",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text015",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text016",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text017",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text018",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text019",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
}
],
"native_text_edit_restore": true,
"native_projection_entities_unchanged": true,
"native_projection_layers": [
"FrontView",
"IsoView",
"TopView"
],
"grid_paper_bounds_mm": [
149.36,
71.92,
286.64,
100.08
],
"native_reader_stats": {
"dxfVersion": "AC1021",
"dxfEncoding": "utf_8",
"scalingSource": "$INSUNITS",
"fileUnits": "Millimeters",
"finalScalingFactor": 1.0,
"importTimeSeconds": 0.9060992,
"totalEntitiesCreated": 195,
"entityCounts": {
"LINE": 195,
"TEXT": 20
},
"importSettings": {
"Import hidden blocks": "No",
"Import layout objects": "No",
"Import points": "Yes",
"Import texts and dimensions": "Yes",
"Join geometry": "No",
"Manual scaling factor": "1.000000",
"Use colors from the DXF file": "Yes",
"Use layers": "Yes"
},
"unsupportedFeatures": {},
"systemBlockCounts": {
"Other System Blocks": 2
}
}
},
"rendered": [
"C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-updated-svg.png"
],
"actual_SVG_grid_bounds_mm": [
149.377,
109.937,
286.621822,
138.062064
],
"pdf_visual_review": "Separate offline renderer; the CAD runtime does not bundle QtPdf"
},
"FCStd": "C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-bbd0614872a64bbd91261f1962cc1316.FCStd",
"independent_native_restore": {
"native_exit_code": 0,
"report": "C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-restore-_wo4e3mp\\report.json",
"mass_kg_after_edit": 0.007284000000000004
},
"reopened": {
"svg": "C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-reopened.svg",
"pdf": "C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-reopened.pdf",
"dxf": "C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-reopened.dxf",
"dxf_evidence": {
"version": "AC1021",
"actual_UTF8_text": [
"Поз.",
"1",
"2",
"Обозначение",
"BOLT",
"HOUSING",
"Наименование",
"Болт",
"Корпус",
"Итого",
"Кол.",
"5",
"2",
"Материал",
"Сталь",
"Алюминий",
"Масса, кг",
"0,000942",
"0,0054",
"0,006342"
],
"native_editable_text_readback": [
"Поз.",
"1",
"2",
"Обозначение",
"BOLT",
"HOUSING",
"Наименование",
"Болт",
"Корпус",
"Итого",
"Кол.",
"5",
"2",
"Материал",
"Сталь",
"Алюминий",
"Масса, кг",
"0,000942",
"0,0054",
"0,006342"
],
"native_text_properties": [
{
"name": "Text",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text001",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text002",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text003",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text004",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text005",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text006",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text007",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text008",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text009",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text010",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text011",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text012",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text013",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text014",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text015",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text016",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text017",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text018",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
},
{
"name": "Text019",
"type": "App::FeaturePython",
"property_type": "App::PropertyStringList",
"editor_flags": []
}
],
"native_text_edit_restore": true,
"native_projection_entities_unchanged": true,
"native_projection_layers": [
"FrontView",
"IsoView",
"TopView"
],
"grid_paper_bounds_mm": [
149.36,
71.92,
286.64,
100.08
],
"native_reader_stats": {
"dxfVersion": "AC1021",
"dxfEncoding": "utf_8",
"scalingSource": "$INSUNITS",
"fileUnits": "Millimeters",
"finalScalingFactor": 1.0,
"importTimeSeconds": 0.8685385,
"totalEntitiesCreated": 195,
"entityCounts": {
"LINE": 195,
"TEXT": 20
},
"importSettings": {
"Import hidden blocks": "No",
"Import layout objects": "No",
"Import points": "Yes",
"Import texts and dimensions": "Yes",
"Join geometry": "No",
"Manual scaling factor": "1.000000",
"Use colors from the DXF file": "Yes",
"Use layers": "Yes"
},
"unsupportedFeatures": {},
"systemBlockCounts": {
"Other System Blocks": 2
}
}
},
"rendered": [
"C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-reopened-svg.png"
],
"actual_SVG_grid_bounds_mm": [
149.377,
109.937,
286.621822,
138.062064
],
"pdf_visual_review": "Separate offline renderer; the CAD runtime does not bundle QtPdf"
}
}
},
{
"name": "Cached native errors A4 overflow and post-writer fault protect table and old exports",
"passed": true,
"evidence": {
"cached_invalid_shape_rejects_UI_and_export": true,
"A4_overflow_rejects_without_writes": true,
"last_good_table_cells_preserved": true,
"native_writer_fault_after_output": [
"C:\\Repos\\qinventor\\artifacts\\validation\\.qinventor-7oauva9g.svg",
"C:\\Repos\\qinventor\\artifacts\\validation\\.qinventor-5u7rz7w8.dxf"
],
"previous_PDF_SVG_DXF_bytes_preserved": true,
"owned_temps_removed": true,
"user_companion_file_untouched": "C:\\Repos\\qinventor\\artifacts\\validation\\drawing-bom-protected.geometry-check.svg"
}
}
],
"input_delivery": "actual Qt ribbon and drawing BOM controls; native CAD/PDF/SVG/DXF",
"os_pointer_access": false,
"count": 3
}
},
{
"name": "assembly_drawing_command_workflow_suite",
"passed": true,
"result": {
"status": "passed",
"passed": 6,
"failed": 0,
"checks": [
{
"name": "actual_plane_dialog_cancel_without_document",
"passed": true,
"evidence": {
"cancel_clicked": true,
"dialog_seen": true,
"documents_preserved": true,
"no_active_document": true
}
},
{
"name": "assembly_drawing_command_definition_edit_and_fcstd_exports",
"passed": true,
"evidence": {
"selection_required": false,
"linked_components": 3,
"views": 3,
"definition_edits_update_native_projections": true,
"fcstd_reopen_preserves_associativity": true,
"pdf_bytes": 225610,
"svg_bytes": 29847
}
},
{
"name": "empty_document_drawing_rejected_without_mutation",
"passed": true,
"evidence": {
"empty_rejected": true,
"objects_and_history_preserved": true
}
},
{
"name": "assembly_title_material_follows_actual_view_sources",
"passed": true,
"evidence": {
"drawing_source": "Component",
"material": "Сталь",
"unrelated_aluminum_part_ignored_by_title": true
}
},
{
"name": "failed_cached_native_solid_drawing_rejected_without_mutation",
"passed": true,
"evidence": {
"native_error": "Cannot create a pad with a total length of zero.",
"cached_volume_mm3": 999.9999999999998,
"page_not_created": true,
"objects_and_history_preserved": true
}
},
{
"name": "existing_page_cached_linked_source_exports_rejected",
"passed": true,
"evidence": {
"linked_cached_native_failure_rejected": {
"dxf": "Объект «Выдавливание» содержит ошибку перестроения. Исправьте операцию перед экспортом чертежа.",
"pdf": "Объект «Выдавливание» содержит ошибку перестроения. Исправьте операцию перед экспортом чертежа.",
"svg": "Объект «Выдавливание» содержит ошибку перестроения. Исправьте операцию перед экспортом чертежа."
},
"cached_volume_mm3": 999.9999999999998,
"existing_outputs_and_absent_directories_preserved": true,
"native_wire_page_exports_despite_unrelated_failed_source": {
"dxf": 7004,
"pdf": 214154,
"svg": 7099
}
}
}
],
"artifacts": [
"C:\\Repos\\qinventor\\artifacts\\validation\\command-plane-cancel-dialog.png",
"C:\\Repos\\qinventor\\artifacts\\validation\\command-assembly-drawing-snapshots.json",
"C:\\Repos\\qinventor\\artifacts\\validation\\command-assembly-drawing-before.png",
"C:\\Repos\\qinventor\\artifacts\\validation\\command-assembly-drawing-updated.png",
"C:\\Repos\\qinventor\\artifacts\\validation\\command-assembly-drawing.FCStd",
"C:\\Repos\\qinventor\\artifacts\\validation\\command-assembly-drawing.svg",
"C:\\Repos\\qinventor\\artifacts\\validation\\command-assembly-drawing.pdf",
"C:\\Repos\\qinventor\\artifacts\\validation\\command-assembly-drawing-reopened.png",
"C:\\Repos\\qinventor\\artifacts\\validation\\command-assembly-title-material-scope.png"
]
}
},
{
"name": "sketch_dimension_finish_pad_workflow",
"passed": true,
"result": {
"sketch": "Sketch",
"volume_mm3": 12000.0
}
},
{
"name": "cancel_new_and_existing_sketch",
"passed": true,
"result": {
"existing_restored": true,
"new_removed": true
}
},
{
"name": "drawing_pdf_svg_export",
"passed": true,
"result": {
"page": "Drawing",
"pdf_bytes": 163077,
"views": 3
}
},
{
"name": "russian_native_and_custom_surfaces",
"passed": true,
"result": {
"supplemental_sources": 385,
"visible_untranslated": 0,
"native_menu_titles": [
"Файл",
"Изменить",
"Вид",
"Инструменты",
"Макросы",
"QInventor",
"Окна",
"Справка"
],
"parameter_backend_error_russian": true,
"deleted_parameter_object_error_russian": true
}
},
{
"name": "shipped_examples",
"passed": true,
"result": [
"bracket.FCStd",
"bracket.step",
"assembly.FCStd",
"assembly.step"
]
},
{
"name": "source_snapshot_consistent",
"passed": true,
"result": true
}
],
"passed": 26,
"failed": 0,
"source_sha256": [
{
"path": "scripts\\bootstrap.ps1",
"sha256": "aeecd11aa2b609fbbbc6d4bcaf6eb6a4c236913aff26cd5096b3cb5a33dd499c"
},
{
"path": "scripts\\build-launcher.ps1",
"sha256": "b78168056b1009576872bc7d93f35fb7db5d409e8dd24418cfe74b42c30c6c7e"
},
{
"path": "scripts\\launcher\\Program.cs",
"sha256": "7cee5b394ba055bb63619a5aef4c9b9db82055c3ca1a61a2550da221a996cfc5"
},
{
"path": "scripts\\launcher\\QInventor.Launcher.csproj",
"sha256": "b46bb80c4b39b66a66b9d2e25ba97c186a9ca48d9e6bc4cdd11531b9c89990d8"
},
{
"path": "scripts\\launcher\\RuntimePath.cs",
"sha256": "13fd9e93326afef703fa1926f83ea519dceaccb3781526e1e5e2c23243f78057"
},
{
"path": "scripts\\package.ps1",
"sha256": "9352bd79ee9ac41a1766745a86fd1e1c9193163f544cf838e122dcf4b770fdbb"
},
{
"path": "scripts\\render-icon.py",
"sha256": "2063594fde4d169f141b3a386f455be1f116b3c8a01f8bb257f4ff575b02aa42"
},
{
"path": "scripts\\startup.FCMacro",
"sha256": "813b4e857b3e184f3a41c7b72debfd995e7ee36ad2532aa3f57a4c878d6fc38b"
},
{
"path": "scripts\\sync.ps1",
"sha256": "e1349b8d1527bab9f700d0e8418a6e6be6d3df97838103efc5c473d2bcb3a5de"
},
{
"path": "scripts\\test.ps1",
"sha256": "6e827d4aa63e150006b2a77e77243d8445612d684bb0cea79ef4d67811c599dd"
},
{
"path": "scripts\\translator-probe.py",
"sha256": "5ee83e97742a65eb147227cf6c020f4307122908a3c06e1417727ee603a819ae"
},
{
"path": "src\\QInventor\\Init.py",
"sha256": "7d2681813d2efe5a3b79147da578b67290117e61575e4e1735dd6a9aab7a37e1"
},
{
"path": "src\\QInventor\\InitGui.py",
"sha256": "0f6fa12520a656980d3a3d61582cfcbebfa3f41728d63b75ad2fb001116a850e"
},
{
"path": "src\\QInventor\\qi_bom.py",
"sha256": "548b7196392650b790f8263440cc12039eb1aae20c19ce6158e4588f9cc2053d"
},
{
"path": "src\\QInventor\\qi_bom_ui.py",
"sha256": "522ea28fcce9f7a22e0ea107304ca32406846ec99af16b6adf04ef3da008811d"
},
{
"path": "src\\QInventor\\qi_commands.py",
"sha256": "19816cbda6a9cc15023484022d0a13f84bd176d6e9eae0b681b968da21732f61"
},
{
"path": "src\\QInventor\\qi_drawing_bom.py",
"sha256": "143dfa91623c6ac08c80e02e1671f6628ec18a5fd551bda362d7d99d252a4d11"
},
{
"path": "src\\QInventor\\qi_drawing_bom_export.py",
"sha256": "1e0fbe90cafcf2321ce4eae90868211be7db105767f98bcf42789950d52dab2f"
},
{
"path": "src\\QInventor\\qi_drawing_bom_ui.py",
"sha256": "8a50502dd648a42a2e6e4b436972c67b71ec0683f0c4276b13f313357d0c103a"
},
{
"path": "src\\QInventor\\qi_extrude.py",
"sha256": "03b5b7eea4adbf168d623995e84e0d3af4ccea58494b3b34542b10447ef0c072"
},
{
"path": "src\\QInventor\\qi_io.py",
"sha256": "77ea249f6d3a374e89ac294e0de8a386356ed47f908ba494cbe8fea37c34df1f"
},
{
"path": "src\\QInventor\\qi_localization.py",
"sha256": "84041c5888157e7844b99ebda3fddf9e86531667c9e1aa56cde917795f1b91e1"
},
{
"path": "src\\QInventor\\qi_messages.py",
"sha256": "5c0c41cf0c1bd60f30d0aec0da6934c2af70a88765d86c07e500046714eeecb5"
},
{
"path": "src\\QInventor\\qi_model.py",
"sha256": "08c094382cfadd5e94e3ab6d1ce01ad1214985cc2a3222814ab5b2da26c4d762"
},
{
"path": "src\\QInventor\\qi_parameters.py",
"sha256": "9f384e40b930b6ebc4e7f068651c0797134818803b82704258e26215997c01c2"
},
{
"path": "src\\QInventor\\qi_parameters_ui.py",
"sha256": "4e10337d61bb38f229736f0e877d16cc99106943fa3a8f4333fa905aad7ec19f"
},
{
"path": "src\\QInventor\\qi_projection.py",
"sha256": "a4923dd69f7dcb3230a4b60bd001698d90d6d02db5aa016362034ee73520925d"
},
{
"path": "src\\QInventor\\qi_sketch_offset.py",
"sha256": "ffb0f2a000b91528587110d7f5d47b7e26902b499e1b35220e3c09fc89786cb9"
},
{
"path": "src\\QInventor\\qi_sketch_patterns.py",
"sha256": "c98dfd369c639436f0aed0664cf43cc6345b6639c102309efb90041fe65d4e1e"
},
{
"path": "src\\QInventor\\qi_sketch_preview.py",
"sha256": "4858dc39046bad95306179212fe44a63e2e1437259a9c6d14bc847b68c7aab76"
},
{
"path": "src\\QInventor\\qi_sketch_ui.py",
"sha256": "d505b802c65f1566a64d7687e290a64226aff91958db59b8d621ac69909ead37"
},
{
"path": "src\\QInventor\\qi_step_export.py",
"sha256": "754f7f8b841f87a696ddf800e19f947d5e8712fc53faf8fce4d2d0d0f3ee51f6"
},
{
"path": "src\\QInventor\\qi_ui.py",
"sha256": "7432d1939919b30e5fc81cd333caf220ca3b490d71851328aa26d8070a7ac307"
},
{
"path": "src\\QInventor\\qi_workbench.py",
"sha256": "312d49f40d78e8bde48cd8fa57232cd380565fe5b30a688e4612d57bde210c59"
},
{
"path": "src\\QInventor\\resources\\qinventor-a4.svg",
"sha256": "f77419e8559cb24b29a62ebcdc02d781f52c6910c0299d4820d1dd8c820c4128"
},
{
"path": "src\\QInventor\\resources\\qinventor.ico",
"sha256": "ea229e71d0fcdd749c35977fc0f11720a972c3ee04b3d9042d850182e0a6ed1c"
},
{
"path": "src\\QInventor\\resources\\qinventor.png",
"sha256": "3de618b2d07a1fd36a14f71d3f0b85f36a5dcc22ccf070b4629491da6e6f9e32"
},
{
"path": "src\\QInventor\\resources\\qinventor.svg",
"sha256": "12e95fa28c4aaf927311a777b3928d0518799e51663aab2f0f036015210dc954"
},
{
"path": "tests\\assembly_suite.py",
"sha256": "988aaa37573ab5c6543fd4f8f67b7fa7fff604721dcc6fe31b7c71abea747709"
},
{
"path": "tests\\bom_gui_suite.py",
"sha256": "043aa3632033bf5a6cc4fba0b1167b9cc6e89610f1db562067b00b32c62640de"
},
{
"path": "tests\\bom_suite.py",
"sha256": "2a52ef5fb7f99f4f21d6858f0860eba2db0a18993f7092059029c3f73b145f9e"
},
{
"path": "tests\\command_workflows_suite.py",
"sha256": "9c2cd271b6cde306dc9c228755579c299ead6ab6d4773d83dfefe7b37ecdb950"
},
{
"path": "tests\\drawing_bom_gui_suite.py",
"sha256": "12a60a1f8550922b5e3b069df09e3416111e367ba82a1d2f25fed5abf7555393"
},
{
"path": "tests\\drawing_bom_suite.py",
"sha256": "3da48ba3aa9b7f70ac02732fe41699776542d72e840a4d5843bc98f9e72a2509"
},
{
"path": "tests\\extrude_suite.py",
"sha256": "83da33ea4ce4d5da538f46e0a03a88acdb4e46a1424da32d899602a4b735605a"
},
{
"path": "tests\\gui_suite.py",
"sha256": "87cee20dc57dffa1384be594d7e8ba96580808685c0ec9419c8fd3a3a4f9007b"
},
{
"path": "tests\\io_suite.py",
"sha256": "53f8662e37fac45216d2858e732a2e8bbccf3d344c607aa57a99d9cb8d630c45"
},
{
"path": "tests\\kernel_suite.py",
"sha256": "bfd56a485e11b76f4b402439185db813601d93ce001b54a68e0303826157f3f8"
},
{
"path": "tests\\parameter_preflight_suite.py",
"sha256": "dc0dd00f59ea60baa90ab6930d7b8a68ebcb33f5e5ea00f3354d94a67d75a966"
},
{
"path": "tests\\parameter_table_gui_suite.py",
"sha256": "c19beaaf1c0dda693dbdd964319b1c199ea51bb79a4300f0b15177c15b5f8489"
},
{
"path": "tests\\parameter_table_suite.py",
"sha256": "f0c9eb2975bbac0a5d6a0a6f50bf64bc8cbd094b09942c167207574d3e1ba895"
},
{
"path": "tests\\parameters_suite.py",
"sha256": "7bbcc44d6d9f1595ac2ab90e8a8f01fb1d0d0acfd32294241d3ef595713f985b"
},
{
"path": "tests\\probe.FCMacro",
"sha256": "928efa45b20a145f313cf2ae6dcbcbc7ee9f3609df67ec678078aed8e264bd07"
},
{
"path": "tests\\projection_suite.py",
"sha256": "77770dc7c82656794ed68770d26c5da7871f2a8949ea8acc7ee637f8caaa1d24"
},
{
"path": "tests\\ribbon_camera_probe.FCMacro",
"sha256": "ed96daba842fbd362bf2ce7ec8014e011a46cc0941fae48b05f78714aeefc3c6"
},
{
"path": "tests\\ribbon_gui.FCMacro",
"sha256": "bbaa7367526cb924f096a97bc3f6005a6184061955abfdd15d0e91d1f5986575"
},
{
"path": "tests\\ribbon_probe.FCMacro",
"sha256": "b519579dcb0cee106aa40caf674fa611e105168299e933fe9930ac20a6238872"
},
{
"path": "tests\\ribbon_suite.py",
"sha256": "b5d5459532bdfb7113da2fea228248e87aa0e7abfa8ecec116e1222141aae05b"
},
{
"path": "tests\\sketch_offset_suite.py",
"sha256": "97de15e62d59b7c3113dda26d48670163853acf8a404067d676c6db3a2cc82f1"
},
{
"path": "tests\\sketch_operations_gui_suite.py",
"sha256": "4b088da978f506f3afe04fac6c9a3762895eb8fb1f21b2e7f5d8f08a656e53a1"
},
{
"path": "tests\\sketch_patterns_suite.py",
"sha256": "2205b605bd5ab7b8077cbd2421bdb469105d04daa5806fdc02edadb7a5f68414"
}
],
"finished": "2026-10-15T16:56:17.295721+03:00",
"native_exit_code": 0
},
"version": "1.0.0",
"officialRuntimeArchiveSha256": "4828741fc91ee37fafcdb97a1abacb18b04ba451ac4372d9ff7a7349b36f4d6d",
"platform": "Windows x64"
}