/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #include "OdaCommon.h" #include "daiModule.h" #include "daiRepository.h" #include "daiModel.h" #include "daiHeaderSection.h" #include "daiSchema.h" #include "daiUtils/daiUtils.h" #include "ExStepHostAppServices.h" #include "ExStepTutorial_05.h" #include "ExStepTutorialBase.h" #include "Common/examples/daiSimpleProgramOptions.h" StepTutorial::ExecutionResult Tutorial_05(const ExStepServices&, const std::vector& params, std::ostream& ouputStream) { OdDAI::utils::argv_parser tutorialArgsParser("Tutorial_05"); if (tutorialArgsParser.parse(params, ouputStream) == OdDAI::utils::ParseResult::showHelp) { return StepTutorial::ExecutionResult::eShowHelp; } OdDAI::SessionPtr session = oddaiCreateSession(); OdAnsiString workDir = StepTutorial::WorkDir::getPath() + "Schemas/"; OdDAI::SchemaPtr scmAP214E3 = oddaiGetSchema(workDir + "AP214E3_2010.exp"); if (!scmAP214E3.isNull()) { OdDAI::RepositoryPtr repo = session->createRepo("TUTORIAL_05_Repo"); session->openRepo(repo); OdDAI::ModelPtr tutorialModel = repo->createModel("Tutorial_05_Model", scmAP214E3); { //creating header section OdDAI::OdHeaderSectionPtr header = repo->getHeaderSection(); //filling in the description OdDAI::ApplicationInstancePtr pDesc = header->getEntityByType(OdDAI::OdHeaderEntityType::kFileDescription); OdAnsiStringArray description; description.append("STEP AP214"); pDesc->putAttr("description", description); //filling in name info OdDAI::ApplicationInstancePtr pFileName = header->getEntityByType(OdDAI::OdHeaderEntityType::kFileName); OdAnsiString name("tmp0.step"); pFileName->putAttr("name", name); OdAnsiString timeStamp("2022-01-12T09:08:49"); pFileName->putAttr("time_stamp", timeStamp); OdAnsiStringArray author; author.append(" "); pFileName->putAttr("author", author); OdAnsiString originatingSystem(" "); pFileName->putAttr("originating_system", originatingSystem); OdAnsiString authorization(" "); pFileName->putAttr("authorization", authorization); } { //creating model section if (!tutorialModel.isNull()) { tutorialModel->promoteModelToReadWrite(); OdDAI::Aggr* aggr = nullptr; OdDAI::ApplicationInstancePtr inst_1 = tutorialModel->createEntityInstance("mechanical_design_geometric_presentation_representation"); tutorialModel->appendEntityInstance(inst_1); inst_1->putAttr("name", (OdAnsiString)""); OdDAI::ApplicationInstancePtr inst_2 = tutorialModel->createEntityInstance("product_definition_context"); OdDAIObjectId id_inst_2 = tutorialModel->appendEntityInstance(inst_2); inst_2->putAttr("name", (OdAnsiString)""); inst_2->putAttr("life_cycle_stage", (OdAnsiString)"design"); OdDAI::ApplicationInstancePtr inst_3 = tutorialModel->createEntityInstance("application_protocol_definition"); tutorialModel->appendEntityInstance(inst_3); inst_3->putAttr("status", (OdAnsiString)"INTERNATIONAL STANDARD"); inst_3->putAttr("application_interpreted_model_schema_name", (OdAnsiString)"automotive_design"); inst_3->putAttr("application_protocol_year", 1994); OdDAI::ApplicationInstancePtr inst_4 = tutorialModel->createEntityInstance("product_category_relationship"); tutorialModel->appendEntityInstance(inst_4); inst_4->putAttr("name", (OdAnsiString)"NONE"); inst_4->putAttr("description", (OdAnsiString)"NONE"); OdDAI::ApplicationInstancePtr inst_5 = tutorialModel->createEntityInstance("shape_definition_representation"); tutorialModel->appendEntityInstance(inst_5); OdDAI::EntityPtr geom_rep_context = scmAP214E3->find("geometric_representation_context"); OdDAI::EntityPtr global_unsert_assigned_context = scmAP214E3->find("global_uncertainty_assigned_context"); OdDAI::EntityPtr global_unit_assigned_context = scmAP214E3->find("global_unit_assigned_context"); OdDAI::EntityPtr representation_context = scmAP214E3->find("representation_context"); OdDAI::List ent_6; ent_6.createEmpty(); ent_6.addByIndex(0, geom_rep_context); ent_6.addByIndex(1, global_unsert_assigned_context); ent_6.addByIndex(2, global_unit_assigned_context); ent_6.addByIndex(3, representation_context); OdDAI::EntityPtr complexEntity_Units = scmAP214E3->getComplexEntity(ent_6); OdDAI::ApplicationInstancePtr inst_6 = tutorialModel->createEntityInstance(complexEntity_Units); OdDAIObjectId id_inst_6 = tutorialModel->appendEntityInstance(inst_6); inst_6->putAttr("coordinate_space_dimension", 3); inst_6->putAttr("context_identifier", (OdAnsiString)"NONE"); inst_6->putAttr("context_type", (OdAnsiString)"WORKSPACE"); inst_1->putAttr("context_of_items", id_inst_6); OdDAI::ApplicationInstancePtr inst_7 = tutorialModel->createEntityInstance("styled_item"); OdDAIObjectId id_inst_7 = tutorialModel->appendEntityInstance(inst_7); inst_7->putAttr("name", (OdAnsiString)""); OdDAI::ApplicationInstancePtr inst_8 = tutorialModel->createEntityInstance("styled_item"); OdDAIObjectId id_inst_8 = tutorialModel->appendEntityInstance(inst_8); inst_8->putAttr("name", (OdAnsiString)""); OdDAI::ApplicationInstancePtr inst_9 = tutorialModel->createEntityInstance("styled_item"); OdDAIObjectId id_inst_9 = tutorialModel->appendEntityInstance(inst_9); inst_9->putAttr("name", (OdAnsiString)""); OdDAI::ApplicationInstancePtr inst_10 = tutorialModel->createEntityInstance("styled_item"); OdDAIObjectId id_inst_10 = tutorialModel->appendEntityInstance(inst_10); inst_10->putAttr("name", (OdAnsiString)""); OdDAI::Set * set1; inst_1->getAttr("items") >> set1; set1->createEmpty(); set1->Add(id_inst_7); set1->Add(id_inst_8); set1->Add(id_inst_9); set1->Add(id_inst_10); OdDAI::ApplicationInstancePtr inst_11 = tutorialModel->createEntityInstance("application_context"); OdDAIObjectId id_inst_11 = tutorialModel->appendEntityInstance(inst_11); inst_11->putAttr("application", (OdAnsiString)""); inst_2->putAttr("frame_of_reference", id_inst_11); inst_3->putAttr("application", id_inst_11); OdDAI::ApplicationInstancePtr inst_12 = tutorialModel->createEntityInstance("product_category"); OdDAIObjectId id_inst_12 = tutorialModel->appendEntityInstance(inst_12); inst_12->putAttr("name", (OdAnsiString)"part"); inst_12->putAttr("description", (OdAnsiString)"NONE"); inst_4->putAttr("category", id_inst_12); OdDAI::ApplicationInstancePtr inst_13 = tutorialModel->createEntityInstance("product_related_product_category"); OdDAIObjectId id_inst_13 = tutorialModel->appendEntityInstance(inst_13); inst_13->putAttr("name", (OdAnsiString)"detail"); inst_13->putAttr("description", (OdAnsiString)" "); inst_4->putAttr("sub_category", id_inst_13); OdDAI::ApplicationInstancePtr inst_14 = tutorialModel->createEntityInstance("product_definition_shape"); OdDAIObjectId id_inst_14 = tutorialModel->appendEntityInstance(inst_14); inst_14->putAttr("name", (OdAnsiString)"NONE"); inst_14->putAttr("description", (OdAnsiString)"NONE"); inst_5->putAttr("definition", id_inst_14); OdDAI::ApplicationInstancePtr inst_15 = tutorialModel->createEntityInstance("advanced_brep_shape_representation"); OdDAIObjectId id_inst_15 = tutorialModel->appendEntityInstance(inst_15); inst_15->putAttr("name", (OdAnsiString)"1"); inst_15->putAttr("context_of_items", id_inst_6); inst_5->putAttr("used_representation", id_inst_15); OdDAI::ApplicationInstancePtr inst_16 = tutorialModel->createEntityInstance("uncertainty_measure_with_unit"); OdDAIObjectId id_inst_16 = tutorialModel->appendEntityInstance(inst_16); inst_16->putAttr("name", (OdAnsiString)""); inst_16->putAttr("description", (OdAnsiString)""); OdDAI::Select* value_component; inst_16->getAttr("value_component") >> value_component; if (value_component->underlyingTypeName("length_measure")) value_component->setDouble(3.93700787401575E-008); OdDAI::Set * set6; inst_6->getAttr("uncertainty") >> set6; set6->createEmpty(); set6->Add(id_inst_16); OdDAI::EntityPtr ent_named_unit = scmAP214E3->find("named_unit"); OdDAI::EntityPtr ent_conversion_based_unit = scmAP214E3->find("conversion_based_unit"); OdDAI::EntityPtr ent_length_unit = scmAP214E3->find("length_unit"); OdDAI::EntityPtr ent_si_unit = scmAP214E3->find("si_unit"); OdDAI::EntityPtr ent_plane_angle_unit = scmAP214E3->find("plane_angle_unit"); OdDAI::EntityPtr ent_solid_angle_unit = scmAP214E3->find("solid_angle_unit"); OdDAI::List ent_17; ent_17.createEmpty(); ent_17.addByIndex(0, ent_conversion_based_unit); ent_17.addByIndex(1, ent_length_unit); ent_17.addByIndex(2, ent_named_unit); OdDAI::EntityPtr complexEntity_17 = scmAP214E3->getComplexEntity(ent_17); OdDAI::ApplicationInstancePtr inst_17 = tutorialModel->createEntityInstance(complexEntity_17); OdDAIObjectId id_inst_17 = tutorialModel->appendEntityInstance(inst_17); inst_17->putAttr("name", (OdAnsiString)"INCH"); inst_16->putAttr("unit_component", id_inst_17); OdDAI::List ent_18; ent_18.createEmpty(); ent_18.addByIndex(0, ent_named_unit); ent_18.addByIndex(1, ent_plane_angle_unit); ent_18.addByIndex(2, ent_si_unit); OdDAI::EntityPtr complexEntity_18 = scmAP214E3->getComplexEntity(ent_18); OdDAI::ApplicationInstancePtr inst_18 = tutorialModel->createEntityInstance(complexEntity_18); OdDAIObjectId id_inst_18 = tutorialModel->appendEntityInstance(inst_18); inst_18->putAttr("name", (OdAnsiString)"RADIAN"); OdDAI::List ent_19; ent_19.createEmpty(); ent_19.addByIndex(0, ent_named_unit); ent_19.addByIndex(1, ent_solid_angle_unit); ent_19.addByIndex(2, ent_si_unit); OdDAI::EntityPtr complexEntity_19 = scmAP214E3->getComplexEntity(ent_19); OdDAI::ApplicationInstancePtr inst_19 = tutorialModel->createEntityInstance(complexEntity_19); OdDAIObjectId id_inst_19 = tutorialModel->appendEntityInstance(inst_19); inst_19->putAttr("name", (OdAnsiString)"STERADIAN"); OdDAI::Set * set_6; inst_6->getAttr("units") >> set_6; set_6->createEmpty(); set_6->Add(OdRxValue(id_inst_17)); set_6->Add(OdRxValue(id_inst_18)); set_6->Add(OdRxValue(id_inst_19)); OdDAI::ApplicationInstancePtr inst_20 = tutorialModel->createEntityInstance("presentation_style_assignment"); OdDAIObjectId id_inst_20 = tutorialModel->appendEntityInstance(inst_20); OdDAI::Set * set7; inst_7->getAttr("styles") >> set7; set7->createEmpty(); set7->Add(id_inst_20); OdDAI::ApplicationInstancePtr inst_21 = tutorialModel->createEntityInstance("advanced_face"); OdDAIObjectId id_inst_21 = tutorialModel->appendEntityInstance(inst_21); inst_21->putAttr("name", (OdAnsiString)""); inst_21->putAttr("same_sense", true); inst_7->putAttr("item", id_inst_21); OdDAI::ApplicationInstancePtr inst_22 = tutorialModel->createEntityInstance("presentation_style_assignment"); OdDAIObjectId id_inst_22 = tutorialModel->appendEntityInstance(inst_22); OdDAI::Set * set8; inst_8->getAttr("styles") >> set8; set8->createEmpty(); set8->Add(id_inst_22); OdDAI::ApplicationInstancePtr inst_23 = tutorialModel->createEntityInstance("advanced_face"); OdDAIObjectId id_inst_23 = tutorialModel->appendEntityInstance(inst_23); inst_23->putAttr("name", (OdAnsiString)""); inst_23->putAttr("same_sense", true); inst_8->putAttr("item", id_inst_23); OdDAI::ApplicationInstancePtr inst_24 = tutorialModel->createEntityInstance("presentation_style_assignment"); OdDAIObjectId id_inst_24 = tutorialModel->appendEntityInstance(inst_24); OdDAI::Set * set9; inst_9->getAttr("styles") >> set9; set9->createEmpty(); set9->Add(id_inst_24); OdDAI::ApplicationInstancePtr inst_25 = tutorialModel->createEntityInstance("advanced_face"); OdDAIObjectId id_inst_25 = tutorialModel->appendEntityInstance(inst_25); inst_25->putAttr("name", (OdAnsiString)""); inst_25->putAttr("same_sense", true); inst_9->putAttr("item", id_inst_25); OdDAI::ApplicationInstancePtr inst_26 = tutorialModel->createEntityInstance("presentation_style_assignment"); OdDAIObjectId id_inst_26 = tutorialModel->appendEntityInstance(inst_26); OdDAI::Set * set10; inst_10->getAttr("styles") >> set10; set10->createEmpty(); set10->Add(id_inst_24); OdDAI::ApplicationInstancePtr inst_27 = tutorialModel->createEntityInstance("manifold_solid_brep"); OdDAIObjectId id_inst_27 = tutorialModel->appendEntityInstance(inst_27); inst_27->putAttr("name", (OdAnsiString)"1"); inst_10->putAttr("item", id_inst_27); OdDAI::ApplicationInstancePtr inst_28 = tutorialModel->createEntityInstance("product"); OdDAIObjectId id_inst_28 = tutorialModel->appendEntityInstance(inst_28); inst_28->putAttr("id", 1); inst_28->putAttr("description", (OdAnsiString)"PART--DESC"); inst_28->putAttr("name", (OdAnsiString)","); OdDAI::Set * set13; inst_13->getAttr("products") >> set13; set13->createEmpty(); set13->Add(id_inst_28); OdDAI::ApplicationInstancePtr inst_29 = tutorialModel->createEntityInstance("product_definition"); OdDAIObjectId id_inst_29 = tutorialModel->appendEntityInstance(inst_29); inst_29->putAttr("id", (OdAnsiString)""); inst_29->putAttr("description", (OdAnsiString)"NONE"); inst_29->putAttr("frame_of_reference", id_inst_2); inst_14->putAttr("definition", id_inst_29); OdDAI::ApplicationInstancePtr inst_30 = tutorialModel->createEntityInstance("axis2_placement_3d"); OdDAIObjectId id_inst_30 = tutorialModel->appendEntityInstance(inst_30); inst_30->putAttr("name", (OdAnsiString)""); OdDAI::Set * set15; inst_15->getAttr("items") >> set15; set15->createEmpty(); set15->Add(id_inst_27); set15->Add(id_inst_30); OdDAI::ApplicationInstancePtr inst_31 = tutorialModel->createEntityInstance("length_measure_with_unit"); OdDAIObjectId id_inst_31 = tutorialModel->appendEntityInstance(inst_31); OdDAI::Select* value_component_31; inst_31->getAttr("value_component") >> value_component_31; if (value_component_31->underlyingTypeName("length_measure")) value_component_31->setDouble(25.4); inst_17->putAttr("conversion_factor", id_inst_31); OdDAIObjectId id_inst_32 = createDimmExponents(tutorialModel, 1., 0., 0., 0., 0., 0., 0.); inst_17->putAttr("dimensions", id_inst_32); OdDAIObjectId id_inst_33 = createDimmExponents(tutorialModel, 0., 0., 0., 0., 0., 0., 0.); OdDAI::ApplicationInstancePtr inst_34 = tutorialModel->createEntityInstance("surface_style_usage"); OdDAIObjectId id_inst_34 = tutorialModel->appendEntityInstance(inst_34); inst_34->putAttr("side", (OdAnsiString)"BOTH"); OdDAI::Set * set20; inst_20->getAttr("styles") >> set20; set20->createEmpty(); set20->Add(OdRxValue(id_inst_34)); OdDAI::ApplicationInstancePtr inst_35 = tutorialModel->createEntityInstance("face_outer_bound"); OdDAIObjectId id_inst_35 = tutorialModel->appendEntityInstance(inst_35); inst_35->putAttr("name", (OdAnsiString)""); inst_35->putAttr("orientation", true); OdDAI::Set * set21; inst_21->getAttr("bounds") >> set21; set21->createEmpty(); set21->Add(id_inst_35); OdDAI::ApplicationInstancePtr inst_36 = tutorialModel->createEntityInstance("conical_surface"); OdDAIObjectId id_inst_36 = tutorialModel->appendEntityInstance(inst_36); inst_36->putAttr("name", (OdAnsiString)""); inst_36->putAttr("semi_angle", 0.165148677414627); inst_36->putAttr("radius", 0.5); inst_21->putAttr("face_geometry", id_inst_36); OdDAI::ApplicationInstancePtr inst_37 = tutorialModel->createEntityInstance("surface_style_usage"); OdDAIObjectId id_inst_37 = tutorialModel->appendEntityInstance(inst_37); inst_37->putAttr("side", (OdAnsiString)"BOTH"); OdDAI::Set * set22; inst_22->getAttr("styles") >> set22; set22->createEmpty(); set22->Add(OdRxValue(id_inst_37)); OdDAI::ApplicationInstancePtr inst_38 = tutorialModel->createEntityInstance("face_outer_bound"); OdDAIObjectId id_inst_38 = tutorialModel->appendEntityInstance(inst_38); inst_38->putAttr("name", (OdAnsiString)""); inst_38->putAttr("orientation", true); OdDAI::Set * set23; inst_23->getAttr("bounds") >> set23; set23->createEmpty(); set23->Add(id_inst_38); OdDAI::ApplicationInstancePtr inst_39 = tutorialModel->createEntityInstance("plane"); OdDAIObjectId id_inst_39 = tutorialModel->appendEntityInstance(inst_39); inst_39->putAttr("name", (OdAnsiString)""); inst_23->putAttr("face_geometry", id_inst_39); OdDAI::ApplicationInstancePtr inst_40 = tutorialModel->createEntityInstance("surface_style_usage"); OdDAIObjectId id_inst_40 = tutorialModel->appendEntityInstance(inst_40); inst_40->putAttr("side", (OdAnsiString)"BOTH"); OdDAI::Set * set24; inst_24->getAttr("styles") >> set24; set24->createEmpty(); set24->Add(OdRxValue(id_inst_40)); OdDAI::ApplicationInstancePtr inst_41 = tutorialModel->createEntityInstance("face_outer_bound"); OdDAIObjectId id_inst_41 = tutorialModel->appendEntityInstance(inst_41); inst_41->putAttr("name", (OdAnsiString)""); inst_41->putAttr("orientation", true); OdDAI::Set * set25; inst_25->getAttr("bounds") >> set25; set25->createEmpty(); set25->Add(id_inst_41); OdDAI::ApplicationInstancePtr inst_42 = tutorialModel->createEntityInstance("conical_surface"); OdDAIObjectId id_inst_42 = tutorialModel->appendEntityInstance(inst_42); inst_42->putAttr("name", (OdAnsiString)""); inst_42->putAttr("semi_angle", 0.165148677414627); inst_42->putAttr("radius", 0.5); inst_25->putAttr("face_geometry", id_inst_42); OdDAI::ApplicationInstancePtr inst_43 = tutorialModel->createEntityInstance("surface_style_usage"); OdDAIObjectId id_inst_43 = tutorialModel->appendEntityInstance(inst_43); inst_43->putAttr("side", (OdAnsiString)"BOTH"); OdDAI::Set * set26; inst_26->getAttr("styles") >> set26; set26->createEmpty(); set26->Add(OdRxValue(id_inst_43)); OdDAI::ApplicationInstancePtr inst_44 = tutorialModel->createEntityInstance("closed_shell"); OdDAIObjectId id_inst_44 = tutorialModel->appendEntityInstance(inst_44); inst_44->putAttr("name", (OdAnsiString)""); OdDAI::Set * set44; inst_44->getAttr("cfs_faces") >> set44; set44->createEmpty(); set44->Add(id_inst_21); set44->Add(id_inst_23); set44->Add(id_inst_25); inst_27->putAttr("outer", id_inst_44); OdDAI::ApplicationInstancePtr inst_45 = tutorialModel->createEntityInstance("product_context"); OdDAIObjectId id_inst_45 = tutorialModel->appendEntityInstance(inst_45); inst_45->putAttr("name", (OdAnsiString)""); inst_45->putAttr("discipline_type", (OdAnsiString)"mechanical"); inst_45->putAttr("frame_of_reference", id_inst_11); OdDAI::Set * set28; inst_28->getAttr("frame_of_reference") >> set28; set28->createEmpty(); set28->Add(id_inst_45); OdDAI::ApplicationInstancePtr inst_46 = tutorialModel->createEntityInstance("product_definition_formation_with_specified_source"); OdDAIObjectId id_inst_46 = tutorialModel->appendEntityInstance(inst_46); inst_46->putAttr("id", (OdAnsiString)""); inst_46->putAttr("description", (OdAnsiString)"NONE"); inst_46->putAttr("of_product", id_inst_28); inst_46->putAttr("make_or_buy", (OdAnsiString)"NOT_KNOWN"); inst_29->putAttr("formation", id_inst_46); OdDAIObjectId id_inst_47 = createCartesianPoint(tutorialModel, (OdAnsiString)"", 0., 0., 0.); inst_30->putAttr("location", id_inst_47); OdDAIObjectId id_inst_48 = createDirection(tutorialModel, (OdAnsiString)"", 0., 0., 1.); inst_30->putAttr("axis", id_inst_48); OdDAIObjectId id_inst_49 = createDirection(tutorialModel, (OdAnsiString)"", 1., 0., 0.); inst_30->putAttr("ref_direction", id_inst_49); OdDAI::List ent_50; ent_50.createEmpty(); ent_50.addByIndex(0, ent_named_unit); ent_50.addByIndex(1, ent_length_unit); ent_50.addByIndex(2, ent_si_unit); OdDAI::EntityPtr complexEntity_50 = scmAP214E3->getComplexEntity(ent_50); OdDAI::ApplicationInstancePtr inst_50 = tutorialModel->createEntityInstance(complexEntity_50); OdDAIObjectId id_inst_50 = tutorialModel->appendEntityInstance(inst_50); inst_50->putAttr("prefix", (OdAnsiString)"MILLI"); inst_50->putAttr("name", (OdAnsiString)"METRE"); inst_31->putAttr("unit_component", id_inst_50); OdDAI::ApplicationInstancePtr inst_51 = tutorialModel->createEntityInstance("surface_side_style"); OdDAIObjectId id_inst_51 = tutorialModel->appendEntityInstance(inst_51); inst_51->putAttr("name", (OdAnsiString)""); inst_34->putAttr("style", id_inst_51); OdDAI::ApplicationInstancePtr inst_52 = tutorialModel->createEntityInstance("edge_loop"); OdDAIObjectId id_inst_52 = tutorialModel->appendEntityInstance(inst_52); inst_52->putAttr("name", (OdAnsiString)""); inst_35->putAttr("bound", id_inst_52); OdDAI::ApplicationInstancePtr inst_53 = tutorialModel->createEntityInstance("axis2_placement_3d"); OdDAIObjectId id_inst_53 = tutorialModel->appendEntityInstance(inst_53); inst_53->putAttr("name", (OdAnsiString)""); inst_36->putAttr("position", id_inst_53); OdDAI::ApplicationInstancePtr inst_54 = tutorialModel->createEntityInstance("surface_side_style"); OdDAIObjectId id_inst_54 = tutorialModel->appendEntityInstance(inst_54); inst_54->putAttr("name", (OdAnsiString)""); inst_37->putAttr("style", id_inst_54); OdDAI::ApplicationInstancePtr inst_55 = tutorialModel->createEntityInstance("edge_loop"); OdDAIObjectId id_inst_55 = tutorialModel->appendEntityInstance(inst_55); inst_55->putAttr("name", (OdAnsiString)""); inst_38->putAttr("bound", id_inst_55); OdDAI::ApplicationInstancePtr inst_56 = tutorialModel->createEntityInstance("axis2_placement_3d"); OdDAIObjectId id_inst_56 = tutorialModel->appendEntityInstance(inst_56); inst_56->putAttr("name", (OdAnsiString)""); inst_39->putAttr("position", id_inst_56); OdDAI::ApplicationInstancePtr inst_57 = tutorialModel->createEntityInstance("surface_side_style"); OdDAIObjectId id_inst_57 = tutorialModel->appendEntityInstance(inst_57); inst_57->putAttr("name", (OdAnsiString)""); inst_40->putAttr("style", id_inst_57); OdDAI::ApplicationInstancePtr inst_58 = tutorialModel->createEntityInstance("edge_loop"); OdDAIObjectId id_inst_58 = tutorialModel->appendEntityInstance(inst_58); inst_58->putAttr("name", (OdAnsiString)""); inst_41->putAttr("bound", id_inst_58); OdDAI::ApplicationInstancePtr inst_59 = tutorialModel->createEntityInstance("axis2_placement_3d"); OdDAIObjectId id_inst_59 = tutorialModel->appendEntityInstance(inst_59); inst_59->putAttr("name", (OdAnsiString)""); inst_42->putAttr("position", id_inst_59); OdDAI::ApplicationInstancePtr inst_60 = tutorialModel->createEntityInstance("surface_side_style"); OdDAIObjectId id_inst_60 = tutorialModel->appendEntityInstance(inst_60); inst_60->putAttr("name", (OdAnsiString)""); inst_43->putAttr("style", id_inst_60); OdDAI::ApplicationInstancePtr inst_61 = tutorialModel->createEntityInstance("surface_style_fill_area"); OdDAIObjectId id_inst_61 = tutorialModel->appendEntityInstance(inst_61); OdDAI::Set * set51; inst_51->getAttr("styles") >> set51; set51->createEmpty(); set51->Add(OdRxValue(id_inst_61)); OdDAI::ApplicationInstancePtr inst_62 = tutorialModel->createEntityInstance("oriented_edge"); OdDAIObjectId id_inst_62 = tutorialModel->appendEntityInstance(inst_62); inst_62->putAttr("name", (OdAnsiString)""); inst_62->putAttr("orientation", false); OdDAI::ApplicationInstancePtr inst_63 = tutorialModel->createEntityInstance("oriented_edge"); OdDAIObjectId id_inst_63 = tutorialModel->appendEntityInstance(inst_63); inst_63->putAttr("name", (OdAnsiString)""); inst_63->putAttr("orientation", false); OdDAI::ApplicationInstancePtr inst_64 = tutorialModel->createEntityInstance("oriented_edge"); OdDAIObjectId id_inst_64 = tutorialModel->appendEntityInstance(inst_64); inst_64->putAttr("name", (OdAnsiString)""); inst_64->putAttr("orientation", true); OdDAI::List * list52; inst_52->getAttr("edge_list") >> list52; list52->createEmpty(); list52->addByIndex(0, id_inst_62); list52->addByIndex(1, id_inst_63); list52->addByIndex(2, id_inst_64); OdDAIObjectId id_inst_65 = createCartesianPoint(tutorialModel, (OdAnsiString)"", 4., 5., 0.); OdDAIObjectId id_inst_66 = createDirection(tutorialModel, (OdAnsiString)"", -0., -0., -1.); OdDAIObjectId id_inst_67 = createDirection(tutorialModel, (OdAnsiString)"", 1., 0., 0.); inst_53->putAttr("location", id_inst_65); inst_53->putAttr("axis", id_inst_66); inst_53->putAttr("ref_direction", id_inst_67); OdDAI::ApplicationInstancePtr inst_68 = tutorialModel->createEntityInstance("surface_style_fill_area"); OdDAIObjectId id_inst_68 = tutorialModel->appendEntityInstance(inst_68); OdDAI::Set * set54; inst_54->getAttr("styles") >> set54; set54->createEmpty(); set54->Add(OdRxValue(id_inst_68)); OdDAI::ApplicationInstancePtr inst_69 = tutorialModel->createEntityInstance("oriented_edge"); OdDAIObjectId id_inst_69 = tutorialModel->appendEntityInstance(inst_69); inst_69->putAttr("name", (OdAnsiString)""); inst_69->putAttr("orientation", false); OdDAI::ApplicationInstancePtr inst_70 = tutorialModel->createEntityInstance("oriented_edge"); OdDAIObjectId id_inst_70 = tutorialModel->appendEntityInstance(inst_70); inst_70->putAttr("name", (OdAnsiString)""); inst_70->putAttr("orientation", false); OdDAI::List * list55; inst_55->getAttr("edge_list") >> list55; list55->createEmpty(); list55->addByIndex(0, id_inst_69); list55->addByIndex(1, id_inst_70); OdDAIObjectId id_inst_71 = createCartesianPoint(tutorialModel, (OdAnsiString)"", 4., 5., 0.); OdDAIObjectId id_inst_72 = createDirection(tutorialModel, (OdAnsiString)"", 0., 0., 1.); OdDAIObjectId id_inst_73 = createDirection(tutorialModel, (OdAnsiString)"", 1., 0., 0.); inst_56->putAttr("location", id_inst_71); inst_56->putAttr("axis", id_inst_72); inst_56->putAttr("ref_direction", id_inst_73); OdDAI::ApplicationInstancePtr inst_74 = tutorialModel->createEntityInstance("surface_style_fill_area"); OdDAIObjectId id_inst_74 = tutorialModel->appendEntityInstance(inst_74); OdDAI::Set * set57; inst_57->getAttr("styles") >> set57; set57->createEmpty(); set57->Add(OdRxValue(id_inst_74)); OdDAI::ApplicationInstancePtr inst_75 = tutorialModel->createEntityInstance("oriented_edge"); OdDAIObjectId id_inst_75 = tutorialModel->appendEntityInstance(inst_75); inst_75->putAttr("name", (OdAnsiString)""); inst_75->putAttr("orientation", true); OdDAI::ApplicationInstancePtr inst_76 = tutorialModel->createEntityInstance("oriented_edge"); OdDAIObjectId id_inst_76 = tutorialModel->appendEntityInstance(inst_76); inst_76->putAttr("name", (OdAnsiString)""); inst_76->putAttr("orientation", true); OdDAI::ApplicationInstancePtr inst_77 = tutorialModel->createEntityInstance("oriented_edge"); OdDAIObjectId id_inst_77 = tutorialModel->appendEntityInstance(inst_77); inst_77->putAttr("name", (OdAnsiString)""); inst_77->putAttr("orientation", true); OdDAI::List * list58; inst_58->getAttr("edge_list") >> list58; list58->createEmpty(); list58->addByIndex(0, id_inst_75); list58->addByIndex(1, id_inst_76); list58->addByIndex(1, id_inst_77); OdDAIObjectId id_inst_78 = createCartesianPoint(tutorialModel, (OdAnsiString)"", 4., 5., 0.); OdDAIObjectId id_inst_79 = createDirection(tutorialModel, (OdAnsiString)"", -0., -0., -1.); OdDAIObjectId id_inst_80 = createDirection(tutorialModel, (OdAnsiString)"", 1., 0., 0.); inst_59->putAttr("location", id_inst_78); inst_59->putAttr("axis", id_inst_79); inst_59->putAttr("ref_direction", id_inst_80); OdDAI::ApplicationInstancePtr inst_81 = tutorialModel->createEntityInstance("surface_style_fill_area"); OdDAIObjectId id_inst_81 = tutorialModel->appendEntityInstance(inst_81); OdDAI::Set * set60; inst_60->getAttr("styles") >> set60; set60->createEmpty(); set60->Add(OdRxValue(id_inst_81)); OdDAI::ApplicationInstancePtr inst_82 = tutorialModel->createEntityInstance("fill_area_style"); OdDAIObjectId id_inst_82 = tutorialModel->appendEntityInstance(inst_82); inst_82->putAttr("name", (OdAnsiString)""); inst_61->putAttr("fill_area", id_inst_82); OdDAI::ApplicationInstancePtr inst_83 = tutorialModel->createEntityInstance("edge_curve"); OdDAIObjectId id_inst_83 = tutorialModel->appendEntityInstance(inst_83); inst_83->putAttr("name", (OdAnsiString)""); inst_83->putAttr("same_sense", true); inst_62->putAttr("edge_element", id_inst_83); inst_75->putAttr("edge_element", id_inst_83); OdDAI::ApplicationInstancePtr inst_84 = tutorialModel->createEntityInstance("edge_curve"); OdDAIObjectId id_inst_84 = tutorialModel->appendEntityInstance(inst_84); inst_84->putAttr("name", (OdAnsiString)""); inst_84->putAttr("same_sense", true); inst_63->putAttr("edge_element", id_inst_84); inst_77->putAttr("edge_element", id_inst_84); OdDAI::ApplicationInstancePtr inst_85 = tutorialModel->createEntityInstance("edge_curve"); OdDAIObjectId id_inst_85 = tutorialModel->appendEntityInstance(inst_85); inst_85->putAttr("name", (OdAnsiString)""); inst_85->putAttr("same_sense", true); inst_64->putAttr("edge_element", id_inst_85); inst_69->putAttr("edge_element", id_inst_85); OdDAI::ApplicationInstancePtr inst_86 = tutorialModel->createEntityInstance("fill_area_style"); OdDAIObjectId id_inst_86 = tutorialModel->appendEntityInstance(inst_86); inst_86->putAttr("name", (OdAnsiString)""); inst_68->putAttr("fill_area", id_inst_86); OdDAI::ApplicationInstancePtr inst_87 = tutorialModel->createEntityInstance("edge_curve"); OdDAIObjectId id_inst_87 = tutorialModel->appendEntityInstance(inst_87); inst_87->putAttr("name", (OdAnsiString)""); inst_87->putAttr("same_sense", true); inst_70->putAttr("edge_element", id_inst_87); inst_76->putAttr("edge_element", id_inst_87); OdDAI::ApplicationInstancePtr inst_88 = tutorialModel->createEntityInstance("fill_area_style"); OdDAIObjectId id_inst_88 = tutorialModel->appendEntityInstance(inst_88); inst_88->putAttr("name", (OdAnsiString)""); inst_74->putAttr("fill_area", id_inst_88); OdDAI::ApplicationInstancePtr inst_89 = tutorialModel->createEntityInstance("fill_area_style"); OdDAIObjectId id_inst_89 = tutorialModel->appendEntityInstance(inst_89); inst_89->putAttr("name", (OdAnsiString)""); inst_81->putAttr("fill_area", id_inst_89); OdDAI::ApplicationInstancePtr inst_90 = tutorialModel->createEntityInstance("fill_area_style_colour"); OdDAIObjectId id_inst_90 = tutorialModel->appendEntityInstance(inst_90); inst_90->putAttr("name", (OdAnsiString)""); OdDAI::Set * set82; inst_82->getAttr("fill_styles") >> set82; set82->createEmpty(); set82->Add(OdRxValue(id_inst_90)); OdDAI::ApplicationInstancePtr inst_91 = tutorialModel->createEntityInstance("vertex_point"); OdDAIObjectId id_inst_91 = tutorialModel->appendEntityInstance(inst_91); inst_91->putAttr("name", (OdAnsiString)""); OdDAI::ApplicationInstancePtr inst_92 = tutorialModel->createEntityInstance("vertex_point"); OdDAIObjectId id_inst_92 = tutorialModel->appendEntityInstance(inst_92); inst_92->putAttr("name", (OdAnsiString)""); OdDAI::ApplicationInstancePtr inst_93 = tutorialModel->createEntityInstance("line"); OdDAIObjectId id_inst_93 = tutorialModel->appendEntityInstance(inst_93); inst_93->putAttr("name", (OdAnsiString)""); inst_83->putAttr("edge_start", id_inst_91); inst_83->putAttr("edge_end", id_inst_92); inst_83->putAttr("edge_geometry", id_inst_93); OdDAI::ApplicationInstancePtr inst_94 = tutorialModel->createEntityInstance("vertex_point"); OdDAIObjectId id_inst_94 = tutorialModel->appendEntityInstance(inst_94); inst_94->putAttr("name", (OdAnsiString)""); OdDAI::ApplicationInstancePtr inst_95 = tutorialModel->createEntityInstance("line"); OdDAIObjectId id_inst_95 = tutorialModel->appendEntityInstance(inst_95); inst_95->putAttr("name", (OdAnsiString)""); inst_84->putAttr("edge_start", id_inst_94); inst_84->putAttr("edge_end", id_inst_91); inst_84->putAttr("edge_geometry", id_inst_95); OdDAI::ApplicationInstancePtr inst_96 = tutorialModel->createEntityInstance("circle"); OdDAIObjectId id_inst_96 = tutorialModel->appendEntityInstance(inst_96); inst_96->putAttr("name", (OdAnsiString)""); inst_96->putAttr("radius", 0.5); inst_85->putAttr("edge_start", id_inst_94); inst_85->putAttr("edge_end", id_inst_92); inst_85->putAttr("edge_geometry", id_inst_96); OdDAI::ApplicationInstancePtr inst_97 = tutorialModel->createEntityInstance("fill_area_style_colour"); OdDAIObjectId id_inst_97 = tutorialModel->appendEntityInstance(inst_97); inst_97->putAttr("name", (OdAnsiString)""); OdDAI::Set * set86; inst_86->getAttr("fill_styles") >> set86; set86->createEmpty(); set86->Add(OdRxValue(id_inst_97)); OdDAI::ApplicationInstancePtr inst_98 = tutorialModel->createEntityInstance("circle"); OdDAIObjectId id_inst_98 = tutorialModel->appendEntityInstance(inst_98); inst_98->putAttr("name", (OdAnsiString)""); inst_98->putAttr("radius", 0.5); inst_87->putAttr("edge_start", id_inst_92); inst_87->putAttr("edge_end", id_inst_94); inst_87->putAttr("edge_geometry", id_inst_98); OdDAI::ApplicationInstancePtr inst_99 = tutorialModel->createEntityInstance("fill_area_style_colour"); OdDAIObjectId id_inst_99 = tutorialModel->appendEntityInstance(inst_99); inst_99->putAttr("name", (OdAnsiString)""); OdDAI::Set * set88; inst_88->getAttr("fill_styles") >> set88; set88->createEmpty(); set88->Add(OdRxValue(id_inst_99)); OdDAI::ApplicationInstancePtr inst_100 = tutorialModel->createEntityInstance("fill_area_style_colour"); OdDAIObjectId id_inst_100 = tutorialModel->appendEntityInstance(inst_100); inst_100->putAttr("name", (OdAnsiString)""); OdDAI::Set * set89; inst_89->getAttr("fill_styles") >> set89; set89->createEmpty(); set89->Add(OdRxValue(id_inst_100)); OdDAIObjectId id_inst_101 = createColorRgb(tutorialModel, (OdAnsiString)"", 0., 0., 0.); inst_90->putAttr("fill_colour", id_inst_101); OdDAIObjectId id_inst_102 = createCartesianPoint(tutorialModel, (OdAnsiString)"", 4., 5., 3.); inst_91->putAttr("vertex_geometry", id_inst_102); OdDAIObjectId id_inst_103 = createCartesianPoint(tutorialModel, (OdAnsiString)"", 3.5, 5., 0.); inst_92->putAttr("vertex_geometry", id_inst_103); OdDAIObjectId id_inst_104 = createCartesianPoint(tutorialModel, (OdAnsiString)"", 3.5, 5., 0.); OdDAI::ApplicationInstancePtr inst_105 = tutorialModel->createEntityInstance("vector"); OdDAIObjectId id_inst_105 = tutorialModel->appendEntityInstance(inst_105); inst_105->putAttr("name", (OdAnsiString)""); inst_105->putAttr("magnitude", 1.0); inst_93->putAttr("pnt", id_inst_104); inst_93->putAttr("dir", id_inst_105); OdDAIObjectId id_inst_106 = createCartesianPoint(tutorialModel, (OdAnsiString)"", 4.5, 5., 0.); inst_94->putAttr("vertex_geometry", id_inst_106); OdDAIObjectId id_inst_107 = createCartesianPoint(tutorialModel, (OdAnsiString)"", 4.5, 5., 0.); OdDAI::ApplicationInstancePtr inst_108 = tutorialModel->createEntityInstance("vector"); OdDAIObjectId id_inst_108 = tutorialModel->appendEntityInstance(inst_108); inst_108->putAttr("name", (OdAnsiString)""); inst_108->putAttr("magnitude", 1.0); inst_95->putAttr("pnt", id_inst_107); inst_95->putAttr("dir", id_inst_108); OdDAI::ApplicationInstancePtr inst_109 = tutorialModel->createEntityInstance("axis2_placement_3d"); OdDAIObjectId id_inst_109 = tutorialModel->appendEntityInstance(inst_109); inst_109->putAttr("name", (OdAnsiString)""); inst_96->putAttr("position", id_inst_109); OdDAIObjectId id_inst_110 = createColorRgb(tutorialModel, (OdAnsiString)"", 0., 0., 0.); inst_97->putAttr("fill_colour", id_inst_110); OdDAI::ApplicationInstancePtr inst_111 = tutorialModel->createEntityInstance("axis2_placement_3d"); OdDAIObjectId id_inst_111 = tutorialModel->appendEntityInstance(inst_111); inst_111->putAttr("name", (OdAnsiString)""); inst_98->putAttr("position", id_inst_111); OdDAIObjectId id_inst_112 = createColorRgb(tutorialModel, (OdAnsiString)"", 0., 0., 0.); inst_99->putAttr("fill_colour", id_inst_112); OdDAIObjectId id_inst_113 = createColorRgb(tutorialModel, (OdAnsiString)"", 0., 0., 0.); inst_100->putAttr("fill_colour", id_inst_113); OdDAIObjectId id_inst_114 = createDirection(tutorialModel, (OdAnsiString)"", -0.164398987305357, -0., -0.986393923832144); inst_105->putAttr("orientation", id_inst_114); OdDAIObjectId id_inst_115 = createDirection(tutorialModel, (OdAnsiString)"", -0.164398987305357, 0., 0.986393923832144); inst_108->putAttr("orientation", id_inst_115); OdDAIObjectId id_inst_116 = createCartesianPoint(tutorialModel, (OdAnsiString)"", 4., 5., 0.); OdDAIObjectId id_inst_117 = createDirection(tutorialModel, (OdAnsiString)"", 0., 0., 1.); OdDAIObjectId id_inst_118 = createDirection(tutorialModel, (OdAnsiString)"", 1., 0., 0.); inst_109->putAttr("location", id_inst_116); inst_109->putAttr("axis", id_inst_117); inst_109->putAttr("ref_direction", id_inst_118); OdDAIObjectId id_inst_119 = createCartesianPoint(tutorialModel, (OdAnsiString)"", 4., 5., 0.); OdDAIObjectId id_inst_120 = createDirection(tutorialModel, (OdAnsiString)"", 0., 0., 1.); OdDAIObjectId id_inst_121 = createDirection(tutorialModel, (OdAnsiString)"", 1., 0., 0.); inst_111->putAttr("location", id_inst_119); inst_111->putAttr("axis", id_inst_120); inst_111->putAttr("ref_direction", id_inst_121); OdDAI::ApplicationInstancePtr inst_122 = tutorialModel->createEntityInstance("presentation_layer_assignment"); OdDAIObjectId id_inst_122 = tutorialModel->appendEntityInstance(inst_122); inst_122->putAttr("name", (OdAnsiString)"0"); inst_122->putAttr("description", (OdAnsiString)"0"); OdDAI::Set * set140; inst_122->getAttr("assigned_items") >> set140; set140->createEmpty(); set140->Add(OdRxValue(id_inst_27)); } if (repo->writeFile(workDir + "Tutorial_05.stp") == eOk) { OdDAI::RepositoryPtr repoLoaded = session->createRepoFromFile(workDir + "Tutorial_05.stp"); OdDAI::ModelPtr loadedModel = repoLoaded->getModel(); const OdDAI::SetOfOdDAIObjectId* representation_contexts = loadedModel->getEntityExtent("representation_context"); auto it = representation_contexts->createConstIterator(); for (it->beginning(); it->next();) { OdDAIObjectId id; it->getCurrentMember() >> id; if (id.isValid()) { OdDAI::ApplicationInstancePtr representation_context = id.openObject(); OdAnsiString stepLine(OdDAI::Utils::getStepLine(representation_context)); odPrintConsoleString(L"\n%hs", stepLine.c_str()); } } repoLoaded->writeFile(workDir + "Tutorial_05_fixed.stp"); } session->closeRepo(repo); odPrintConsoleString(L"\n"); oddaiCloseCurrentSession(); return StepTutorial::ExecutionResult::eSucceed; } } return StepTutorial::ExecutionResult::eFailed; }