From 3249432a177b03e697bc0cf42253bfe5bfb326f6 Mon Sep 17 00:00:00 2001 From: mpv Date: Thu, 28 Apr 2022 15:06:00 +0300 Subject: [PATCH] bos #29482 Export of colors and names to STEP. --- src/ExchangePlugin/CMakeLists.txt | 1 - .../ExchangePlugin_ExportFeature.cpp | 8 +- .../ExchangePlugin_ImportFeature.cpp | 13 +- src/ExchangePlugin/Test/TestStep1.py | 330 +++++ src/ExchangePlugin/Test/TestStep2.py | 68 + .../Test/data/pipe_with_colors_and_names.stp | 1191 +++++++++++++++++ src/ExchangePlugin/Test/tests.set | 4 +- src/GDMLPlugin/CMakeLists.txt | 1 - src/GeomAlgoAPI/GeomAlgoAPI_BoundingBox.cpp | 6 +- src/GeomAlgoAPI/GeomAlgoAPI_BoundingBox.h | 7 +- src/GeomAlgoAPI/GeomAlgoAPI_STEPExport.cpp | 159 ++- src/GeomAlgoAPI/GeomAlgoAPI_STEPExport.h | 13 +- .../GeomAlgoAPI_STEPImportXCAF.cpp | 31 +- src/GeomAlgoAPI/GeomAlgoAPI_STEPImportXCAF.h | 36 +- src/Model/Model_BodyBuilder.cpp | 4 +- src/Model/Model_Document.cpp | 9 +- src/Model/Model_Session.cpp | 8 +- src/Model/Model_Session.h | 6 +- src/ModelAPI/CMakeLists.txt | 5 - src/ModelAPI/ModelAPI_Events.cpp | 3 +- src/ModelAPI/ModelAPI_Events.h | 3 +- src/ModelAPI/ModelAPI_Session.h | 9 - src/ModelHighAPI/CMakeLists.txt | 3 - src/ModelHighAPI/ModelHighAPI_Dumper.cpp | 8 +- .../ModelHighAPI_FeatureStore.cpp | 20 +- src/ModelHighAPI/ModelHighAPI_Services.cpp | 5 +- src/SketchPlugin/CMakeLists.txt | 1 - src/XGUI/CMakeLists.txt | 1 + src/XGUI/XGUI_Workshop.cpp | 6 +- 29 files changed, 1810 insertions(+), 149 deletions(-) create mode 100644 src/ExchangePlugin/Test/TestStep1.py create mode 100644 src/ExchangePlugin/Test/TestStep2.py create mode 100644 src/ExchangePlugin/Test/data/pipe_with_colors_and_names.stp diff --git a/src/ExchangePlugin/CMakeLists.txt b/src/ExchangePlugin/CMakeLists.txt index 841cc4cd4..aa8e054b0 100755 --- a/src/ExchangePlugin/CMakeLists.txt +++ b/src/ExchangePlugin/CMakeLists.txt @@ -32,7 +32,6 @@ INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/Events ${PROJECT_SOURCE_DIR}/src/XAO ${PROJECT_SOURCE_DIR}/src/ConstructionPlugin ${PROJECT_SOURCE_DIR}/src/PartSetPlugin - ${OpenCASCADE_INCLUDE_DIR} ${QT_INCLUDES} ) diff --git a/src/ExchangePlugin/ExchangePlugin_ExportFeature.cpp b/src/ExchangePlugin/ExchangePlugin_ExportFeature.cpp index f8fd34a8a..54400c686 100644 --- a/src/ExchangePlugin/ExchangePlugin_ExportFeature.cpp +++ b/src/ExchangePlugin/ExchangePlugin_ExportFeature.cpp @@ -27,7 +27,6 @@ #include #endif - #include #include @@ -153,7 +152,6 @@ void ExchangePlugin_ExportFeature::attributeChanged(const std::string& theID) string(ExchangePlugin_ExportFeature::FILE_PATH_ID())->setValue( string(ExchangePlugin_ExportFeature::STL_FILE_PATH_ID())->value()); } - } /* @@ -205,6 +203,7 @@ void ExchangePlugin_ExportFeature::exportFile(const std::string& theFileName, AttributeSelectionListPtr aSelectionListAttr = this->selectionList(ExchangePlugin_ExportFeature::SELECTION_LIST_ID()); std::list aShapes; + std::list aContexts; for (int i = 0, aSize = aSelectionListAttr->size(); i < aSize; ++i) { AttributeSelectionPtr anAttrSelection = aSelectionListAttr->value(i); @@ -218,7 +217,10 @@ void ExchangePlugin_ExportFeature::exportFile(const std::string& theFileName, if (aCurShape.get() == NULL) aCurShape = anAttrSelection->context()->shape(); if (aCurShape.get() != NULL) + { aShapes.push_back(aCurShape); + aContexts.push_back(anAttrSelection->context()); + } } // Store compound if we have more than one shape. @@ -231,7 +233,7 @@ void ExchangePlugin_ExportFeature::exportFile(const std::string& theFileName, if (aFormatName == "BREP") { aResult = BREPExport(theFileName, aFormatName, aShape, anError); } else if (aFormatName == "STEP") { - aResult = STEPExport(theFileName, aFormatName, aShape, anError); + aResult = STEPExport(theFileName, aShapes, aContexts, anError); } else if (aFormatName.substr(0, 4) == "IGES") { aResult = IGESExport(theFileName, aFormatName, aShape, anError); } else { diff --git a/src/ExchangePlugin/ExchangePlugin_ImportFeature.cpp b/src/ExchangePlugin/ExchangePlugin_ImportFeature.cpp index a4f1e54dd..91c6c188a 100644 --- a/src/ExchangePlugin/ExchangePlugin_ImportFeature.cpp +++ b/src/ExchangePlugin/ExchangePlugin_ImportFeature.cpp @@ -168,19 +168,16 @@ void ExchangePlugin_ImportFeature::importFile(const std::string& theFileName) data()->setName(Locale::Convert::toWString(anObjectName)); ResultBodyPtr aResult = document()->createBody(data()); - - bool anColorGroupSelected = boolean(ExchangePlugin_ImportFeature::STEP_COLORS_ID())->value(); - bool anMaterialsGroupSelected = - boolean(ExchangePlugin_ImportFeature::STEP_MATERIALS_ID())->value(); + bool anColorGroupSelected = false, anMaterialsGroupSelected = false; if (anExtension == "BREP" || anExtension == "BRP") { aGeomShape = BREPImport(theFileName, anExtension, anError); } else if (anExtension == "STEP" || anExtension == "STP") { - bool anScalInterUnits = - boolean(ExchangePlugin_ImportFeature::STEP_SCALE_INTER_UNITS_ID())->value(); + bool anScalInterUnits = boolean(STEP_SCALE_INTER_UNITS_ID())->value(); + anColorGroupSelected = boolean(STEP_COLORS_ID())->value(); + anMaterialsGroupSelected = boolean(STEP_MATERIALS_ID())->value(); // Process groups/fields - std::shared_ptr aRefListOfGroups = - std::dynamic_pointer_cast(data()->attribute(FEATURES_ID())); + AttributeRefListPtr aRefListOfGroups = reflist(FEATURES_ID()); // Remove previous groups/fields stored in RefList std::list anGroupList = aRefListOfGroups->list(); diff --git a/src/ExchangePlugin/Test/TestStep1.py b/src/ExchangePlugin/Test/TestStep1.py new file mode 100644 index 000000000..668237990 --- /dev/null +++ b/src/ExchangePlugin/Test/TestStep1.py @@ -0,0 +1,330 @@ +# Copyright (C) 2014-2022 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +from salome.shaper import model + +from SketchAPI import * + +model.begin() +partSet = model.moduleDocument() + +### Create Part +Part_1 = model.addPart(partSet) +Part_1_doc = Part_1.document() +model.addParameter(Part_1_doc, "LGX", '3.0') +model.addParameter(Part_1_doc, "LGY", '2.825') +model.addParameter(Part_1_doc, "HTR", '1.2') + +### Create Sketch +Sketch_1 = model.addSketch(Part_1_doc, model.standardPlane("YOZ")) + +### Create SketchLine +SketchLine_1 = Sketch_1.addLine(0, 0, 1.165, 0) + +### Create SketchProjection +SketchProjection_1 = Sketch_1.addProjection(model.selection("VERTEX", "PartSet/Origin"), False) +SketchPoint_1 = SketchProjection_1.createdFeature() +Sketch_1.setCoincident(SketchLine_1.startPoint(), SketchPoint_1.result()) + +### Create SketchProjection +SketchProjection_2 = Sketch_1.addProjection(model.selection("EDGE", "PartSet/OY"), False) +SketchLine_2 = SketchProjection_2.createdFeature() +Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_2.result()) + +### Create SketchLine +SketchLine_3 = Sketch_1.addLine(1.165, 0, 1.165, 0.5) +Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_3.startPoint()) +Sketch_1.setVertical(SketchLine_3.result()) + +### Create SketchLine +SketchLine_4 = Sketch_1.addLine(1.165, 0.5, 1.665, 0.5) +Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint()) +Sketch_1.setHorizontal(SketchLine_4.result()) + +### Create SketchLine +SketchLine_5 = Sketch_1.addLine(1.665, 0.5, 1.665, 0) +Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_5.startPoint()) +Sketch_1.setVertical(SketchLine_5.result()) + +### Create SketchLine +SketchLine_6 = Sketch_1.addLine(1.665, 0, 2.825, 0) +Sketch_1.setCoincident(SketchLine_5.endPoint(), SketchLine_6.startPoint()) +Sketch_1.setHorizontal(SketchLine_6.result()) + +### Create SketchLine +SketchLine_7 = Sketch_1.addLine(2.825, 0, 2.825, 1.2) +Sketch_1.setCoincident(SketchLine_6.endPoint(), SketchLine_7.startPoint()) +Sketch_1.setVertical(SketchLine_7.result()) + +### Create SketchLine +SketchLine_8 = Sketch_1.addLine(2.825, 1.2, 0, 1.2) +Sketch_1.setCoincident(SketchLine_7.endPoint(), SketchLine_8.startPoint()) + +### Create SketchProjection +SketchProjection_3 = Sketch_1.addProjection(model.selection("EDGE", "PartSet/OZ"), False) +SketchLine_9 = SketchProjection_3.createdFeature() +Sketch_1.setCoincident(SketchLine_8.endPoint(), SketchLine_9.result()) +Sketch_1.setHorizontal(SketchLine_8.result()) + +### Create SketchLine +SketchLine_10 = Sketch_1.addLine(0, 1.2, 0, 0) +Sketch_1.setCoincident(SketchLine_8.endPoint(), SketchLine_10.startPoint()) +Sketch_1.setCoincident(SketchLine_1.startPoint(), SketchLine_10.endPoint()) +Sketch_1.setLength(SketchLine_8.result(), "LGY") +Sketch_1.setLength(SketchLine_10.result(), "HTR") +Sketch_1.setLength(SketchLine_3.result(), "HTR/1.2*0.5") +Sketch_1.setLength(SketchLine_4.result(), "LGY/2.825*0.5") +Sketch_1.setLength(SketchLine_1.result(), "LGY/2.825*1.165") +Sketch_1.setCoincident(SketchLine_5.endPoint(), SketchLine_2.result()) +model.do() + +### Create Face +Face_1 = model.addFace(Part_1_doc, [model.selection("COMPOUND", "all-in-Sketch_1")]) + +### Create Sketch +Sketch_2 = model.addSketch(Part_1_doc, model.standardPlane("XOZ")) + +### Create SketchLine +SketchLine_11 = Sketch_2.addLine(0, 0, 0.9999999999999999, 0) + +### Create SketchProjection +SketchProjection_4 = Sketch_2.addProjection(model.selection("VERTEX", "Sketch_1/SketchLine_10_EndVertex"), False) +SketchPoint_2 = SketchProjection_4.createdFeature() +Sketch_2.setCoincident(SketchLine_11.startPoint(), SketchPoint_2.result()) + +### Create SketchProjection +SketchProjection_5 = Sketch_2.addProjection(model.selection("EDGE", "PartSet/OX"), False) +SketchLine_12 = SketchProjection_5.createdFeature() +Sketch_2.setCoincident(SketchLine_11.endPoint(), SketchLine_12.result()) + +### Create SketchLine +SketchLine_13 = Sketch_2.addLine(0.9999999999999999, 0, 1, 0.95) +Sketch_2.setCoincident(SketchLine_11.endPoint(), SketchLine_13.startPoint()) +Sketch_2.setVertical(SketchLine_13.result()) + +### Create SketchLine +SketchLine_14 = Sketch_2.addLine(1, 0.95, 2.25, 0.95) +Sketch_2.setCoincident(SketchLine_13.endPoint(), SketchLine_14.startPoint()) +Sketch_2.setHorizontal(SketchLine_14.result()) + +### Create SketchLine +SketchLine_15 = Sketch_2.addLine(2.25, 0.95, 2.25, 0) +Sketch_2.setCoincident(SketchLine_14.endPoint(), SketchLine_15.startPoint()) +Sketch_2.setCoincident(SketchLine_15.endPoint(), SketchLine_12.result()) + +### Create SketchLine +SketchLine_16 = Sketch_2.addLine(2.25, 0, 3, 0) +Sketch_2.setCoincident(SketchLine_15.endPoint(), SketchLine_16.startPoint()) +Sketch_2.setCoincident(SketchLine_16.endPoint(), SketchLine_12.result()) + +### Create SketchLine +SketchLine_17 = Sketch_2.addLine(3, 0, 3, 1.2) +Sketch_2.setCoincident(SketchLine_16.endPoint(), SketchLine_17.startPoint()) + +### Create SketchLine +SketchLine_18 = Sketch_2.addLine(3, 1.2, 0, 1.2) +Sketch_2.setCoincident(SketchLine_17.endPoint(), SketchLine_18.startPoint()) + +### Create SketchProjection +SketchProjection_6 = Sketch_2.addProjection(model.selection("VERTEX", "Sketch_1/SketchLine_10_StartVertex"), False) +SketchPoint_3 = SketchProjection_6.createdFeature() +Sketch_2.setCoincident(SketchLine_18.endPoint(), SketchPoint_3.result()) +Sketch_2.setHorizontal(SketchLine_18.result()) +Sketch_2.setVertical(SketchLine_17.result()) +Sketch_2.setVertical(SketchLine_15.result()) +Sketch_2.setLength(SketchLine_11.result(), "LGX/3.") +Sketch_2.setLength(SketchLine_14.result(), "LGX/3.*1.25") +Sketch_2.setLength(SketchLine_18.result(), "LGX") +Sketch_2.setLength(SketchLine_13.result(), "HTR/1.2*0.95") + +### Create SketchLine +SketchLine_19 = Sketch_2.addLine(0, 1.2, 0, 0) +Sketch_2.setCoincident(SketchLine_18.endPoint(), SketchLine_19.startPoint()) +Sketch_2.setCoincident(SketchLine_11.startPoint(), SketchLine_19.endPoint()) +model.do() + +### Create Face +Face_2 = model.addFace(Part_1_doc, [model.selection("COMPOUND", "all-in-Sketch_2")]) + +### Create Sketch +Sketch_3 = model.addSketch(Part_1_doc, model.selection("FACE", "Face_1_1")) + +### Create SketchLine +SketchLine_20 = Sketch_3.addLine(1.325, 0, 0, 0) +Sketch_3.setHorizontal(SketchLine_20.result()) + +### Create SketchProjection +SketchProjection_7 = Sketch_3.addProjection(model.selection("VERTEX", "Face_1_1/Modified_Vertex&Sketch_1/SketchLine_10_EndVertex&Sketch_1/SketchLine_1_StartVertex"), False) +SketchPoint_4 = SketchProjection_7.createdFeature() +Sketch_3.setCoincident(SketchLine_20.endPoint(), SketchPoint_4.result()) + +### Create SketchLine +SketchLine_21 = Sketch_3.addLine(0, 0, 0, 1.2) +Sketch_3.setVertical(SketchLine_21.result()) + +### Create SketchLine +SketchLine_22 = Sketch_3.addLine(0, 1.2, 1.325, 1.2) +Sketch_3.setHorizontal(SketchLine_22.result()) +Sketch_3.setLength(SketchLine_22.result(), "LGY/2.825*1.325") + +### Create SketchLine +SketchLine_23 = Sketch_3.addLine(1.325, 1.2, 1.325, 0) +Sketch_3.setCoincident(SketchLine_23.endPoint(), SketchLine_20.startPoint()) +Sketch_3.setCoincident(SketchLine_20.endPoint(), SketchLine_21.startPoint()) +Sketch_3.setCoincident(SketchLine_21.endPoint(), SketchLine_22.startPoint()) +Sketch_3.setCoincident(SketchLine_22.endPoint(), SketchLine_23.startPoint()) +Sketch_3.setVertical(SketchLine_23.result()) + +### Create SketchProjection +SketchProjection_8 = Sketch_3.addProjection(model.selection("EDGE", "Face_1_1/Modified_Edge&Sketch_1/SketchLine_8"), False) +SketchLine_24 = SketchProjection_8.createdFeature() +Sketch_3.setCoincident(SketchLine_22.endPoint(), SketchLine_24.result()) +model.do() + +### Create Face +Face_3 = model.addFace(Part_1_doc, [model.selection("COMPOUND", "all-in-Sketch_3")]) + +### Create Translation +Translation_1 = model.addTranslation(Part_1_doc, [model.selection("COMPOUND", "all-in-Face_3")], axis = model.selection("EDGE", "PartSet/OX"), distance = "LGX", keepSubResults = True) + +### Create Plane +Plane_4 = model.addPlane(Part_1_doc, model.selection("VERTEX", "Sketch_2/SketchLine_17_EndVertex"), model.selection("VERTEX", "Translation_1_1_1/MV:Translated&Sketch_3/SketchLine_22_EndVertex&Sketch_3/SketchLine_23_StartVertex"), model.selection("VERTEX", "Face_1_1/Modified_Vertex&Sketch_1/SketchLine_8_StartVertex&Sketch_1/SketchLine_7_EndVertex")) + +### Create Sketch +Sketch_4 = model.addSketch(Part_1_doc, model.selection("FACE", "Plane_1")) + +### Create SketchLine +SketchLine_25 = Sketch_4.addLine(0, 0, 3, 0) + +### Create SketchProjection +SketchProjection_9 = Sketch_4.addProjection(model.selection("VERTEX", "Sketch_3/SketchLine_21_EndVertex"), False) +SketchPoint_5 = SketchProjection_9.createdFeature() +Sketch_4.setCoincident(SketchLine_25.startPoint(), SketchPoint_5.result()) + +### Create SketchProjection +SketchProjection_10 = Sketch_4.addProjection(model.selection("VERTEX", "Sketch_2/SketchLine_17_EndVertex"), False) +SketchPoint_6 = SketchProjection_10.createdFeature() +Sketch_4.setCoincident(SketchLine_25.endPoint(), SketchPoint_6.result()) + +### Create SketchLine +SketchLine_26 = Sketch_4.addLine(3, 0, 3, 1.325) +Sketch_4.setCoincident(SketchLine_25.endPoint(), SketchLine_26.startPoint()) + +### Create SketchProjection +SketchProjection_11 = Sketch_4.addProjection(model.selection("VERTEX", "Translation_1_1_1/MV:Translated&Sketch_3/SketchLine_22_EndVertex&Sketch_3/SketchLine_23_StartVertex"), False) +SketchPoint_7 = SketchProjection_11.createdFeature() +Sketch_4.setCoincident(SketchLine_26.endPoint(), SketchPoint_7.result()) + +### Create SketchLine +SketchLine_27 = Sketch_4.addLine(3, 1.325, 0, 2.825) +Sketch_4.setCoincident(SketchLine_26.endPoint(), SketchLine_27.startPoint()) + +### Create SketchProjection +SketchProjection_12 = Sketch_4.addProjection(model.selection("VERTEX", "Sketch_1/SketchLine_7_EndVertex"), False) +SketchPoint_8 = SketchProjection_12.createdFeature() +Sketch_4.setCoincident(SketchLine_27.endPoint(), SketchPoint_8.result()) + +### Create SketchLine +SketchLine_28 = Sketch_4.addLine(0, 2.825, 0, 0) +Sketch_4.setCoincident(SketchLine_27.endPoint(), SketchLine_28.startPoint()) +Sketch_4.setCoincident(SketchLine_25.startPoint(), SketchLine_28.endPoint()) +model.do() + +### Create Face +Face_4 = model.addFace(Part_1_doc, [model.selection("FACE", "Sketch_4/Face-SketchLine_25r-SketchLine_26f-SketchLine_27f-SketchLine_28f")]) + +### Create Sketch +Sketch_5 = model.addSketch(Part_1_doc, model.selection("FACE", "Face_4_1")) + +### Create SketchLine +SketchLine_29 = Sketch_5.addLine(1.5, 0, 1.5, 1.6) + +### Create SketchProjection +SketchProjection_13 = Sketch_5.addProjection(model.selection("EDGE", "Face_4_1/Modified_Edge&Sketch_4/SketchLine_25"), False) +SketchLine_30 = SketchProjection_13.createdFeature() +Sketch_5.setCoincident(SketchLine_29.startPoint(), SketchLine_30.result()) +Sketch_5.setVertical(SketchLine_29.result()) +Sketch_5.setLength(SketchLine_29.result(), "LGY/2.825*1.6") +Sketch_5.setHorizontalDistance(SketchAPI_Line(SketchLine_30).startPoint(), SketchLine_29.startPoint(), "LGX*0.5") +model.do() + +### Create Partition +Partition_1_objects = [model.selection("FACE", "Face_1_1"), + model.selection("FACE", "Face_2_1"), + model.selection("COMPOUND", "Translation_1_1"), + model.selection("FACE", "Face_4_1")] +Partition_1 = model.addPartition(Part_1_doc, Partition_1_objects, keepSubResults = True) + +### Create Extrusion +Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("FACE", "Partition_1_1_4")], model.selection(), "HTR", 0, "Faces|Wires") + +### Create Recover +Recover_1 = model.addRecover(Part_1_doc, Extrusion_1, [Partition_1.result()], True) + +### Create Extrusion +Extrusion_2_objects = [model.selection("VERTEX", "Recover_1_1_3/Modified_Vertex&Sketch_3/SketchLine_20_StartVertex&Sketch_3/SketchLine_23_EndVertex"), + model.selection("VERTEX", "[Recover_1_1_2/Modified_Edge&Sketch_2/SketchLine_16]e[Recover_1_1_2/Modified_Edge&Sketch_3/SketchLine_21&Sketch_2/SketchLine_17]e"), + model.selection("VERTEX", "[Recover_1_1_1/Modified_Edge&Sketch_1/SketchLine_1]e[Recover_1_1_1/Modified_Edge&Sketch_2/SketchLine_19&Sketch_1/SketchLine_10]e"), + model.selection("VERTEX", "Recover_1_1_1/Modified_Vertex&Sketch_1/SketchLine_7_StartVertex&Sketch_1/SketchLine_6_EndVertex")] +Extrusion_2 = model.addExtrusion(Part_1_doc, Extrusion_2_objects, model.selection("EDGE", "PartSet/OZ"), 0, "HTR") + +### Create Partition +Partition_2_objects = [model.selection("COMPOUND", "all-in-Extrusion_1"), + model.selection("COMPOUND", "all-in-Recover_1"), + model.selection("COMPOUND", "all-in-Extrusion_2")] +Partition_2 = model.addPartition(Part_1_doc, Partition_2_objects, keepSubResults = True) +Partition_2.result().setName("Structure") +Partition_2.result().subResult(0).setName("Hangar") +Partition_2.result().subResult(0).setColor(170, 0, 0) +Partition_2.result().subResult(1).setName("Mur_1") +Partition_2.result().subResult(2).setName("Mur_2") +Partition_2.result().subResult(3).setName("Mur_3") +Partition_2.result().subResult(4).setName("Poteau_1") +Partition_2.result().subResult(5).setName("Poteau_2") +Partition_2.result().subResult(6).setName("Poteau_3") +Partition_2.result().subResult(7).setName("Poteau_4") + +file_name = model.getTmpFileName('teststep1', '.stp') + +### Export to STEP format +Export_1 = model.exportToFile(Part_1_doc, file_name, + [model.selection("COMPOUND", "Structure")]) + +### Import from step +Import_1 = model.addImportSTEP(Part_1_doc, file_name, True, True, True) + +model.end() + +# Check the imported names and colors correspond to the exported ones +res = Import_1.result() +assert(file_name.find(res.name()[:-3]) > 0) # the higher level compound name equals to the file name +assert(res.subResult(0).name() == "Hangar") +assert(res.subResult(1).name() == "Mur_1") +assert(res.subResult(2).name() == "Mur_2") +assert(res.subResult(3).name() == "Mur_3") +assert(res.subResult(4).name() == "Poteau_1") +assert(res.subResult(5).name() == "Poteau_2") +assert(res.subResult(6).name() == "Poteau_3") +assert(res.subResult(7).name() == "Poteau_4") +# get color of "Hangar": 3 components in the array attribute +hangarBody = model.modelAPI_ResultBody(Import_1.feature().firstResult()).subResult(0) +assert(hangarBody.data().intArray("Color").size() == 3) +assert(hangarBody.data().intArray("Color").value(0) == 170) +assert(hangarBody.data().intArray("Color").value(1) == 0) +assert(hangarBody.data().intArray("Color").value(2) == 0) diff --git a/src/ExchangePlugin/Test/TestStep2.py b/src/ExchangePlugin/Test/TestStep2.py new file mode 100644 index 000000000..5eacb9223 --- /dev/null +++ b/src/ExchangePlugin/Test/TestStep2.py @@ -0,0 +1,68 @@ +# Copyright (C) 2014-2022 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +from salome.shaper import model + +import os + +model.begin() +partSet = model.moduleDocument() + +### Create Part +Part_1 = model.addPart(partSet) +Part_1_doc = Part_1.document() +### Import from step +data_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "data") +#data_dir = os.path.join(os.path.dirname(os.path.abspath("C:\\NewGEOM\\SALOME-9.8.0D\\MODULES\\SRC\\SHAPER_SRC\\src\\ExchangePlugin\\Test\\TestStep2.py")), "data") +Import_1 = model.addImportSTEP(Part_1_doc, os.path.join(data_dir, "pipe_with_colors_and_names.stp"), True, True, True) + +model.end() + +def checkColor(body, rComponent, gComponent, bComponent): + assert(body.data().intArray("Color").size() == 3) + assert(body.data().intArray("Color").value(0) == rComponent) + assert(body.data().intArray("Color").value(1) == gComponent) + assert(body.data().intArray("Color").value(2) == bComponent) + +# Check the imported names and colors correspond to the exported ones +res = Import_1.result() +assert(res.name() == "pipe_with_colors_and_names_1") # the higher level compound name equals to the file name +assert(res.subResult(0).name() == "2WCL-2.0-316-7-01") +assert(res.subResult(1).name() == "2WCL-2.0-316-7-01__1") +assert(res.subResult(2).name() == "2WCL-2.0-316-7-01__2") +assert(res.subResult(3).name() == "B7WWW-2.0-304-7-01") +assert(res.subResult(4).name() == "B7WWW-2.0-304-7-01__1") +assert(res.subResult(5).name() == "2WCL-2.0-316-7-01__3") +assert(res.subResult(6).name() == "RNT-304-2.000-0.065-WL-7_oa_0") +assert(res.subResult(7).name() == "RNT-304-2.000-0.065-WL-7_oa_1") +assert(res.subResult(8).name() == "RNT-304-2.000-0.065-WL-7_oa_2") +assert(res.subResult(9).name() == "RNT-304-2.000-0.065-WL-7_oa_3") +assert(res.subResult(10).name() == "RNT-304-2.000-0.065-WL-7_oa_4") +rootBody = model.modelAPI_ResultBody(Import_1.feature().firstResult()) +checkColor(rootBody.subResult(0), 153, 33, 0) +checkColor(rootBody.subResult(1), 153, 33, 0) +checkColor(rootBody.subResult(2), 153, 33, 0) +checkColor(rootBody.subResult(3), 153, 33, 0) +checkColor(rootBody.subResult(4), 153, 33, 0) +checkColor(rootBody.subResult(5), 153, 33, 0) +checkColor(rootBody.subResult(6), 0, 12, 132) +checkColor(rootBody.subResult(7), 0, 12, 132) +checkColor(rootBody.subResult(8), 0, 12, 132) +checkColor(rootBody.subResult(9), 0, 12, 132) +checkColor(rootBody.subResult(10), 0, 12, 132) diff --git a/src/ExchangePlugin/Test/data/pipe_with_colors_and_names.stp b/src/ExchangePlugin/Test/data/pipe_with_colors_and_names.stp new file mode 100644 index 000000000..64766f0a9 --- /dev/null +++ b/src/ExchangePlugin/Test/data/pipe_with_colors_and_names.stp @@ -0,0 +1,1191 @@ +ISO-10303-21; +HEADER; +/* Generated by software containing ST-Developer + * from STEP Tools, Inc. (www.steptools.com) + */ +/* OPTION: strings as raw bytes, not using required /X/ escapes */ + +FILE_DESCRIPTION( +/* description */ ('Unknown'), +/* implementation_level */ '2;1'); + +FILE_NAME( +/* name */ 'Test SE Step', +/* time_stamp */ '2019-10-01T09:25:56-04:00', +/* author */ ('Unknown'), +/* organization */ ('Unknown'), +/* preprocessor_version */ 'ST-DEVELOPER v16.7', +/* originating_system */ 'DEX', +/* authorisation */ $); + +FILE_SCHEMA (('AUTOMOTIVE_DESIGN {1 0 10303 214 3 1 1}')); +ENDSEC; + +DATA; +#10=PROPERTY_DEFINITION_REPRESENTATION(#14,#12); +#11=PROPERTY_DEFINITION_REPRESENTATION(#15,#13); +#12=REPRESENTATION('',(#16),#940); +#13=REPRESENTATION('',(#17),#940); +#14=PROPERTY_DEFINITION('pmi validation property','',#959); +#15=PROPERTY_DEFINITION('pmi validation property','',#959); +#16=VALUE_REPRESENTATION_ITEM('number of annotations',COUNT_MEASURE(0.)); +#17=VALUE_REPRESENTATION_ITEM('number of views',COUNT_MEASURE(0.)); +#18=ELLIPSE('',#583,35.9210244842764,25.4); +#19=ELLIPSE('',#584,35.9210244842769,25.4); +#20=ELLIPSE('',#593,33.5861578927989,23.749); +#21=ELLIPSE('',#594,33.5861578927984,23.749); +#22=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#44,#961); +#23=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#45,#962); +#24=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#46,#963); +#25=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#47,#965); +#26=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#48,#966); +#27=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#49,#967); +#28=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#50,#969); +#29=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#51,#971); +#30=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#52,#973); +#31=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#53,#975); +#32=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#54,#977); +#33=NEXT_ASSEMBLY_USAGE_OCCURRENCE('2WCL-2.0-316-7-01', +'2WCL-2.0-316-7-01','2WCL-2.0-316-7-01',#978,#979,''); +#34=NEXT_ASSEMBLY_USAGE_OCCURRENCE('2WCL-2.0-316-7-01', +'2WCL-2.0-316-7-01','2WCL-2.0-316-7-01',#978,#979,''); +#35=NEXT_ASSEMBLY_USAGE_OCCURRENCE('2WCL-2.0-316-7-01', +'2WCL-2.0-316-7-01','2WCL-2.0-316-7-01',#978,#979,''); +#36=NEXT_ASSEMBLY_USAGE_OCCURRENCE('B7WWW-2.0-304-7-01', +'B7WWW-2.0-304-7-01','B7WWW-2.0-304-7-01',#978,#980,''); +#37=NEXT_ASSEMBLY_USAGE_OCCURRENCE('B7WWW-2.0-304-7-01', +'B7WWW-2.0-304-7-01','B7WWW-2.0-304-7-01',#978,#980,''); +#38=NEXT_ASSEMBLY_USAGE_OCCURRENCE('2WCL-2.0-316-7-01', +'2WCL-2.0-316-7-01','2WCL-2.0-316-7-01',#978,#979,''); +#39=NEXT_ASSEMBLY_USAGE_OCCURRENCE('RNT-304-2.000-0.065-WL-7_oa_0', +'RNT-304-2.000-0.065-WL-7_oa_0','RNT-304-2.000-0.065-WL-7_oa_0',#978,#981, +''); +#40=NEXT_ASSEMBLY_USAGE_OCCURRENCE('RNT-304-2.000-0.065-WL-7_oa_1', +'RNT-304-2.000-0.065-WL-7_oa_1','RNT-304-2.000-0.065-WL-7_oa_1',#978,#982, +''); +#41=NEXT_ASSEMBLY_USAGE_OCCURRENCE('RNT-304-2.000-0.065-WL-7_oa_2', +'RNT-304-2.000-0.065-WL-7_oa_2','RNT-304-2.000-0.065-WL-7_oa_2',#978,#983, +''); +#42=NEXT_ASSEMBLY_USAGE_OCCURRENCE('RNT-304-2.000-0.065-WL-7_oa_3', +'RNT-304-2.000-0.065-WL-7_oa_3','RNT-304-2.000-0.065-WL-7_oa_3',#978,#984, +''); +#43=NEXT_ASSEMBLY_USAGE_OCCURRENCE('RNT-304-2.000-0.065-WL-7_oa_4', +'RNT-304-2.000-0.065-WL-7_oa_4','RNT-304-2.000-0.065-WL-7_oa_4',#978,#985, +''); +#44=( +REPRESENTATION_RELATIONSHIP(' ',' ',#553,#554) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#55) +SHAPE_REPRESENTATION_RELATIONSHIP() +); +#45=( +REPRESENTATION_RELATIONSHIP(' ',' ',#553,#554) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#56) +SHAPE_REPRESENTATION_RELATIONSHIP() +); +#46=( +REPRESENTATION_RELATIONSHIP(' ',' ',#553,#554) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#57) +SHAPE_REPRESENTATION_RELATIONSHIP() +); +#47=( +REPRESENTATION_RELATIONSHIP(' ',' ',#555,#554) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#58) +SHAPE_REPRESENTATION_RELATIONSHIP() +); +#48=( +REPRESENTATION_RELATIONSHIP(' ',' ',#555,#554) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#59) +SHAPE_REPRESENTATION_RELATIONSHIP() +); +#49=( +REPRESENTATION_RELATIONSHIP(' ',' ',#553,#554) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#60) +SHAPE_REPRESENTATION_RELATIONSHIP() +); +#50=( +REPRESENTATION_RELATIONSHIP(' ',' ',#556,#554) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#61) +SHAPE_REPRESENTATION_RELATIONSHIP() +); +#51=( +REPRESENTATION_RELATIONSHIP(' ',' ',#557,#554) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#62) +SHAPE_REPRESENTATION_RELATIONSHIP() +); +#52=( +REPRESENTATION_RELATIONSHIP(' ',' ',#558,#554) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#63) +SHAPE_REPRESENTATION_RELATIONSHIP() +); +#53=( +REPRESENTATION_RELATIONSHIP(' ',' ',#559,#554) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#64) +SHAPE_REPRESENTATION_RELATIONSHIP() +); +#54=( +REPRESENTATION_RELATIONSHIP(' ',' ',#560,#554) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#65) +SHAPE_REPRESENTATION_RELATIONSHIP() +); +#55=ITEM_DEFINED_TRANSFORMATION(' ',' ',#561,#578); +#56=ITEM_DEFINED_TRANSFORMATION(' ',' ',#561,#579); +#57=ITEM_DEFINED_TRANSFORMATION(' ',' ',#561,#580); +#58=ITEM_DEFINED_TRANSFORMATION(' ',' ',#561,#598); +#59=ITEM_DEFINED_TRANSFORMATION(' ',' ',#561,#599); +#60=ITEM_DEFINED_TRANSFORMATION(' ',' ',#561,#600); +#61=ITEM_DEFINED_TRANSFORMATION(' ',' ',#561,#609); +#62=ITEM_DEFINED_TRANSFORMATION(' ',' ',#561,#618); +#63=ITEM_DEFINED_TRANSFORMATION(' ',' ',#561,#627); +#64=ITEM_DEFINED_TRANSFORMATION(' ',' ',#561,#636); +#65=ITEM_DEFINED_TRANSFORMATION(' ',' ',#561,#645); +#66=SHAPE_REPRESENTATION_RELATIONSHIP('','',#553,#73); +#67=SHAPE_REPRESENTATION_RELATIONSHIP('','',#555,#74); +#68=SHAPE_REPRESENTATION_RELATIONSHIP('','',#556,#75); +#69=SHAPE_REPRESENTATION_RELATIONSHIP('','',#557,#76); +#70=SHAPE_REPRESENTATION_RELATIONSHIP('','',#558,#77); +#71=SHAPE_REPRESENTATION_RELATIONSHIP('','',#559,#78); +#72=SHAPE_REPRESENTATION_RELATIONSHIP('','',#560,#79); +#73=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#538),#941); +#74=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#539),#942); +#75=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#540),#943); +#76=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#541),#944); +#77=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#542),#945); +#78=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#543),#946); +#79=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#544),#947); +#80=TOROIDAL_SURFACE('',#570,76.073,25.4); +#81=TOROIDAL_SURFACE('',#575,76.073,23.749); +#82=CYLINDRICAL_SURFACE('',#568,25.4); +#83=CYLINDRICAL_SURFACE('',#572,25.4); +#84=CYLINDRICAL_SURFACE('',#573,23.749); +#85=CYLINDRICAL_SURFACE('',#577,23.749); +#86=CYLINDRICAL_SURFACE('',#581,25.4); +#87=CYLINDRICAL_SURFACE('',#589,25.4); +#88=CYLINDRICAL_SURFACE('',#590,23.749); +#89=CYLINDRICAL_SURFACE('',#595,23.749); +#90=CYLINDRICAL_SURFACE('',#601,23.749); +#91=CYLINDRICAL_SURFACE('',#608,25.4); +#92=CYLINDRICAL_SURFACE('',#610,23.749); +#93=CYLINDRICAL_SURFACE('',#617,25.4); +#94=CYLINDRICAL_SURFACE('',#619,23.749); +#95=CYLINDRICAL_SURFACE('',#626,25.4); +#96=CYLINDRICAL_SURFACE('',#628,23.749); +#97=CYLINDRICAL_SURFACE('',#635,25.4); +#98=CYLINDRICAL_SURFACE('',#637,23.749); +#99=CYLINDRICAL_SURFACE('',#644,25.4); +#100=ORIENTED_EDGE('',*,*,#176,.F.); +#101=ORIENTED_EDGE('',*,*,#177,.T.); +#102=ORIENTED_EDGE('',*,*,#178,.T.); +#103=ORIENTED_EDGE('',*,*,#179,.T.); +#104=ORIENTED_EDGE('',*,*,#177,.F.); +#105=ORIENTED_EDGE('',*,*,#180,.F.); +#106=ORIENTED_EDGE('',*,*,#180,.T.); +#107=ORIENTED_EDGE('',*,*,#181,.F.); +#108=ORIENTED_EDGE('',*,*,#179,.F.); +#109=ORIENTED_EDGE('',*,*,#181,.T.); +#110=ORIENTED_EDGE('',*,*,#176,.T.); +#111=ORIENTED_EDGE('',*,*,#182,.T.); +#112=ORIENTED_EDGE('',*,*,#182,.F.); +#113=ORIENTED_EDGE('',*,*,#183,.T.); +#114=ORIENTED_EDGE('',*,*,#178,.F.); +#115=ORIENTED_EDGE('',*,*,#183,.F.); +#116=ORIENTED_EDGE('',*,*,#184,.T.); +#117=ORIENTED_EDGE('',*,*,#185,.T.); +#118=ORIENTED_EDGE('',*,*,#186,.T.); +#119=ORIENTED_EDGE('',*,*,#187,.T.); +#120=ORIENTED_EDGE('',*,*,#188,.T.); +#121=ORIENTED_EDGE('',*,*,#189,.T.); +#122=ORIENTED_EDGE('',*,*,#189,.F.); +#123=ORIENTED_EDGE('',*,*,#186,.F.); +#124=ORIENTED_EDGE('',*,*,#185,.F.); +#125=ORIENTED_EDGE('',*,*,#190,.F.); +#126=ORIENTED_EDGE('',*,*,#191,.F.); +#127=ORIENTED_EDGE('',*,*,#192,.F.); +#128=ORIENTED_EDGE('',*,*,#193,.F.); +#129=ORIENTED_EDGE('',*,*,#188,.F.); +#130=ORIENTED_EDGE('',*,*,#192,.T.); +#131=ORIENTED_EDGE('',*,*,#193,.T.); +#132=ORIENTED_EDGE('',*,*,#187,.F.); +#133=ORIENTED_EDGE('',*,*,#191,.T.); +#134=ORIENTED_EDGE('',*,*,#184,.F.); +#135=ORIENTED_EDGE('',*,*,#190,.T.); +#136=ORIENTED_EDGE('',*,*,#194,.F.); +#137=ORIENTED_EDGE('',*,*,#195,.T.); +#138=ORIENTED_EDGE('',*,*,#194,.T.); +#139=ORIENTED_EDGE('',*,*,#196,.T.); +#140=ORIENTED_EDGE('',*,*,#195,.F.); +#141=ORIENTED_EDGE('',*,*,#197,.F.); +#142=ORIENTED_EDGE('',*,*,#196,.F.); +#143=ORIENTED_EDGE('',*,*,#197,.T.); +#144=ORIENTED_EDGE('',*,*,#198,.F.); +#145=ORIENTED_EDGE('',*,*,#199,.T.); +#146=ORIENTED_EDGE('',*,*,#198,.T.); +#147=ORIENTED_EDGE('',*,*,#200,.T.); +#148=ORIENTED_EDGE('',*,*,#199,.F.); +#149=ORIENTED_EDGE('',*,*,#201,.F.); +#150=ORIENTED_EDGE('',*,*,#200,.F.); +#151=ORIENTED_EDGE('',*,*,#201,.T.); +#152=ORIENTED_EDGE('',*,*,#202,.F.); +#153=ORIENTED_EDGE('',*,*,#203,.T.); +#154=ORIENTED_EDGE('',*,*,#202,.T.); +#155=ORIENTED_EDGE('',*,*,#204,.T.); +#156=ORIENTED_EDGE('',*,*,#203,.F.); +#157=ORIENTED_EDGE('',*,*,#205,.F.); +#158=ORIENTED_EDGE('',*,*,#204,.F.); +#159=ORIENTED_EDGE('',*,*,#205,.T.); +#160=ORIENTED_EDGE('',*,*,#206,.T.); +#161=ORIENTED_EDGE('',*,*,#207,.F.); +#162=ORIENTED_EDGE('',*,*,#206,.F.); +#163=ORIENTED_EDGE('',*,*,#208,.F.); +#164=ORIENTED_EDGE('',*,*,#207,.T.); +#165=ORIENTED_EDGE('',*,*,#209,.T.); +#166=ORIENTED_EDGE('',*,*,#208,.T.); +#167=ORIENTED_EDGE('',*,*,#209,.F.); +#168=ORIENTED_EDGE('',*,*,#210,.T.); +#169=ORIENTED_EDGE('',*,*,#211,.F.); +#170=ORIENTED_EDGE('',*,*,#210,.F.); +#171=ORIENTED_EDGE('',*,*,#212,.F.); +#172=ORIENTED_EDGE('',*,*,#211,.T.); +#173=ORIENTED_EDGE('',*,*,#213,.T.); +#174=ORIENTED_EDGE('',*,*,#212,.T.); +#175=ORIENTED_EDGE('',*,*,#213,.F.); +#176=EDGE_CURVE('',#214,#214,#252,.T.); +#177=EDGE_CURVE('',#215,#215,#253,.F.); +#178=EDGE_CURVE('',#216,#216,#254,.T.); +#179=EDGE_CURVE('',#217,#217,#255,.F.); +#180=EDGE_CURVE('',#218,#218,#256,.F.); +#181=EDGE_CURVE('',#219,#219,#257,.F.); +#182=EDGE_CURVE('',#220,#220,#258,.F.); +#183=EDGE_CURVE('',#221,#221,#259,.F.); +#184=EDGE_CURVE('',#222,#222,#260,.T.); +#185=EDGE_CURVE('',#223,#224,#18,.T.); +#186=EDGE_CURVE('',#224,#223,#19,.F.); +#187=EDGE_CURVE('',#225,#225,#261,.T.); +#188=EDGE_CURVE('',#226,#226,#262,.T.); +#189=EDGE_CURVE('',#227,#227,#263,.F.); +#190=EDGE_CURVE('',#228,#228,#264,.T.); +#191=EDGE_CURVE('',#229,#229,#265,.T.); +#192=EDGE_CURVE('',#230,#231,#20,.F.); +#193=EDGE_CURVE('',#231,#230,#21,.T.); +#194=EDGE_CURVE('',#232,#232,#266,.F.); +#195=EDGE_CURVE('',#233,#233,#267,.F.); +#196=EDGE_CURVE('',#234,#234,#268,.T.); +#197=EDGE_CURVE('',#235,#235,#269,.T.); +#198=EDGE_CURVE('',#236,#236,#270,.F.); +#199=EDGE_CURVE('',#237,#237,#271,.F.); +#200=EDGE_CURVE('',#238,#238,#272,.T.); +#201=EDGE_CURVE('',#239,#239,#273,.T.); +#202=EDGE_CURVE('',#240,#240,#274,.F.); +#203=EDGE_CURVE('',#241,#241,#275,.F.); +#204=EDGE_CURVE('',#242,#242,#276,.T.); +#205=EDGE_CURVE('',#243,#243,#277,.T.); +#206=EDGE_CURVE('',#244,#244,#278,.F.); +#207=EDGE_CURVE('',#245,#245,#279,.F.); +#208=EDGE_CURVE('',#246,#246,#280,.T.); +#209=EDGE_CURVE('',#247,#247,#281,.T.); +#210=EDGE_CURVE('',#248,#248,#282,.F.); +#211=EDGE_CURVE('',#249,#249,#283,.F.); +#212=EDGE_CURVE('',#250,#250,#284,.T.); +#213=EDGE_CURVE('',#251,#251,#285,.T.); +#214=VERTEX_POINT('',#819); +#215=VERTEX_POINT('',#821); +#216=VERTEX_POINT('',#824); +#217=VERTEX_POINT('',#826); +#218=VERTEX_POINT('',#829); +#219=VERTEX_POINT('',#832); +#220=VERTEX_POINT('',#836); +#221=VERTEX_POINT('',#839); +#222=VERTEX_POINT('',#846); +#223=VERTEX_POINT('',#848); +#224=VERTEX_POINT('',#849); +#225=VERTEX_POINT('',#852); +#226=VERTEX_POINT('',#855); +#227=VERTEX_POINT('',#857); +#228=VERTEX_POINT('',#861); +#229=VERTEX_POINT('',#863); +#230=VERTEX_POINT('',#865); +#231=VERTEX_POINT('',#866); +#232=VERTEX_POINT('',#876); +#233=VERTEX_POINT('',#878); +#234=VERTEX_POINT('',#881); +#235=VERTEX_POINT('',#884); +#236=VERTEX_POINT('',#889); +#237=VERTEX_POINT('',#891); +#238=VERTEX_POINT('',#894); +#239=VERTEX_POINT('',#897); +#240=VERTEX_POINT('',#902); +#241=VERTEX_POINT('',#904); +#242=VERTEX_POINT('',#907); +#243=VERTEX_POINT('',#910); +#244=VERTEX_POINT('',#915); +#245=VERTEX_POINT('',#917); +#246=VERTEX_POINT('',#920); +#247=VERTEX_POINT('',#923); +#248=VERTEX_POINT('',#928); +#249=VERTEX_POINT('',#930); +#250=VERTEX_POINT('',#933); +#251=VERTEX_POINT('',#936); +#252=CIRCLE('',#563,23.749); +#253=CIRCLE('',#564,25.4); +#254=CIRCLE('',#566,23.749); +#255=CIRCLE('',#567,25.4); +#256=CIRCLE('',#569,25.4); +#257=CIRCLE('',#571,25.4); +#258=CIRCLE('',#574,23.749); +#259=CIRCLE('',#576,23.749); +#260=CIRCLE('',#582,25.4); +#261=CIRCLE('',#585,25.4); +#262=CIRCLE('',#587,23.749); +#263=CIRCLE('',#588,25.4); +#264=CIRCLE('',#591,23.7489999999999); +#265=CIRCLE('',#592,23.7489999999993); +#266=CIRCLE('',#602,23.749); +#267=CIRCLE('',#603,23.749); +#268=CIRCLE('',#605,25.4); +#269=CIRCLE('',#607,25.4); +#270=CIRCLE('',#611,23.749); +#271=CIRCLE('',#612,23.749); +#272=CIRCLE('',#614,25.4); +#273=CIRCLE('',#616,25.4); +#274=CIRCLE('',#620,23.749); +#275=CIRCLE('',#621,23.749); +#276=CIRCLE('',#623,25.4); +#277=CIRCLE('',#625,25.4); +#278=CIRCLE('',#629,23.749); +#279=CIRCLE('',#630,23.749); +#280=CIRCLE('',#632,25.4); +#281=CIRCLE('',#634,25.4); +#282=CIRCLE('',#638,23.749); +#283=CIRCLE('',#639,23.749); +#284=CIRCLE('',#641,25.4); +#285=CIRCLE('',#643,25.4); +#286=EDGE_LOOP('',(#100)); +#287=EDGE_LOOP('',(#101)); +#288=EDGE_LOOP('',(#102)); +#289=EDGE_LOOP('',(#103)); +#290=EDGE_LOOP('',(#104)); +#291=EDGE_LOOP('',(#105)); +#292=EDGE_LOOP('',(#106)); +#293=EDGE_LOOP('',(#107)); +#294=EDGE_LOOP('',(#108)); +#295=EDGE_LOOP('',(#109)); +#296=EDGE_LOOP('',(#110)); +#297=EDGE_LOOP('',(#111)); +#298=EDGE_LOOP('',(#112)); +#299=EDGE_LOOP('',(#113)); +#300=EDGE_LOOP('',(#114)); +#301=EDGE_LOOP('',(#115)); +#302=EDGE_LOOP('',(#116)); +#303=EDGE_LOOP('',(#117,#118)); +#304=EDGE_LOOP('',(#119)); +#305=EDGE_LOOP('',(#120)); +#306=EDGE_LOOP('',(#121)); +#307=EDGE_LOOP('',(#122)); +#308=EDGE_LOOP('',(#123,#124)); +#309=EDGE_LOOP('',(#125)); +#310=EDGE_LOOP('',(#126)); +#311=EDGE_LOOP('',(#127,#128)); +#312=EDGE_LOOP('',(#129)); +#313=EDGE_LOOP('',(#130,#131)); +#314=EDGE_LOOP('',(#132)); +#315=EDGE_LOOP('',(#133)); +#316=EDGE_LOOP('',(#134)); +#317=EDGE_LOOP('',(#135)); +#318=EDGE_LOOP('',(#136)); +#319=EDGE_LOOP('',(#137)); +#320=EDGE_LOOP('',(#138)); +#321=EDGE_LOOP('',(#139)); +#322=EDGE_LOOP('',(#140)); +#323=EDGE_LOOP('',(#141)); +#324=EDGE_LOOP('',(#142)); +#325=EDGE_LOOP('',(#143)); +#326=EDGE_LOOP('',(#144)); +#327=EDGE_LOOP('',(#145)); +#328=EDGE_LOOP('',(#146)); +#329=EDGE_LOOP('',(#147)); +#330=EDGE_LOOP('',(#148)); +#331=EDGE_LOOP('',(#149)); +#332=EDGE_LOOP('',(#150)); +#333=EDGE_LOOP('',(#151)); +#334=EDGE_LOOP('',(#152)); +#335=EDGE_LOOP('',(#153)); +#336=EDGE_LOOP('',(#154)); +#337=EDGE_LOOP('',(#155)); +#338=EDGE_LOOP('',(#156)); +#339=EDGE_LOOP('',(#157)); +#340=EDGE_LOOP('',(#158)); +#341=EDGE_LOOP('',(#159)); +#342=EDGE_LOOP('',(#160)); +#343=EDGE_LOOP('',(#161)); +#344=EDGE_LOOP('',(#162)); +#345=EDGE_LOOP('',(#163)); +#346=EDGE_LOOP('',(#164)); +#347=EDGE_LOOP('',(#165)); +#348=EDGE_LOOP('',(#166)); +#349=EDGE_LOOP('',(#167)); +#350=EDGE_LOOP('',(#168)); +#351=EDGE_LOOP('',(#169)); +#352=EDGE_LOOP('',(#170)); +#353=EDGE_LOOP('',(#171)); +#354=EDGE_LOOP('',(#172)); +#355=EDGE_LOOP('',(#173)); +#356=EDGE_LOOP('',(#174)); +#357=EDGE_LOOP('',(#175)); +#358=FACE_BOUND('',#286,.T.); +#359=FACE_BOUND('',#287,.T.); +#360=FACE_BOUND('',#288,.T.); +#361=FACE_BOUND('',#289,.T.); +#362=FACE_BOUND('',#290,.T.); +#363=FACE_BOUND('',#291,.T.); +#364=FACE_BOUND('',#292,.T.); +#365=FACE_BOUND('',#293,.T.); +#366=FACE_BOUND('',#294,.T.); +#367=FACE_BOUND('',#295,.T.); +#368=FACE_BOUND('',#296,.T.); +#369=FACE_BOUND('',#297,.T.); +#370=FACE_BOUND('',#298,.T.); +#371=FACE_BOUND('',#299,.T.); +#372=FACE_BOUND('',#300,.T.); +#373=FACE_BOUND('',#301,.T.); +#374=FACE_BOUND('',#302,.T.); +#375=FACE_BOUND('',#303,.T.); +#376=FACE_BOUND('',#304,.T.); +#377=FACE_BOUND('',#305,.T.); +#378=FACE_BOUND('',#306,.T.); +#379=FACE_BOUND('',#307,.T.); +#380=FACE_BOUND('',#308,.T.); +#381=FACE_BOUND('',#309,.T.); +#382=FACE_BOUND('',#310,.T.); +#383=FACE_BOUND('',#311,.T.); +#384=FACE_BOUND('',#312,.T.); +#385=FACE_BOUND('',#313,.T.); +#386=FACE_BOUND('',#314,.T.); +#387=FACE_BOUND('',#315,.T.); +#388=FACE_BOUND('',#316,.T.); +#389=FACE_BOUND('',#317,.T.); +#390=FACE_BOUND('',#318,.T.); +#391=FACE_BOUND('',#319,.T.); +#392=FACE_BOUND('',#320,.T.); +#393=FACE_BOUND('',#321,.T.); +#394=FACE_BOUND('',#322,.T.); +#395=FACE_BOUND('',#323,.T.); +#396=FACE_BOUND('',#324,.T.); +#397=FACE_BOUND('',#325,.T.); +#398=FACE_BOUND('',#326,.T.); +#399=FACE_BOUND('',#327,.T.); +#400=FACE_BOUND('',#328,.T.); +#401=FACE_BOUND('',#329,.T.); +#402=FACE_BOUND('',#330,.T.); +#403=FACE_BOUND('',#331,.T.); +#404=FACE_BOUND('',#332,.T.); +#405=FACE_BOUND('',#333,.T.); +#406=FACE_BOUND('',#334,.T.); +#407=FACE_BOUND('',#335,.T.); +#408=FACE_BOUND('',#336,.T.); +#409=FACE_BOUND('',#337,.T.); +#410=FACE_BOUND('',#338,.T.); +#411=FACE_BOUND('',#339,.T.); +#412=FACE_BOUND('',#340,.T.); +#413=FACE_BOUND('',#341,.T.); +#414=FACE_BOUND('',#342,.T.); +#415=FACE_BOUND('',#343,.T.); +#416=FACE_BOUND('',#344,.T.); +#417=FACE_BOUND('',#345,.T.); +#418=FACE_BOUND('',#346,.T.); +#419=FACE_BOUND('',#347,.T.); +#420=FACE_BOUND('',#348,.T.); +#421=FACE_BOUND('',#349,.T.); +#422=FACE_BOUND('',#350,.T.); +#423=FACE_BOUND('',#351,.T.); +#424=FACE_BOUND('',#352,.T.); +#425=FACE_BOUND('',#353,.T.); +#426=FACE_BOUND('',#354,.T.); +#427=FACE_BOUND('',#355,.T.); +#428=FACE_BOUND('',#356,.T.); +#429=FACE_BOUND('',#357,.T.); +#430=PLANE('',#562); +#431=PLANE('',#565); +#432=PLANE('',#586); +#433=PLANE('',#596); +#434=PLANE('',#597); +#435=PLANE('',#604); +#436=PLANE('',#606); +#437=PLANE('',#613); +#438=PLANE('',#615); +#439=PLANE('',#622); +#440=PLANE('',#624); +#441=PLANE('',#631); +#442=PLANE('',#633); +#443=PLANE('',#640); +#444=PLANE('',#642); +#445=ADVANCED_FACE('',(#358,#359),#430,.F.); +#446=ADVANCED_FACE('',(#360,#361),#431,.F.); +#447=ADVANCED_FACE('',(#362,#363),#82,.T.); +#448=ADVANCED_FACE('',(#364,#365),#80,.T.); +#449=ADVANCED_FACE('',(#366,#367),#83,.T.); +#450=ADVANCED_FACE('',(#368,#369),#84,.F.); +#451=ADVANCED_FACE('',(#370,#371),#81,.F.); +#452=ADVANCED_FACE('',(#372,#373),#85,.F.); +#453=ADVANCED_FACE('',(#374,#375,#376),#86,.T.); +#454=ADVANCED_FACE('',(#377,#378),#432,.F.); +#455=ADVANCED_FACE('',(#379,#380),#87,.T.); +#456=ADVANCED_FACE('',(#381,#382,#383),#88,.F.); +#457=ADVANCED_FACE('',(#384,#385),#89,.F.); +#458=ADVANCED_FACE('',(#386,#387),#433,.F.); +#459=ADVANCED_FACE('',(#388,#389),#434,.F.); +#460=ADVANCED_FACE('',(#390,#391),#90,.F.); +#461=ADVANCED_FACE('',(#392,#393),#435,.T.); +#462=ADVANCED_FACE('',(#394,#395),#436,.F.); +#463=ADVANCED_FACE('',(#396,#397),#91,.T.); +#464=ADVANCED_FACE('',(#398,#399),#92,.F.); +#465=ADVANCED_FACE('',(#400,#401),#437,.T.); +#466=ADVANCED_FACE('',(#402,#403),#438,.F.); +#467=ADVANCED_FACE('',(#404,#405),#93,.T.); +#468=ADVANCED_FACE('',(#406,#407),#94,.F.); +#469=ADVANCED_FACE('',(#408,#409),#439,.T.); +#470=ADVANCED_FACE('',(#410,#411),#440,.F.); +#471=ADVANCED_FACE('',(#412,#413),#95,.T.); +#472=ADVANCED_FACE('',(#414,#415),#96,.F.); +#473=ADVANCED_FACE('',(#416,#417),#441,.F.); +#474=ADVANCED_FACE('',(#418,#419),#442,.T.); +#475=ADVANCED_FACE('',(#420,#421),#97,.T.); +#476=ADVANCED_FACE('',(#422,#423),#98,.F.); +#477=ADVANCED_FACE('',(#424,#425),#443,.F.); +#478=ADVANCED_FACE('',(#426,#427),#444,.T.); +#479=ADVANCED_FACE('',(#428,#429),#99,.T.); +#480=CLOSED_SHELL('',(#445,#446,#447,#448,#449,#450,#451,#452)); +#481=CLOSED_SHELL('',(#453,#454,#455,#456,#457,#458,#459)); +#482=CLOSED_SHELL('',(#460,#461,#462,#463)); +#483=CLOSED_SHELL('',(#464,#465,#466,#467)); +#484=CLOSED_SHELL('',(#468,#469,#470,#471)); +#485=CLOSED_SHELL('',(#472,#473,#474,#475)); +#486=CLOSED_SHELL('',(#476,#477,#478,#479)); +#487=STYLED_ITEM('',(#494),#538); +#488=STYLED_ITEM('',(#495),#539); +#489=STYLED_ITEM('',(#496),#540); +#490=STYLED_ITEM('',(#497),#541); +#491=STYLED_ITEM('',(#498),#542); +#492=STYLED_ITEM('',(#499),#543); +#493=STYLED_ITEM('',(#500),#544); +#494=PRESENTATION_STYLE_ASSIGNMENT((#501)); +#495=PRESENTATION_STYLE_ASSIGNMENT((#502)); +#496=PRESENTATION_STYLE_ASSIGNMENT((#503)); +#497=PRESENTATION_STYLE_ASSIGNMENT((#504)); +#498=PRESENTATION_STYLE_ASSIGNMENT((#505)); +#499=PRESENTATION_STYLE_ASSIGNMENT((#506)); +#500=PRESENTATION_STYLE_ASSIGNMENT((#507)); +#501=SURFACE_STYLE_USAGE(.BOTH.,#508); +#502=SURFACE_STYLE_USAGE(.BOTH.,#509); +#503=SURFACE_STYLE_USAGE(.BOTH.,#510); +#504=SURFACE_STYLE_USAGE(.BOTH.,#511); +#505=SURFACE_STYLE_USAGE(.BOTH.,#512); +#506=SURFACE_STYLE_USAGE(.BOTH.,#513); +#507=SURFACE_STYLE_USAGE(.BOTH.,#514); +#508=SURFACE_SIDE_STYLE('',(#515)); +#509=SURFACE_SIDE_STYLE('',(#516)); +#510=SURFACE_SIDE_STYLE('',(#517)); +#511=SURFACE_SIDE_STYLE('',(#518)); +#512=SURFACE_SIDE_STYLE('',(#519)); +#513=SURFACE_SIDE_STYLE('',(#520)); +#514=SURFACE_SIDE_STYLE('',(#521)); +#515=SURFACE_STYLE_FILL_AREA(#522); +#516=SURFACE_STYLE_FILL_AREA(#523); +#517=SURFACE_STYLE_FILL_AREA(#524); +#518=SURFACE_STYLE_FILL_AREA(#525); +#519=SURFACE_STYLE_FILL_AREA(#526); +#520=SURFACE_STYLE_FILL_AREA(#527); +#521=SURFACE_STYLE_FILL_AREA(#528); +#522=FILL_AREA_STYLE('',(#529)); +#523=FILL_AREA_STYLE('',(#530)); +#524=FILL_AREA_STYLE('',(#531)); +#525=FILL_AREA_STYLE('',(#532)); +#526=FILL_AREA_STYLE('',(#533)); +#527=FILL_AREA_STYLE('',(#534)); +#528=FILL_AREA_STYLE('',(#535)); +#529=FILL_AREA_STYLE_COLOUR('',#536); +#530=FILL_AREA_STYLE_COLOUR('',#536); +#531=FILL_AREA_STYLE_COLOUR('',#537); +#532=FILL_AREA_STYLE_COLOUR('',#537); +#533=FILL_AREA_STYLE_COLOUR('',#537); +#534=FILL_AREA_STYLE_COLOUR('',#537); +#535=FILL_AREA_STYLE_COLOUR('',#537); +#536=COLOUR_RGB('',0.800000011920929,0.400000005960464,0.); +#537=COLOUR_RGB('',0.,0.24705882370472,0.749019622802734); +#538=MANIFOLD_SOLID_BREP('',#480); +#539=MANIFOLD_SOLID_BREP('',#481); +#540=MANIFOLD_SOLID_BREP('',#482); +#541=MANIFOLD_SOLID_BREP('',#483); +#542=MANIFOLD_SOLID_BREP('',#484); +#543=MANIFOLD_SOLID_BREP('',#485); +#544=MANIFOLD_SOLID_BREP('',#486); +#545=SHAPE_DEFINITION_REPRESENTATION(#960,#553); +#546=SHAPE_DEFINITION_REPRESENTATION(#959,#554); +#547=SHAPE_DEFINITION_REPRESENTATION(#964,#555); +#548=SHAPE_DEFINITION_REPRESENTATION(#968,#556); +#549=SHAPE_DEFINITION_REPRESENTATION(#970,#557); +#550=SHAPE_DEFINITION_REPRESENTATION(#972,#558); +#551=SHAPE_DEFINITION_REPRESENTATION(#974,#559); +#552=SHAPE_DEFINITION_REPRESENTATION(#976,#560); +#553=SHAPE_REPRESENTATION('2WCL-2.0-316-7-01',(#561),#941); +#554=SHAPE_REPRESENTATION('Asm1',(#561,#578,#579,#580,#598,#599,#600,#609, +#618,#627,#636,#645),#940); +#555=SHAPE_REPRESENTATION('B7WWW-2.0-304-7-01',(#561),#942); +#556=SHAPE_REPRESENTATION('RNT-304-2.000-0.065-WL-7_oa_0',(#561),#943); +#557=SHAPE_REPRESENTATION('RNT-304-2.000-0.065-WL-7_oa_1',(#561),#944); +#558=SHAPE_REPRESENTATION('RNT-304-2.000-0.065-WL-7_oa_2',(#561),#945); +#559=SHAPE_REPRESENTATION('RNT-304-2.000-0.065-WL-7_oa_3',(#561),#946); +#560=SHAPE_REPRESENTATION('RNT-304-2.000-0.065-WL-7_oa_4',(#561),#947); +#561=AXIS2_PLACEMENT_3D('',#816,#646,#647); +#562=AXIS2_PLACEMENT_3D('',#817,#648,#649); +#563=AXIS2_PLACEMENT_3D('',#818,#650,#651); +#564=AXIS2_PLACEMENT_3D('',#820,#652,#653); +#565=AXIS2_PLACEMENT_3D('',#822,#654,#655); +#566=AXIS2_PLACEMENT_3D('',#823,#656,#657); +#567=AXIS2_PLACEMENT_3D('',#825,#658,#659); +#568=AXIS2_PLACEMENT_3D('',#827,#660,#661); +#569=AXIS2_PLACEMENT_3D('',#828,#662,#663); +#570=AXIS2_PLACEMENT_3D('',#830,#664,#665); +#571=AXIS2_PLACEMENT_3D('',#831,#666,#667); +#572=AXIS2_PLACEMENT_3D('',#833,#668,#669); +#573=AXIS2_PLACEMENT_3D('',#834,#670,#671); +#574=AXIS2_PLACEMENT_3D('',#835,#672,#673); +#575=AXIS2_PLACEMENT_3D('',#837,#674,#675); +#576=AXIS2_PLACEMENT_3D('',#838,#676,#677); +#577=AXIS2_PLACEMENT_3D('',#840,#678,#679); +#578=AXIS2_PLACEMENT_3D('',#841,#680,#681); +#579=AXIS2_PLACEMENT_3D('',#842,#682,#683); +#580=AXIS2_PLACEMENT_3D('',#843,#684,#685); +#581=AXIS2_PLACEMENT_3D('',#844,#686,#687); +#582=AXIS2_PLACEMENT_3D('',#845,#688,#689); +#583=AXIS2_PLACEMENT_3D('',#847,#690,#691); +#584=AXIS2_PLACEMENT_3D('',#850,#692,#693); +#585=AXIS2_PLACEMENT_3D('',#851,#694,#695); +#586=AXIS2_PLACEMENT_3D('',#853,#696,#697); +#587=AXIS2_PLACEMENT_3D('',#854,#698,#699); +#588=AXIS2_PLACEMENT_3D('',#856,#700,#701); +#589=AXIS2_PLACEMENT_3D('',#858,#702,#703); +#590=AXIS2_PLACEMENT_3D('',#859,#704,#705); +#591=AXIS2_PLACEMENT_3D('',#860,#706,#707); +#592=AXIS2_PLACEMENT_3D('',#862,#708,#709); +#593=AXIS2_PLACEMENT_3D('',#864,#710,#711); +#594=AXIS2_PLACEMENT_3D('',#867,#712,#713); +#595=AXIS2_PLACEMENT_3D('',#868,#714,#715); +#596=AXIS2_PLACEMENT_3D('',#869,#716,#717); +#597=AXIS2_PLACEMENT_3D('',#870,#718,#719); +#598=AXIS2_PLACEMENT_3D('',#871,#720,#721); +#599=AXIS2_PLACEMENT_3D('',#872,#722,#723); +#600=AXIS2_PLACEMENT_3D('',#873,#724,#725); +#601=AXIS2_PLACEMENT_3D('',#874,#726,#727); +#602=AXIS2_PLACEMENT_3D('',#875,#728,#729); +#603=AXIS2_PLACEMENT_3D('',#877,#730,#731); +#604=AXIS2_PLACEMENT_3D('',#879,#732,#733); +#605=AXIS2_PLACEMENT_3D('',#880,#734,#735); +#606=AXIS2_PLACEMENT_3D('',#882,#736,#737); +#607=AXIS2_PLACEMENT_3D('',#883,#738,#739); +#608=AXIS2_PLACEMENT_3D('',#885,#740,#741); +#609=AXIS2_PLACEMENT_3D('',#886,#742,#743); +#610=AXIS2_PLACEMENT_3D('',#887,#744,#745); +#611=AXIS2_PLACEMENT_3D('',#888,#746,#747); +#612=AXIS2_PLACEMENT_3D('',#890,#748,#749); +#613=AXIS2_PLACEMENT_3D('',#892,#750,#751); +#614=AXIS2_PLACEMENT_3D('',#893,#752,#753); +#615=AXIS2_PLACEMENT_3D('',#895,#754,#755); +#616=AXIS2_PLACEMENT_3D('',#896,#756,#757); +#617=AXIS2_PLACEMENT_3D('',#898,#758,#759); +#618=AXIS2_PLACEMENT_3D('',#899,#760,#761); +#619=AXIS2_PLACEMENT_3D('',#900,#762,#763); +#620=AXIS2_PLACEMENT_3D('',#901,#764,#765); +#621=AXIS2_PLACEMENT_3D('',#903,#766,#767); +#622=AXIS2_PLACEMENT_3D('',#905,#768,#769); +#623=AXIS2_PLACEMENT_3D('',#906,#770,#771); +#624=AXIS2_PLACEMENT_3D('',#908,#772,#773); +#625=AXIS2_PLACEMENT_3D('',#909,#774,#775); +#626=AXIS2_PLACEMENT_3D('',#911,#776,#777); +#627=AXIS2_PLACEMENT_3D('',#912,#778,#779); +#628=AXIS2_PLACEMENT_3D('',#913,#780,#781); +#629=AXIS2_PLACEMENT_3D('',#914,#782,#783); +#630=AXIS2_PLACEMENT_3D('',#916,#784,#785); +#631=AXIS2_PLACEMENT_3D('',#918,#786,#787); +#632=AXIS2_PLACEMENT_3D('',#919,#788,#789); +#633=AXIS2_PLACEMENT_3D('',#921,#790,#791); +#634=AXIS2_PLACEMENT_3D('',#922,#792,#793); +#635=AXIS2_PLACEMENT_3D('',#924,#794,#795); +#636=AXIS2_PLACEMENT_3D('',#925,#796,#797); +#637=AXIS2_PLACEMENT_3D('',#926,#798,#799); +#638=AXIS2_PLACEMENT_3D('',#927,#800,#801); +#639=AXIS2_PLACEMENT_3D('',#929,#802,#803); +#640=AXIS2_PLACEMENT_3D('',#931,#804,#805); +#641=AXIS2_PLACEMENT_3D('',#932,#806,#807); +#642=AXIS2_PLACEMENT_3D('',#934,#808,#809); +#643=AXIS2_PLACEMENT_3D('',#935,#810,#811); +#644=AXIS2_PLACEMENT_3D('',#937,#812,#813); +#645=AXIS2_PLACEMENT_3D('',#938,#814,#815); +#646=DIRECTION('',(0.,0.,1.)); +#647=DIRECTION('',(1.,0.,0.)); +#648=DIRECTION('',(-1.,0.,0.)); +#649=DIRECTION('',(0.,0.,1.)); +#650=DIRECTION('',(1.,0.,0.)); +#651=DIRECTION('',(0.,0.,-1.)); +#652=DIRECTION('',(-1.,0.,0.)); +#653=DIRECTION('',(0.,0.,1.)); +#654=DIRECTION('',(0.,0.,1.)); +#655=DIRECTION('',(1.,0.,0.)); +#656=DIRECTION('',(0.,0.,1.)); +#657=DIRECTION('',(1.,0.,0.)); +#658=DIRECTION('',(0.,0.,1.)); +#659=DIRECTION('',(1.,0.,0.)); +#660=DIRECTION('',(1.,0.,0.)); +#661=DIRECTION('',(0.,0.,-1.)); +#662=DIRECTION('',(1.,0.,1.82427244985927E-16)); +#663=DIRECTION('',(-1.82427244985927E-16,0.,1.)); +#664=DIRECTION('',(0.,1.,0.)); +#665=DIRECTION('',(0.,0.,1.)); +#666=DIRECTION('',(0.,0.,1.)); +#667=DIRECTION('',(-1.,0.,0.)); +#668=DIRECTION('',(-1.30238988214013E-32,0.,1.)); +#669=DIRECTION('',(1.,0.,1.30238988214013E-32)); +#670=DIRECTION('',(1.,0.,0.)); +#671=DIRECTION('',(0.,0.,-1.)); +#672=DIRECTION('',(1.,0.,1.82427244985927E-16)); +#673=DIRECTION('',(-1.82427244985927E-16,0.,1.)); +#674=DIRECTION('',(0.,1.,0.)); +#675=DIRECTION('',(0.,0.,1.)); +#676=DIRECTION('',(0.,0.,1.)); +#677=DIRECTION('',(-1.,0.,0.)); +#678=DIRECTION('',(-1.30238988214013E-32,0.,1.)); +#679=DIRECTION('',(1.,0.,1.30238988214013E-32)); +#680=DIRECTION('',(0.,0.,1.)); +#681=DIRECTION('',(1.,0.,0.)); +#682=DIRECTION('',(1.,-1.13184868918778E-16,1.89893263065044E-16)); +#683=DIRECTION('',(-1.89893263065044E-16,-3.88578058618805E-16,1.)); +#684=DIRECTION('',(-2.19899415078935E-16,-4.69099741641213E-17,1.)); +#685=DIRECTION('',(-1.,1.66533453693773E-16,-2.19899415078935E-16)); +#686=DIRECTION('',(1.,0.,-1.3934689237845E-14)); +#687=DIRECTION('',(-1.3934689237845E-14,0.,-1.)); +#688=DIRECTION('',(-1.,0.,1.31287847657678E-15)); +#689=DIRECTION('',(1.31287847657678E-15,0.,1.)); +#690=DIRECTION('',(0.707106781186543,0.,-0.707106781186552)); +#691=DIRECTION('',(0.707106781186552,0.,0.707106781186543)); +#692=DIRECTION('',(0.707106781186552,0.,0.707106781186543)); +#693=DIRECTION('',(0.707106781186543,0.,-0.707106781186552)); +#694=DIRECTION('',(1.,0.,-4.78925809218609E-16)); +#695=DIRECTION('',(-4.78925809218609E-16,0.,-1.)); +#696=DIRECTION('',(0.,0.,-1.)); +#697=DIRECTION('',(-1.,0.,0.)); +#698=DIRECTION('',(0.,0.,-1.)); +#699=DIRECTION('',(-1.,0.,0.)); +#700=DIRECTION('',(0.,0.,-1.)); +#701=DIRECTION('',(-1.,0.,0.)); +#702=DIRECTION('',(-1.83697019872103E-16,0.,1.)); +#703=DIRECTION('',(1.,0.,1.83697019872103E-16)); +#704=DIRECTION('',(1.,0.,-1.3934689237845E-14)); +#705=DIRECTION('',(-1.3934689237845E-14,0.,-1.)); +#706=DIRECTION('',(-1.,0.,1.31287847657678E-15)); +#707=DIRECTION('',(1.31287847657678E-15,0.,1.)); +#708=DIRECTION('',(1.,0.,-4.78925809218609E-16)); +#709=DIRECTION('',(-4.78925809218609E-16,0.,-1.)); +#710=DIRECTION('',(0.707106781186552,0.,0.707106781186543)); +#711=DIRECTION('',(0.707106781186543,0.,-0.707106781186552)); +#712=DIRECTION('',(0.707106781186543,0.,-0.707106781186552)); +#713=DIRECTION('',(0.707106781186552,0.,0.707106781186543)); +#714=DIRECTION('',(-1.83697019872103E-16,0.,1.)); +#715=DIRECTION('',(1.,0.,1.83697019872103E-16)); +#716=DIRECTION('',(1.,0.,-4.78925809218609E-16)); +#717=DIRECTION('',(-4.78925809218609E-16,0.,-1.)); +#718=DIRECTION('',(-1.,0.,1.31287847657678E-15)); +#719=DIRECTION('',(1.31287847657678E-15,0.,1.)); +#720=DIRECTION('',(1.,-3.33066907387547E-16,3.17334150243134E-16)); +#721=DIRECTION('',(3.17334150243134E-16,3.33066907387547E-16,-1.)); +#722=DIRECTION('',(1.40027729191297E-14,1.11022302462517E-16,1.)); +#723=DIRECTION('',(-1.,-1.01794941766887E-16,1.40027729191297E-14)); +#724=DIRECTION('',(1.85507098144317E-16,-4.53173733155194E-16,1.)); +#725=DIRECTION('',(-1.,1.96451595765668E-16,1.85507098144317E-16)); +#726=DIRECTION('',(0.,1.,0.)); +#727=DIRECTION('',(-1.05008862849387E-30,0.,1.)); +#728=DIRECTION('',(0.,1.,0.)); +#729=DIRECTION('',(1.,0.,0.)); +#730=DIRECTION('',(0.,1.,0.)); +#731=DIRECTION('',(1.,0.,0.)); +#732=DIRECTION('',(0.,1.,0.)); +#733=DIRECTION('',(-1.05008862849387E-30,0.,1.)); +#734=DIRECTION('',(0.,1.,0.)); +#735=DIRECTION('',(1.,0.,0.)); +#736=DIRECTION('',(0.,1.,0.)); +#737=DIRECTION('',(-1.05008862849387E-30,0.,1.)); +#738=DIRECTION('',(0.,1.,0.)); +#739=DIRECTION('',(1.,0.,0.)); +#740=DIRECTION('',(0.,1.,0.)); +#741=DIRECTION('',(-1.05008862849387E-30,0.,1.)); +#742=DIRECTION('',(2.7622018602606E-15,1.05008862849387E-30,-1.)); +#743=DIRECTION('',(-3.80163609184884E-16,1.,0.)); +#744=DIRECTION('',(4.93038065763132E-32,1.,0.)); +#745=DIRECTION('',(5.19347695802905E-30,0.,1.)); +#746=DIRECTION('',(0.,1.,0.)); +#747=DIRECTION('',(1.,0.,0.)); +#748=DIRECTION('',(0.,1.,0.)); +#749=DIRECTION('',(1.,0.,0.)); +#750=DIRECTION('',(0.,1.,0.)); +#751=DIRECTION('',(5.19347695802905E-30,0.,1.)); +#752=DIRECTION('',(0.,1.,0.)); +#753=DIRECTION('',(1.,0.,0.)); +#754=DIRECTION('',(0.,1.,0.)); +#755=DIRECTION('',(5.19347695802905E-30,0.,1.)); +#756=DIRECTION('',(0.,1.,0.)); +#757=DIRECTION('',(1.,0.,0.)); +#758=DIRECTION('',(4.93038065763132E-32,1.,0.)); +#759=DIRECTION('',(5.19347695802905E-30,0.,1.)); +#760=DIRECTION('',(-1.,-5.19347695802905E-30,1.34625469127775E-14)); +#761=DIRECTION('',(0.,1.,3.85772245896491E-16)); +#762=DIRECTION('',(0.,1.,0.)); +#763=DIRECTION('',(1.,0.,0.)); +#764=DIRECTION('',(0.,1.,0.)); +#765=DIRECTION('',(1.,0.,0.)); +#766=DIRECTION('',(0.,1.,0.)); +#767=DIRECTION('',(1.,0.,0.)); +#768=DIRECTION('',(0.,1.,0.)); +#769=DIRECTION('',(1.,0.,0.)); +#770=DIRECTION('',(0.,1.,0.)); +#771=DIRECTION('',(1.,0.,0.)); +#772=DIRECTION('',(0.,1.,0.)); +#773=DIRECTION('',(1.,0.,0.)); +#774=DIRECTION('',(0.,1.,0.)); +#775=DIRECTION('',(1.,0.,0.)); +#776=DIRECTION('',(0.,1.,0.)); +#777=DIRECTION('',(1.,0.,0.)); +#778=DIRECTION('',(1.8197155661376E-16,-3.2878598448249E-31,-1.)); +#779=DIRECTION('',(1.80679876899854E-15,1.,0.)); +#780=DIRECTION('',(6.16297582203915E-33,-1.,0.)); +#781=DIRECTION('',(-1.,-6.16297582203915E-33,0.)); +#782=DIRECTION('',(0.,1.,0.)); +#783=DIRECTION('',(1.,-6.16297582203915E-33,0.)); +#784=DIRECTION('',(0.,1.,0.)); +#785=DIRECTION('',(1.,-6.16297582203915E-33,0.)); +#786=DIRECTION('',(0.,1.,0.)); +#787=DIRECTION('',(1.,0.,0.)); +#788=DIRECTION('',(0.,1.,0.)); +#789=DIRECTION('',(1.,6.16297582203915E-33,0.)); +#790=DIRECTION('',(0.,1.,0.)); +#791=DIRECTION('',(1.,0.,0.)); +#792=DIRECTION('',(0.,1.,0.)); +#793=DIRECTION('',(1.,6.16297582203915E-33,0.)); +#794=DIRECTION('',(6.16297582203915E-33,-1.,0.)); +#795=DIRECTION('',(-1.,-6.16297582203915E-33,0.)); +#796=DIRECTION('',(-1.,0.,0.)); +#797=DIRECTION('',(0.,1.,4.69099741641213E-17)); +#798=DIRECTION('',(0.,-1.,0.)); +#799=DIRECTION('',(-5.95461454756772E-31,0.,-1.)); +#800=DIRECTION('',(0.,1.,0.)); +#801=DIRECTION('',(1.,0.,0.)); +#802=DIRECTION('',(0.,1.,0.)); +#803=DIRECTION('',(1.,0.,0.)); +#804=DIRECTION('',(0.,1.,0.)); +#805=DIRECTION('',(5.95461454756772E-31,0.,1.)); +#806=DIRECTION('',(0.,1.,0.)); +#807=DIRECTION('',(1.,0.,0.)); +#808=DIRECTION('',(0.,1.,0.)); +#809=DIRECTION('',(5.95461454756772E-31,0.,1.)); +#810=DIRECTION('',(0.,1.,0.)); +#811=DIRECTION('',(1.,0.,0.)); +#812=DIRECTION('',(0.,-1.,0.)); +#813=DIRECTION('',(-5.95461454756772E-31,0.,-1.)); +#814=DIRECTION('',(2.18365867936527E-15,-5.95461454756772E-31,-1.)); +#815=DIRECTION('',(2.72689802844946E-16,1.,0.)); +#816=CARTESIAN_POINT('',(0.,0.,0.)); +#817=CARTESIAN_POINT('',(76.2,0.,49.5008035838541)); +#818=CARTESIAN_POINT('',(76.2,0.,76.2)); +#819=CARTESIAN_POINT('',(76.2,0.,52.451)); +#820=CARTESIAN_POINT('',(76.2,0.,76.2)); +#821=CARTESIAN_POINT('',(76.2,0.,101.6)); +#822=CARTESIAN_POINT('',(23.749,0.,1.21430643318376E-14)); +#823=CARTESIAN_POINT('',(0.,0.,1.21430643318376E-14)); +#824=CARTESIAN_POINT('',(23.749,0.,1.21430643318376E-14)); +#825=CARTESIAN_POINT('',(7.07610529627525E-32,0.,1.21430643318376E-14)); +#826=CARTESIAN_POINT('',(25.4,0.,1.21430643318376E-14)); +#827=CARTESIAN_POINT('',(76.073,0.,76.2)); +#828=CARTESIAN_POINT('',(76.073,0.,76.2)); +#829=CARTESIAN_POINT('',(76.073,0.,101.6)); +#830=CARTESIAN_POINT('',(76.073,0.,0.127000000000026)); +#831=CARTESIAN_POINT('',(-9.62964972193618E-32,0.,0.126999999999988)); +#832=CARTESIAN_POINT('',(-25.4,0.,0.126999999999988)); +#833=CARTESIAN_POINT('',(0.,0.,-7.26683026080672)); +#834=CARTESIAN_POINT('',(76.073,0.,76.2)); +#835=CARTESIAN_POINT('',(76.073,0.,76.2)); +#836=CARTESIAN_POINT('',(76.073,0.,99.949)); +#837=CARTESIAN_POINT('',(76.073,0.,0.127000000000026)); +#838=CARTESIAN_POINT('',(-9.62964972193618E-32,0.,0.126999999999988)); +#839=CARTESIAN_POINT('',(-23.749,0.,0.126999999999988)); +#840=CARTESIAN_POINT('',(0.,0.,-7.26683026080672)); +#841=CARTESIAN_POINT('',(0.,0.,0.)); +#842=CARTESIAN_POINT('',(838.2,-8.62468701161088E-14,76.2000000000001)); +#843=CARTESIAN_POINT('',(914.4,-1.5426903878869E-13,787.4)); +#844=CARTESIAN_POINT('',(-70.7668302608067,1.96571103209653E-30,9.43689570931383E-13)); +#845=CARTESIAN_POINT('',(76.2,1.96571103209653E-30,-1.10424753702407E-12)); +#846=CARTESIAN_POINT('',(76.2,1.96571103209653E-30,25.3999999999989)); +#847=CARTESIAN_POINT('',(-1.43168537993691E-14,-4.33680868994201E-16,-4.24242171002803E-14)); +#848=CARTESIAN_POINT('',(1.25251877955614E-13,25.4,9.71445146547012E-14)); +#849=CARTESIAN_POINT('',(-1.43168537993691E-14,-25.4,-4.24242171002803E-14)); +#850=CARTESIAN_POINT('',(-1.43168537993691E-14,-4.33680868994201E-16,-4.24242171002803E-14)); +#851=CARTESIAN_POINT('',(-76.2,1.96571103209653E-30,1.0193991028235E-12)); +#852=CARTESIAN_POINT('',(-76.2,1.96571103209653E-30,-25.3999999999989)); +#853=CARTESIAN_POINT('',(-23.749,0.,76.2)); +#854=CARTESIAN_POINT('',(0.,0.,76.2)); +#855=CARTESIAN_POINT('',(-23.749,0.,76.2)); +#856=CARTESIAN_POINT('',(-2.8753632705178E-14,-8.67361737988404E-16,76.2)); +#857=CARTESIAN_POINT('',(-25.4000000000001,-8.67361737988404E-16,76.2)); +#858=CARTESIAN_POINT('',(-1.47559197909238E-14,-8.67361737988404E-16,9.71445146547012E-14)); +#859=CARTESIAN_POINT('',(-70.7668302608067,1.96571103209653E-30,9.43689570931383E-13)); +#860=CARTESIAN_POINT('',(76.2,0.,1.34049499275476E-13)); +#861=CARTESIAN_POINT('',(76.2,0.,23.749)); +#862=CARTESIAN_POINT('',(-76.2,0.,2.48065457064683E-13)); +#863=CARTESIAN_POINT('',(-76.2,0.,-23.7489999999991)); +#864=CARTESIAN_POINT('',(-1.43168537993691E-14,-4.33680868994201E-16,-4.24242171002803E-14)); +#865=CARTESIAN_POINT('',(1.25251877955614E-13,-23.749,9.71445146547012E-14)); +#866=CARTESIAN_POINT('',(-1.43168537993691E-14,23.749,-4.24242171002803E-14)); +#867=CARTESIAN_POINT('',(-1.43168537993691E-14,-4.33680868994201E-16,-4.24242171002803E-14)); +#868=CARTESIAN_POINT('',(-1.47559197909238E-14,-8.67361737988404E-16,9.71445146547012E-14)); +#869=CARTESIAN_POINT('',(-76.2,0.,-23.7489999999991)); +#870=CARTESIAN_POINT('',(76.2,0.,23.749)); +#871=CARTESIAN_POINT('',(609.6,-7.82026234956871E-14,863.6)); +#872=CARTESIAN_POINT('',(609.599999999989,1.81567576681962E-13,76.2000000000001)); +#873=CARTESIAN_POINT('',(609.600000000001,-4.25555852104498E-14,939.8)); +#874=CARTESIAN_POINT('',(0.,0.,0.)); +#875=CARTESIAN_POINT('',(1.84889274661175E-29,457.199999999989,0.)); +#876=CARTESIAN_POINT('',(23.749,457.199999999989,0.)); +#877=CARTESIAN_POINT('',(0.,0.,0.)); +#878=CARTESIAN_POINT('',(23.749,0.,0.)); +#879=CARTESIAN_POINT('',(1.84889274661175E-29,457.199999999989,0.)); +#880=CARTESIAN_POINT('',(1.84889274661175E-29,457.199999999989,0.)); +#881=CARTESIAN_POINT('',(25.4,457.199999999989,0.)); +#882=CARTESIAN_POINT('',(0.,0.,0.)); +#883=CARTESIAN_POINT('',(0.,0.,0.)); +#884=CARTESIAN_POINT('',(25.4,0.,0.)); +#885=CARTESIAN_POINT('',(0.,0.,0.)); +#886=CARTESIAN_POINT('',(76.2,-3.46944695195361E-15,76.2)); +#887=CARTESIAN_POINT('',(-4.93038065763132E-29,0.,0.)); +#888=CARTESIAN_POINT('',(9.86076131526265E-29,635.,0.)); +#889=CARTESIAN_POINT('',(23.749,635.,0.)); +#890=CARTESIAN_POINT('',(-4.93038065763132E-29,0.,0.)); +#891=CARTESIAN_POINT('',(23.749,0.,0.)); +#892=CARTESIAN_POINT('',(9.86076131526265E-29,635.,0.)); +#893=CARTESIAN_POINT('',(9.86076131526265E-29,635.,0.)); +#894=CARTESIAN_POINT('',(25.4,635.,0.)); +#895=CARTESIAN_POINT('',(-4.93038065763132E-29,0.,0.)); +#896=CARTESIAN_POINT('',(-4.93038065763132E-29,0.,0.)); +#897=CARTESIAN_POINT('',(25.4,0.,0.)); +#898=CARTESIAN_POINT('',(-4.93038065763132E-29,0.,0.)); +#899=CARTESIAN_POINT('',(609.599999999999,-5.89805981832114E-14,787.4)); +#900=CARTESIAN_POINT('',(0.,0.,0.)); +#901=CARTESIAN_POINT('',(0.,152.527000000011,0.)); +#902=CARTESIAN_POINT('',(23.749,152.527000000011,0.)); +#903=CARTESIAN_POINT('',(0.,0.,0.)); +#904=CARTESIAN_POINT('',(23.749,0.,0.)); +#905=CARTESIAN_POINT('',(0.,152.527000000011,0.)); +#906=CARTESIAN_POINT('',(0.,152.527000000011,0.)); +#907=CARTESIAN_POINT('',(25.4,152.527000000011,0.)); +#908=CARTESIAN_POINT('',(0.,0.,0.)); +#909=CARTESIAN_POINT('',(0.,0.,0.)); +#910=CARTESIAN_POINT('',(25.4,0.,0.)); +#911=CARTESIAN_POINT('',(0.,0.,0.)); +#912=CARTESIAN_POINT('',(685.799999999989,1.83880688453542E-13,76.2)); +#913=CARTESIAN_POINT('',(0.,0.,0.)); +#914=CARTESIAN_POINT('',(0.,-635.127,0.)); +#915=CARTESIAN_POINT('',(23.749,-635.127,0.)); +#916=CARTESIAN_POINT('',(0.,0.,0.)); +#917=CARTESIAN_POINT('',(23.749,-1.46364512797608E-31,0.)); +#918=CARTESIAN_POINT('',(0.,-635.127,0.)); +#919=CARTESIAN_POINT('',(0.,-635.127,0.)); +#920=CARTESIAN_POINT('',(25.4,-635.127,0.)); +#921=CARTESIAN_POINT('',(0.,0.,0.)); +#922=CARTESIAN_POINT('',(0.,0.,0.)); +#923=CARTESIAN_POINT('',(25.4,1.56539585879795E-31,0.)); +#924=CARTESIAN_POINT('',(0.,0.,0.)); +#925=CARTESIAN_POINT('',(914.4,-1.14491749414469E-13,152.4)); +#926=CARTESIAN_POINT('',(0.,0.,0.)); +#927=CARTESIAN_POINT('',(7.39557098644699E-29,-152.527,0.)); +#928=CARTESIAN_POINT('',(23.749,-152.527,0.)); +#929=CARTESIAN_POINT('',(0.,0.,0.)); +#930=CARTESIAN_POINT('',(23.749,0.,0.)); +#931=CARTESIAN_POINT('',(7.39557098644699E-29,-152.527,0.)); +#932=CARTESIAN_POINT('',(7.39557098644699E-29,-152.527,0.)); +#933=CARTESIAN_POINT('',(25.4,-152.527,0.)); +#934=CARTESIAN_POINT('',(0.,0.,0.)); +#935=CARTESIAN_POINT('',(0.,0.,0.)); +#936=CARTESIAN_POINT('',(25.4,0.,0.)); +#937=CARTESIAN_POINT('',(0.,0.,0.)); +#938=CARTESIAN_POINT('',(838.327,-1.49186218934005E-13,863.6)); +#939=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#487,#488, +#489,#490,#491,#492,#493),#940); +#940=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#948)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#958,#957,#956)) +REPRESENTATION_CONTEXT('Asm1','TOP_LEVEL_ASSEMBLY_PART') +); +#941=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#949)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#958,#957,#956)) +REPRESENTATION_CONTEXT('2WCL-2.0-316-7-01','COMPONENT_PART') +); +#942=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#950)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#958,#957,#956)) +REPRESENTATION_CONTEXT('B7WWW-2.0-304-7-01','COMPONENT_PART') +); +#943=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#951)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#958,#957,#956)) +REPRESENTATION_CONTEXT('RNT-304-2.000-0.065-WL-7_oa_0','COMPONENT_PART') +); +#944=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#952)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#958,#957,#956)) +REPRESENTATION_CONTEXT('RNT-304-2.000-0.065-WL-7_oa_1','COMPONENT_PART') +); +#945=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#953)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#958,#957,#956)) +REPRESENTATION_CONTEXT('RNT-304-2.000-0.065-WL-7_oa_2','COMPONENT_PART') +); +#946=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#954)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#958,#957,#956)) +REPRESENTATION_CONTEXT('RNT-304-2.000-0.065-WL-7_oa_3','COMPONENT_PART') +); +#947=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#955)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#958,#957,#956)) +REPRESENTATION_CONTEXT('RNT-304-2.000-0.065-WL-7_oa_4','COMPONENT_PART') +); +#948=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#958, +'DISTANCE_ACCURACY_VALUE','Maximum Tolerance applied to model'); +#949=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#958, +'DISTANCE_ACCURACY_VALUE','Maximum Tolerance applied to model'); +#950=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#958, +'DISTANCE_ACCURACY_VALUE','Maximum Tolerance applied to model'); +#951=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#958, +'DISTANCE_ACCURACY_VALUE','Maximum Tolerance applied to model'); +#952=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#958, +'DISTANCE_ACCURACY_VALUE','Maximum Tolerance applied to model'); +#953=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#958, +'DISTANCE_ACCURACY_VALUE','Maximum Tolerance applied to model'); +#954=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#958, +'DISTANCE_ACCURACY_VALUE','Maximum Tolerance applied to model'); +#955=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#958, +'DISTANCE_ACCURACY_VALUE','Maximum Tolerance applied to model'); +#956=( +NAMED_UNIT(*) +SI_UNIT($,.STERADIAN.) +SOLID_ANGLE_UNIT() +); +#957=( +NAMED_UNIT(*) +PLANE_ANGLE_UNIT() +SI_UNIT($,.RADIAN.) +); +#958=( +LENGTH_UNIT() +NAMED_UNIT(*) +SI_UNIT(.MILLI.,.METRE.) +); +#959=PRODUCT_DEFINITION_SHAPE('','',#978); +#960=PRODUCT_DEFINITION_SHAPE('','',#979); +#961=PRODUCT_DEFINITION_SHAPE(' ','NAUO PRDDFN',#33); +#962=PRODUCT_DEFINITION_SHAPE(' ','NAUO PRDDFN',#34); +#963=PRODUCT_DEFINITION_SHAPE(' ','NAUO PRDDFN',#35); +#964=PRODUCT_DEFINITION_SHAPE('','',#980); +#965=PRODUCT_DEFINITION_SHAPE(' ','NAUO PRDDFN',#36); +#966=PRODUCT_DEFINITION_SHAPE(' ','NAUO PRDDFN',#37); +#967=PRODUCT_DEFINITION_SHAPE(' ','NAUO PRDDFN',#38); +#968=PRODUCT_DEFINITION_SHAPE('','',#981); +#969=PRODUCT_DEFINITION_SHAPE(' ','NAUO PRDDFN',#39); +#970=PRODUCT_DEFINITION_SHAPE('','',#982); +#971=PRODUCT_DEFINITION_SHAPE(' ','NAUO PRDDFN',#40); +#972=PRODUCT_DEFINITION_SHAPE('','',#983); +#973=PRODUCT_DEFINITION_SHAPE(' ','NAUO PRDDFN',#41); +#974=PRODUCT_DEFINITION_SHAPE('','',#984); +#975=PRODUCT_DEFINITION_SHAPE(' ','NAUO PRDDFN',#42); +#976=PRODUCT_DEFINITION_SHAPE('','',#985); +#977=PRODUCT_DEFINITION_SHAPE(' ','NAUO PRDDFN',#43); +#978=PRODUCT_DEFINITION('','',#994,#986); +#979=PRODUCT_DEFINITION('','',#995,#987); +#980=PRODUCT_DEFINITION('','',#996,#988); +#981=PRODUCT_DEFINITION('','',#997,#989); +#982=PRODUCT_DEFINITION('','',#998,#990); +#983=PRODUCT_DEFINITION('','',#999,#991); +#984=PRODUCT_DEFINITION('','',#1000,#992); +#985=PRODUCT_DEFINITION('','',#1001,#993); +#986=PRODUCT_DEFINITION_CONTEXT('',#1035,'design'); +#987=PRODUCT_DEFINITION_CONTEXT('',#1035,'design'); +#988=PRODUCT_DEFINITION_CONTEXT('',#1035,'design'); +#989=PRODUCT_DEFINITION_CONTEXT('',#1035,'design'); +#990=PRODUCT_DEFINITION_CONTEXT('',#1035,'design'); +#991=PRODUCT_DEFINITION_CONTEXT('',#1035,'design'); +#992=PRODUCT_DEFINITION_CONTEXT('',#1035,'design'); +#993=PRODUCT_DEFINITION_CONTEXT('',#1035,'design'); +#994=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('','',#1010, + .NOT_KNOWN.); +#995=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('','',#1011, + .NOT_KNOWN.); +#996=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('','',#1012, + .NOT_KNOWN.); +#997=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('','',#1013, + .NOT_KNOWN.); +#998=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('','',#1014, + .NOT_KNOWN.); +#999=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('','',#1015, + .NOT_KNOWN.); +#1000=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('','',#1016, + .NOT_KNOWN.); +#1001=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('','',#1017, + .NOT_KNOWN.); +#1002=PRODUCT_RELATED_PRODUCT_CATEGORY('','',(#1010)); +#1003=PRODUCT_RELATED_PRODUCT_CATEGORY('','',(#1011)); +#1004=PRODUCT_RELATED_PRODUCT_CATEGORY('','',(#1012)); +#1005=PRODUCT_RELATED_PRODUCT_CATEGORY('','',(#1013)); +#1006=PRODUCT_RELATED_PRODUCT_CATEGORY('','',(#1014)); +#1007=PRODUCT_RELATED_PRODUCT_CATEGORY('','',(#1015)); +#1008=PRODUCT_RELATED_PRODUCT_CATEGORY('','',(#1016)); +#1009=PRODUCT_RELATED_PRODUCT_CATEGORY('','',(#1017)); +#1010=PRODUCT('Asm1','Asm1','Asm1',(#1026)); +#1011=PRODUCT('2WCL-2.0-316-7-01','2WCL-2.0-316-7-01', +'2WCL-2.0-316-7-01',(#1027)); +#1012=PRODUCT('B7WWW-2.0-304-7-01','B7WWW-2.0-304-7-01', +'B7WWW-2.0-304-7-01',(#1028)); +#1013=PRODUCT('RNT-304-2.000-0.065-WL-7_oa_0', +'RNT-304-2.000-0.065-WL-7_oa_0','RNT-304-2.000-0.065-WL-7_oa_0',(#1029)); +#1014=PRODUCT('RNT-304-2.000-0.065-WL-7_oa_1', +'RNT-304-2.000-0.065-WL-7_oa_1','RNT-304-2.000-0.065-WL-7_oa_1',(#1030)); +#1015=PRODUCT('RNT-304-2.000-0.065-WL-7_oa_2', +'RNT-304-2.000-0.065-WL-7_oa_2','RNT-304-2.000-0.065-WL-7_oa_2',(#1031)); +#1016=PRODUCT('RNT-304-2.000-0.065-WL-7_oa_3', +'RNT-304-2.000-0.065-WL-7_oa_3','RNT-304-2.000-0.065-WL-7_oa_3',(#1032)); +#1017=PRODUCT('RNT-304-2.000-0.065-WL-7_oa_4', +'RNT-304-2.000-0.065-WL-7_oa_4','RNT-304-2.000-0.065-WL-7_oa_4',(#1033)); +#1018=PRODUCT_CATEGORY('',''); +#1019=PRODUCT_CATEGORY('',''); +#1020=PRODUCT_CATEGORY('',''); +#1021=PRODUCT_CATEGORY('',''); +#1022=PRODUCT_CATEGORY('',''); +#1023=PRODUCT_CATEGORY('',''); +#1024=PRODUCT_CATEGORY('',''); +#1025=PRODUCT_CATEGORY('',''); +#1026=PRODUCT_CONTEXT('',#1035,'mechanical'); +#1027=PRODUCT_CONTEXT('',#1035,'mechanical'); +#1028=PRODUCT_CONTEXT('',#1035,'mechanical'); +#1029=PRODUCT_CONTEXT('',#1035,'mechanical'); +#1030=PRODUCT_CONTEXT('',#1035,'mechanical'); +#1031=PRODUCT_CONTEXT('',#1035,'mechanical'); +#1032=PRODUCT_CONTEXT('',#1035,'mechanical'); +#1033=PRODUCT_CONTEXT('',#1035,'mechanical'); +#1034=APPLICATION_PROTOCOL_DEFINITION('international standard', +'automotive_design',2010,#1035); +#1035=APPLICATION_CONTEXT( +'core data for automotive mechanical design processes'); +ENDSEC; +END-ISO-10303-21; diff --git a/src/ExchangePlugin/Test/tests.set b/src/ExchangePlugin/Test/tests.set index b4e7d0a52..22bc7bf30 100755 --- a/src/ExchangePlugin/Test/tests.set +++ b/src/ExchangePlugin/Test/tests.set @@ -56,4 +56,6 @@ SET(TEST_NAMES TestImportPart_Multiple.py TestImportPart_ToEmptyPart.py TestImportPart_ToEmptyPartSet.py -) \ No newline at end of file + TestStep1.py + TestStep2.py +) diff --git a/src/GDMLPlugin/CMakeLists.txt b/src/GDMLPlugin/CMakeLists.txt index 416098c8f..a6888941e 100644 --- a/src/GDMLPlugin/CMakeLists.txt +++ b/src/GDMLPlugin/CMakeLists.txt @@ -50,7 +50,6 @@ INCLUDE_DIRECTORIES( ../Events ../Config ../ModuleBase - ${OpenCASCADE_INCLUDE_DIR} ) SET(PROJECT_LIBRARIES diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_BoundingBox.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_BoundingBox.cpp index f2816d370..15d894abd 100644 --- a/src/GeomAlgoAPI/GeomAlgoAPI_BoundingBox.cpp +++ b/src/GeomAlgoAPI/GeomAlgoAPI_BoundingBox.cpp @@ -342,9 +342,9 @@ Standard_Boolean PreciseBoundingBox(const TopoDS_Shape &theShape, Bnd_Box &theBo //================================================================================================= bool GetBoundingBox(const std::shared_ptr& theShape, - Standard_Real& theXmin,Standard_Real& theXmax, - Standard_Real& theYmin,Standard_Real& theYmax, - Standard_Real& theZmin,Standard_Real& theZmax, + double& theXmin, double& theXmax, + double& theYmin, double& theYmax, + double& theZmin, double& theZmax, std::string& theError) { #ifdef _DEBUG diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_BoundingBox.h b/src/GeomAlgoAPI/GeomAlgoAPI_BoundingBox.h index 5fc7fb638..575d5061d 100644 --- a/src/GeomAlgoAPI/GeomAlgoAPI_BoundingBox.h +++ b/src/GeomAlgoAPI/GeomAlgoAPI_BoundingBox.h @@ -22,7 +22,6 @@ #include #include -#include /// get the boundin box of theshape. /// \param theShape the shape @@ -36,9 +35,9 @@ /// \param theError error GEOMALGOAPI_EXPORT bool GetBoundingBox(const std::shared_ptr& theShape, - Standard_Real& theXmin,Standard_Real& theXmax, - Standard_Real& theYmin,Standard_Real& theYmax, - Standard_Real& theZmin,Standard_Real& theZmax, + double& theXmin, double& theXmax, + double& theYmin, double& theYmax, + double& theZmin, double& theZmax, std::string& theError); #endif diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_STEPExport.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_STEPExport.cpp index 3abbe4827..224840ec5 100644 --- a/src/GeomAlgoAPI/GeomAlgoAPI_STEPExport.cpp +++ b/src/GeomAlgoAPI/GeomAlgoAPI_STEPExport.cpp @@ -21,50 +21,143 @@ #include "GeomAlgoAPI_Tools.h" -#include +#include +#include +#include -// OOCT includes -#include -#include +#include +#include +#include +#include +#include +#include #include +#include -bool STEPExport(const std::string& theFileName, - const std::string& /*theFormatName*/, - const std::shared_ptr& theShape, - std::string& theError) +// a structure to manage step document exported attributes +struct GeomAlgoAPI_STEPAttributes { + bool myHasColor; ///< true if color is defined + Quantity_Color myColor; + std::wstring myName; + Handle(XCAFDoc_ShapeTool) myShapeTool; + Handle(XCAFDoc_ColorTool) myColorTool; + + GeomAlgoAPI_STEPAttributes(const TDF_Label& theMain) : myHasColor(false) + { + myShapeTool = XCAFDoc_DocumentTool::ShapeTool(theMain); + myShapeTool->SetAutoNaming(Standard_False); + myColorTool = XCAFDoc_DocumentTool::ColorTool(theMain); + } +}; + +static TDF_Label exportShape(const GeomShapePtr theShape, GeomAlgoAPI_STEPAttributes& theAttrs, + const GeomShapePtr theFatherShape, TDF_Label& theFaterID) { + TopoDS_Shape aShape = theShape->impl(); + TDF_Label aShapeLab; + if (!theFaterID.IsNull()) { // make sub-component of father's assembly + gp_Trsf aFatherTrsf; + if (theFatherShape.get()) + aFatherTrsf = theFatherShape->implPtr()->Location().Transformation(); + TopLoc_Location aLocation = aFatherTrsf.Inverted() * aShape.Location(); + static const TopLoc_Location anEmptyLoc; + aShape.Location(anEmptyLoc); + aShapeLab = theAttrs.myShapeTool->AddShape(aShape, Standard_False); + TDF_Label aRetLabel = theAttrs.myShapeTool->AddComponent(theFaterID, aShapeLab, aLocation); + if (!aRetLabel.IsNull()) + aRetLabel.ForgetAttribute(TDataStd_Name::GetID()); + } + else { // make a single shape + aShapeLab = theAttrs.myShapeTool->AddShape(aShape, Standard_False); + TDF_Label aRefShapeLab; + if (theAttrs.myShapeTool->GetReferredShape(aShapeLab, aRefShapeLab)) + aShapeLab = aRefShapeLab; + } + TDataStd_Name::Set(aShapeLab, TCollection_ExtendedString(theAttrs.myName.c_str())); + if (theAttrs.myHasColor) { + TDF_Label aColorLab = theAttrs.myColorTool->AddColor(theAttrs.myColor); + theAttrs.myColorTool->SetColor(aShapeLab, aColorLab, XCAFDoc_ColorGen); + } + return aShapeLab; +} + +/// Returns the attributes of the result: names and color +static void getAttributes(const ResultPtr& theResult, GeomAlgoAPI_STEPAttributes& theAttrs) { - #ifdef _DEBUG - std::cout << "Export STEP into file " << theFileName << std::endl; - #endif + theAttrs.myName = theResult->data()->name(); + AttributeIntArrayPtr aColorAttr = theResult->data()->intArray(ModelAPI_Result::COLOR_ID()); + if (aColorAttr.get() && aColorAttr->size() > 2) { + theAttrs.myHasColor = true; + theAttrs.myColor.SetValues(aColorAttr->value(0) / 255., aColorAttr->value(1) / 255., + aColorAttr->value(2) / 255., Quantity_TOC_RGB); + } + else + theAttrs.myHasColor = false; +} - if (!theShape.get()) { - theError = "STEP Export failed: An invalid argument"; - return false; +/// Performs the whole result export: as an assembly or a single one, but with results attributes. +static void putResult(const ResultPtr& theResult, const GeomShapePtr theFatherShape, + TDF_Label& theFaterID, GeomAlgoAPI_STEPAttributes& theAttrs) +{ + GeomShapePtr aShape = theResult->shape(); + if (!aShape.get() || aShape->isNull()) + return; + ResultBodyPtr aBody = std::dynamic_pointer_cast(theResult); + if (aBody.get() && aBody->numberOfSubs()) { // make an assembly + getAttributes(theResult, theAttrs); + TDF_Label aBodyID = exportShape(aShape, theAttrs, theFatherShape, theFaterID); + int aNumSubs = aBody->numberOfSubs(); + for (int a = 0; a < aNumSubs; a++) { + ResultBodyPtr aSub = aBody->subResult(a); + if (!aSub->isDisabled()) + putResult(aSub, aShape, aBodyID, theAttrs); + } + } + else { // a simple shape-body + getAttributes(theResult, theAttrs); + exportShape(aShape, theAttrs, theFatherShape, theFaterID); } +} - try - { - // Set "C" numeric locale to save numbers correctly - GeomAlgoAPI_Tools::Localizer loc; +bool STEPExport(const std::string& theFileName, + const std::list >& theShapes, + const std::list >& theResults, + std::string& theError) +{ + theError = ""; + // prepare XCAF document to store the whole data structure there + Handle(TDocStd_Document) aDoc = new TDocStd_Document("BinXCAF"); + + GeomAlgoAPI_STEPAttributes anAttrs(aDoc->Main()); - IFSelect_ReturnStatus status ; - //VRV: OCC 4.0 migration - STEPControl_Writer aWriter; - Interface_Static::SetCVal("xstep.cascade.unit","M"); + std::list >::const_iterator aShape = theShapes.cbegin(); + std::list >::const_iterator aResult = theResults.cbegin(); + for (; aShape != theShapes.cend(); aShape++, aResult++) { + TDF_Label aNullLab; + if (aResult->get() && !(*aShape)->isSame((*aResult)->shape())) + { // simple sub-shape + getAttributes(*aResult, anAttrs); + exportShape(*aShape, anAttrs, GeomShapePtr(), aNullLab); + } + else { // whole result selection + putResult(*aResult, GeomShapePtr(), aNullLab, anAttrs); + } + } + // store the XCAF document to STEP file + try { + GeomAlgoAPI_Tools::Localizer aLocalizer; // Set "C" numeric locale to save numbers correctly + STEPCAFControl_Writer aWriter; + Interface_Static::SetCVal("xstep.cascade.unit", "M"); + Interface_Static::SetIVal("write.step.nonmanifold", 0); // 1 don't allow to export assemly tree Interface_Static::SetCVal("write.step.unit", "M"); - Interface_Static::SetIVal("write.step.nonmanifold", 1); - status = aWriter.Transfer(theShape->impl(), STEPControl_AsIs); - //VRV: OCC 4.0 migration - if( status == IFSelect_RetDone ) - status = aWriter.Write(theFileName.c_str()); - // Return previous locale - if( status == IFSelect_RetDone ) - return true; + auto aStatus = aWriter.Transfer(aDoc, STEPControl_AsIs); + if (aStatus == IFSelect_RetDone) + aStatus = aWriter.Write(theFileName.c_str()); + if (aStatus != IFSelect_RetDone) + theError = "STEP Export failed"; } - catch (Standard_Failure) - { + catch (Standard_Failure exception) { theError = "Exception catched in STEPExport"; } - return false; + return theError.empty(); } diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_STEPExport.h b/src/GeomAlgoAPI/GeomAlgoAPI_STEPExport.h index 43db04f9d..ce9928f69 100644 --- a/src/GeomAlgoAPI/GeomAlgoAPI_STEPExport.h +++ b/src/GeomAlgoAPI/GeomAlgoAPI_STEPExport.h @@ -23,14 +23,19 @@ #include #include +#include +#include -#include +class GeomAPI_Shape; +class ModelAPI_Result; -/// Implementation of the export STEP files algorithms +/// Implementation of the export STEP files algorithms. +/// In order to supposrt names and colors experted, theShapes list corresponds to theResults +/// list elements one by one. GEOMALGOAPI_EXPORT bool STEPExport(const std::string& theFileName, - const std::string& theFormatName, - const std::shared_ptr& theShape, + const std::list >& theShapes, + const std::list >& theResults, std::string& theError); #endif /* GEOMALGOAPI_STEPEXPORT_H_ */ diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_STEPImportXCAF.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_STEPImportXCAF.cpp index 2d6f6ac60..3daecc1b6 100644 --- a/src/GeomAlgoAPI/GeomAlgoAPI_STEPImportXCAF.cpp +++ b/src/GeomAlgoAPI/GeomAlgoAPI_STEPImportXCAF.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -47,9 +48,34 @@ #include #include #include +#include +#include #include +// read geometry +std::shared_ptr setGeom(const Handle(XCAFDoc_ShapeTool) &shapeTool, + const TDF_Label &theLabel, + std::string& theError); + +/// read attributs for label +void setShapeAttributes(const Handle(XCAFDoc_ShapeTool) &theShapeTool, + const Handle(XCAFDoc_ColorTool) &theColorTool, + const Handle(XCAFDoc_MaterialTool) &TheMaterialTool, + const TDF_Label &theLabel, + const TopLoc_Location &theLoc, + std::shared_ptr theResultBody, + std::map< std::wstring, std::list> &theMaterialShape, + bool theIsRef); + +// store Materiel for theShapeLabel in the map theMaterialShape +void storeMaterial(std::shared_ptr theResultBody, + const Handle(Standard_Transient) &theEnti, + const TopTools_IndexedMapOfShape &theIndices, + const Handle(Transfer_TransientProcess) &theTP, + const TDF_Label &theShapeLabel, + std::map< std::wstring, std::list> &theMaterialShape); + //============================================================================= TopoDS_Shape getShape(const Handle(Standard_Transient) &theEnti, const Handle(Transfer_TransientProcess) &theTP) @@ -89,7 +115,7 @@ std::shared_ptr readAttributes(STEPCAFControl_Reader &theReader, setShapeAttributes(shapeTool, colorTool, materialTool, mainLabel, TopLoc_Location(),theResultBody,theMaterialShape,false); - std::shared_ptr ageom = setgeom(shapeTool,mainLabel,theError); + std::shared_ptr ageom = setGeom(shapeTool,mainLabel,theError); STEPControl_Reader aReader = theReader.ChangeReader(); @@ -119,7 +145,7 @@ std::shared_ptr readAttributes(STEPCAFControl_Reader &theReader, } //============================================================================= -std::shared_ptr setgeom(const Handle(XCAFDoc_ShapeTool) &theShapeTool, +std::shared_ptr setGeom(const Handle(XCAFDoc_ShapeTool) &theShapeTool, const TDF_Label& /*theLabel*/, std::string& theError) { @@ -386,4 +412,3 @@ void storeMaterial( std::shared_ptr theResultBody, } } } - diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_STEPImportXCAF.h b/src/GeomAlgoAPI/GeomAlgoAPI_STEPImportXCAF.h index 621bdaa4e..7b0d467d3 100644 --- a/src/GeomAlgoAPI/GeomAlgoAPI_STEPImportXCAF.h +++ b/src/GeomAlgoAPI/GeomAlgoAPI_STEPImportXCAF.h @@ -22,45 +22,15 @@ #include -#include -#include - #include #include -#include - /// read Attributs of step file - GEOMALGOAPI_EXPORT - std::shared_ptr readAttributes(STEPCAFControl_Reader &theReader, - std::shared_ptr theResultBody, +/// read Attributs of step file +std::shared_ptr readAttributes(STEPCAFControl_Reader &theReader, + std::shared_ptr theResultBody, const bool theMaterials, std::map< std::wstring,std::list> &theMaterialShape, std::string& theError); -/// read attributs for label - GEOMALGOAPI_EXPORT - void setShapeAttributes(const Handle(XCAFDoc_ShapeTool) &theShapeTool, - const Handle(XCAFDoc_ColorTool) &theColorTool, - const Handle(XCAFDoc_MaterialTool) &TheMaterialTool, - const TDF_Label &theLabel, - const TopLoc_Location &theLoc, - std::shared_ptr theResultBody, - std::map< std::wstring, std::list> &theMaterialShape, - bool theIsRef); - -// read geometry -GEOMALGOAPI_EXPORT -std::shared_ptr setgeom(const Handle(XCAFDoc_ShapeTool) &shapeTool, - const TDF_Label &theLabel, - std::string& theError); - -// store Materiel for theShapeLabel in the map theMaterialShape -GEOMALGOAPI_EXPORT -void storeMaterial(std::shared_ptr theResultBody, - const Handle(Standard_Transient) &theEnti, - const TopTools_IndexedMapOfShape &theIndices, - const Handle(Transfer_TransientProcess) &theTP, - const TDF_Label &theShapeLabel, - std::map< std::wstring, std::list> &theMaterialShape); #endif /* GEOMALGOAPI_STEPIMPORTXCAF_H_ */ diff --git a/src/Model/Model_BodyBuilder.cpp b/src/Model/Model_BodyBuilder.cpp index 94377cb83..b0427777b 100644 --- a/src/Model/Model_BodyBuilder.cpp +++ b/src/Model/Model_BodyBuilder.cpp @@ -529,7 +529,7 @@ void Model_BodyBuilder::generated(const GeomShapePtr& theOldShape, if (aNewShapeType == TopAbs_WIRE || aNewShapeType == TopAbs_SHELL) { // TODO: This is a workaround. New shape should be only vertex, edge or face. TopAbs_ShapeEnum aShapeTypeToExplore = aNewShapeType == TopAbs_WIRE ? TopAbs_EDGE : TopAbs_FACE; - aTag = TopAbs_WIRE ? GENERATED_EDGES_TAG : GENERATED_FACES_TAG; + aTag = aNewShapeType == TopAbs_WIRE ? GENERATED_EDGES_TAG : GENERATED_FACES_TAG; for (TopExp_Explorer anExp(aNewShape, aShapeTypeToExplore); anExp.More(); anExp.Next()) { builder(aTag)->Generated(anOldShape, anExp.Current()); } @@ -750,7 +750,7 @@ void Model_BodyBuilder::loadGeneratedShapes(const GeomMakeShapePtr& theAlgo, // TODO: This is a workaround. New shape should be only edge or face. TopAbs_ShapeEnum aShapeTypeToExplore = aNewShapeType == TopAbs_WIRE ? TopAbs_EDGE : TopAbs_FACE; - int aTag = TopAbs_WIRE ? GENERATED_EDGES_TAG : GENERATED_FACES_TAG; + int aTag = aNewShapeType == TopAbs_WIRE ? GENERATED_EDGES_TAG : GENERATED_FACES_TAG; for (TopExp_Explorer anExp(aNewShape_, aShapeTypeToExplore); anExp.More(); anExp.Next()) { builder(aTag)->Generated(anOldSubShape_, anExp.Current()); // store information about the external document reference to restore old shape on open diff --git a/src/Model/Model_Document.cpp b/src/Model/Model_Document.cpp index 3aa8452ec..72b11c77e 100644 --- a/src/Model/Model_Document.cpp +++ b/src/Model/Model_Document.cpp @@ -74,10 +74,6 @@ #include #include -#ifdef TINSPECTOR -#include -#endif - #include #include @@ -111,13 +107,10 @@ static const Standard_GUID kEXTERNAL_SHAPE_REF("9aa5dd14-6d34-4a8d-8786-05842fd7 Model_Document::Model_Document(const int theID, const std::string theKind) : myID(theID), myKind(theKind), - myDoc(new TDocStd_Document("BinOcaf")), // binary OCAF format myIsActive(false), myIsSetCurrentFeature(false) { -#ifdef TINSPECTOR - ModelAPI_Session::get()->application()->NewDocument("BinOcaf", myDoc); -#endif + Model_Application::getApplication()->NewDocument("BinOcaf", myDoc); myObjs = new Model_Objects(myDoc->Main()); myDoc->SetUndoLimit(UNDO_LIMIT); myTransactionSave = 0; diff --git a/src/Model/Model_Session.cpp b/src/Model/Model_Session.cpp index 5456d832e..607196456 100644 --- a/src/Model/Model_Session.cpp +++ b/src/Model/Model_Session.cpp @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include @@ -674,3 +673,10 @@ void Model_Session::blockAutoUpdate(const bool theBlock) } } } + +#ifdef TINSPECTOR +Handle(TDocStd_Application) Model_Session::application() +{ + return Model_Application::getApplication(); +} +#endif \ No newline at end of file diff --git a/src/Model/Model_Session.h b/src/Model/Model_Session.h index 9dc711aba..f01909bf7 100644 --- a/src/Model/Model_Session.h +++ b/src/Model/Model_Session.h @@ -28,7 +28,7 @@ #include #ifdef TINSPECTOR -#include "Model_Application.h" +#include #endif class Model_Document; @@ -163,9 +163,7 @@ class Model_Session : public ModelAPI_Session, public Events_Listener MODEL_EXPORT virtual void blockAutoUpdate(const bool theBlock); #ifdef TINSPECTOR - MODEL_EXPORT virtual Handle(TDocStd_Application) application() { - return Model_Application::getApplication(); - } + MODEL_EXPORT virtual Handle(TDocStd_Application) application(); #endif protected: diff --git a/src/ModelAPI/CMakeLists.txt b/src/ModelAPI/CMakeLists.txt index 058e2de51..bc53d7042 100644 --- a/src/ModelAPI/CMakeLists.txt +++ b/src/ModelAPI/CMakeLists.txt @@ -124,10 +124,6 @@ SET(PROJECT_LIBRARIES SET(CMAKE_SWIG_FLAGS -threads -w325,321,362,383,302,403,451,473) ADD_DEFINITIONS(-DMODELAPI_EXPORTS) -IF(TKTInspector) - ADD_DEFINITIONS(-DTINSPECTOR) -ENDIF() - ADD_LIBRARY(ModelAPI SHARED ${PROJECT_SOURCES} ${PROJECT_HEADERS}) SET_TARGET_PROPERTIES(ModelAPI PROPERTIES LINKER_LANGUAGE CXX) TARGET_LINK_LIBRARIES(ModelAPI ${PROJECT_LIBRARIES}) @@ -137,7 +133,6 @@ INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/Config ${PROJECT_SOURCE_DIR}/src/GeomAPI ${PROJECT_SOURCE_DIR}/src/GeomAlgoAPI ${PROJECT_SOURCE_DIR}/src/Locale - ${OpenCASCADE_INCLUDE_DIR} ) diff --git a/src/ModelAPI/ModelAPI_Events.cpp b/src/ModelAPI/ModelAPI_Events.cpp index 4a8caa8e4..43cfc4d0c 100644 --- a/src/ModelAPI/ModelAPI_Events.cpp +++ b/src/ModelAPI/ModelAPI_Events.cpp @@ -472,7 +472,8 @@ const ListOfShape& ModelAPI_ShapesFailedMessage::shapes() const } /// Creates an empty message -ModelAPI_CheckConstraintsMessage::ModelAPI_CheckConstraintsMessage(const Events_ID theID, const void* theSender) +ModelAPI_CheckConstraintsMessage::ModelAPI_CheckConstraintsMessage( + const Events_ID theID, const void* theSender) :Events_Message(theID, theSender) { } diff --git a/src/ModelAPI/ModelAPI_Events.h b/src/ModelAPI/ModelAPI_Events.h index 277cc7db9..0802986fd 100644 --- a/src/ModelAPI/ModelAPI_Events.h +++ b/src/ModelAPI/ModelAPI_Events.h @@ -668,7 +668,8 @@ class ModelAPI_CheckConstraintsMessage : public Events_Message { public: /// Creates an empty message - MODELAPI_EXPORT ModelAPI_CheckConstraintsMessage(const Events_ID theID, const void* theSender = 0); + MODELAPI_EXPORT ModelAPI_CheckConstraintsMessage( + const Events_ID theID, const void* theSender = 0); /// The virtual destructor MODELAPI_EXPORT virtual ~ModelAPI_CheckConstraintsMessage(); diff --git a/src/ModelAPI/ModelAPI_Session.h b/src/ModelAPI/ModelAPI_Session.h index ff65c45ba..42739259c 100644 --- a/src/ModelAPI/ModelAPI_Session.h +++ b/src/ModelAPI/ModelAPI_Session.h @@ -25,11 +25,6 @@ #include #include -#ifdef TINSPECTOR -#include -#include -#endif - class ModelAPI_Feature; class ModelAPI_Plugin; class ModelAPI_Document; @@ -146,10 +141,6 @@ class MODELAPI_EXPORT ModelAPI_Session /// Set state of the auto-update of features result in the application virtual void blockAutoUpdate(const bool theBlock) = 0; -#ifdef TINSPECTOR - virtual Handle(TDocStd_Application) application() = 0; -#endif - protected: /// Sets the session interface implementation (once per application launch) static void setSession(std::shared_ptr theManager); diff --git a/src/ModelHighAPI/CMakeLists.txt b/src/ModelHighAPI/CMakeLists.txt index b0100f89b..d8e270da4 100644 --- a/src/ModelHighAPI/CMakeLists.txt +++ b/src/ModelHighAPI/CMakeLists.txt @@ -58,7 +58,6 @@ SET(PROJECT_LIBRARIES Locale ModelAPI ModelGeomAlgo - ModuleBase ) ADD_DEFINITIONS(-DMODELHIGHAPI_EXPORTS -DWNT) @@ -88,9 +87,7 @@ INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src/Locale ${PROJECT_SOURCE_DIR}/src/ModelAPI ${PROJECT_SOURCE_DIR}/src/ModelGeomAlgo - ${PROJECT_SOURCE_DIR}/src/ModuleBase ${PROJECT_SOURCE_DIR}/src/PartSetPlugin - ${OpenCASCADE_INCLUDE_DIR} ) set(SWIG_MODULE_ModelHighAPI_EXTRA_DEPS diff --git a/src/ModelHighAPI/ModelHighAPI_Dumper.cpp b/src/ModelHighAPI/ModelHighAPI_Dumper.cpp index bcd3a2069..a7a84cefd 100644 --- a/src/ModelHighAPI/ModelHighAPI_Dumper.cpp +++ b/src/ModelHighAPI/ModelHighAPI_Dumper.cpp @@ -70,9 +70,10 @@ #include -#include - #include +#include +#include +#include // =========== Implementation of storage of dumped data =========== static const int THE_DUMP_PRECISION = 16; @@ -260,8 +261,7 @@ void ModelHighAPI_Dumper::DumpStorage::restoreReservedBuffer() bool ModelHighAPI_Dumper::DumpStorage::exportTo(const std::string& theFilename, const ModulesSet& theUsedModules) { - std::ofstream aFile; - OSD_OpenStream(aFile, theFilename.c_str(), std::ofstream::out); + std::ofstream aFile(theFilename.c_str(), std::ofstream::out); if (!aFile.is_open()) return false; diff --git a/src/ModelHighAPI/ModelHighAPI_FeatureStore.cpp b/src/ModelHighAPI/ModelHighAPI_FeatureStore.cpp index c6c2f5f13..83653fece 100644 --- a/src/ModelHighAPI/ModelHighAPI_FeatureStore.cpp +++ b/src/ModelHighAPI/ModelHighAPI_FeatureStore.cpp @@ -44,15 +44,15 @@ #include #include #include +#include #include #include -#include -#include - #include #include +#include +#include #define PRECISION 6 #define TOLERANCE (1.e-7) @@ -403,19 +403,17 @@ std::string ModelHighAPI_FeatureStore::dumpAttr(const AttributePtr& theAttr) { } std::string ModelHighAPI_FeatureStore::dumpShape(std::shared_ptr& theShape) { - TopoDS_Shape aShape = theShape->impl(); - if (aShape.IsNull()) { + if (theShape->isNull()) { return "null"; } std::ostringstream aResult; // output the number of shapes of different types - TopAbs_ShapeEnum aType = TopAbs_COMPOUND; - for(; aType <= TopAbs_VERTEX; aType = TopAbs_ShapeEnum((int)aType + 1)) { - TopExp_Explorer anExp(aShape, aType); + GeomAPI_Shape::ShapeType aType = GeomAPI_Shape::COMPOUND; + for (; aType <= GeomAPI_Shape::VERTEX; aType = GeomAPI_Shape::ShapeType((int)aType + 1)) { + GeomAPI_ShapeExplorer anExp(theShape, aType); int aCount = 0; - for(; anExp.More(); anExp.Next()) aCount++; - TopAbs::Print(aType, aResult); - aResult<<": "<shapeTypeStr().c_str() << ": " << aCount << std::endl; } // output the main characteristics double aVolume = GeomAlgoAPI_ShapeTools::volume(theShape); diff --git a/src/ModelHighAPI/ModelHighAPI_Services.cpp b/src/ModelHighAPI/ModelHighAPI_Services.cpp index 15fa5659a..3d993de00 100644 --- a/src/ModelHighAPI/ModelHighAPI_Services.cpp +++ b/src/ModelHighAPI/ModelHighAPI_Services.cpp @@ -26,8 +26,6 @@ #include #include -#include - #include #include @@ -108,9 +106,8 @@ void begin() aNbTransactions = aNbUndo; ++aTransactionID; } - static std::string anOperationPrefix(ModuleBase_Tools::translate("", "Operation").toStdString()); std::ostringstream aTransactionName; - aTransactionName << anOperationPrefix << "_" << aTransactionID; + aTransactionName << "Operation_" << aTransactionID; ModelAPI_Session::get()->startOperation(aTransactionName.str()); } diff --git a/src/SketchPlugin/CMakeLists.txt b/src/SketchPlugin/CMakeLists.txt index 8b6bee801..d47bc5988 100644 --- a/src/SketchPlugin/CMakeLists.txt +++ b/src/SketchPlugin/CMakeLists.txt @@ -177,7 +177,6 @@ INCLUDE_DIRECTORIES( ../GeomAlgoAPI ../GeomDataAPI ../SketcherPrs - ${OpenCASCADE_INCLUDE_DIR} ) INSTALL(TARGETS SketchPlugin DESTINATION ${SHAPER_INSTALL_PLUGIN_FILES}) diff --git a/src/XGUI/CMakeLists.txt b/src/XGUI/CMakeLists.txt index 97b01c217..0c3241e52 100644 --- a/src/XGUI/CMakeLists.txt +++ b/src/XGUI/CMakeLists.txt @@ -204,6 +204,7 @@ SET(PROJECT_INCLUDES ${PROJECT_SOURCE_DIR}/src/GeomAPI ${PROJECT_SOURCE_DIR}/src/ModuleBase ${PROJECT_SOURCE_DIR}/src/GeomAlgoAPI + ${PROJECT_SOURCE_DIR}/src/Model ${OpenCASCADE_INCLUDE_DIR} ${SUIT_INCLUDE}) diff --git a/src/XGUI/XGUI_Workshop.cpp b/src/XGUI/XGUI_Workshop.cpp index febea937b..67a525988 100644 --- a/src/XGUI/XGUI_Workshop.cpp +++ b/src/XGUI/XGUI_Workshop.cpp @@ -158,6 +158,7 @@ #include #ifdef TINSPECTOR +#include #include #include #include @@ -1860,7 +1861,10 @@ void XGUI_Workshop::onContextMenuCommand(const QString& theId, bool isChecked) } #ifdef TINSPECTOR else if (theId == "TINSPECTOR_VIEW") { - Handle(TDocStd_Application) anApplication = ModelAPI_Session::get()->application(); + std::shared_ptr aSession = + std::dynamic_pointer_cast(ModelAPI_Session::get()); + + Handle(TDocStd_Application) anApplication = aSession->application(); if (!anApplication.IsNull()) { if (!MyTCommunicator) -- 2.39.2