/////////////////////////////////////////////////////////////////////////////// // 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 "daiRepository.h" #include "daiModel.h" #include "daiHeaderSection.h" #include "ExStepTutorial_04.h" #include "Common/examples/daiSimpleProgramOptions.h" namespace { SdaiInstance tutorial_04_createCartesianPoint(SdaiModel& model, SdaiString name, SdaiReal x, SdaiReal y, SdaiReal z) { SdaiInstance cartesianPoint = sdaiCreateInstanceBN(model, "cartesian_point"); SdaiAggr aggr; sdaiPutAttrBN(cartesianPoint, "name", sdaiSTRING, name); aggr = sdaiCreateAggrBN(cartesianPoint, "coordinates"); sdaiPutAggrByIndex(aggr, 0, sdaiREAL, x); sdaiPutAggrByIndex(aggr, 1, sdaiREAL, y); sdaiPutAggrByIndex(aggr, 2, sdaiREAL, z); return cartesianPoint; } SdaiInstance tutorial_04_createDirection(SdaiModel& model, SdaiString name, SdaiReal x, SdaiReal y, SdaiReal z) { SdaiInstance direction = sdaiCreateInstanceBN(model, "direction"); SdaiAggr aggr; sdaiPutAttrBN(direction, "name", sdaiSTRING, name); aggr = sdaiCreateAggrBN(direction, "direction_ratios"); sdaiPutAggrByIndex(aggr, 0, sdaiREAL, x); sdaiPutAggrByIndex(aggr, 1, sdaiREAL, y); sdaiPutAggrByIndex(aggr, 2, sdaiREAL, z); return direction; } SdaiInstance tutorial_04_createColourRGB(SdaiModel& model, SdaiString name, SdaiReal red, SdaiReal green, SdaiReal blue) { SdaiInstance colourRGB = sdaiCreateInstanceBN(model, "colour_rgb"); sdaiPutAttrBN(colourRGB, "name", sdaiSTRING, name); sdaiPutAttrBN(colourRGB, "red", sdaiREAL, red); sdaiPutAttrBN(colourRGB, "green", sdaiREAL, green); sdaiPutAttrBN(colourRGB, "blue", sdaiREAL, blue); return colourRGB; } } StepTutorial::ExecutionResult Tutorial_04(const ExStepServices&, const std::vector& params, std::ostream& ouputStream) { OdAnsiString filePath = ""; OdDAI::utils::argv_parser tutorialArgsParser("Tutorial_04"); tutorialArgsParser.add_param(std::make_shared>(filePath, "filename", "ouput file path to write to.")); switch (tutorialArgsParser.parse(params, ouputStream)) { case OdDAI::utils::ParseResult::showHelp: { return StepTutorial::ExecutionResult::eShowHelp; } break; case OdDAI::utils::ParseResult::failed: { return StepTutorial::ExecutionResult::eWrongParams; } break; default: break; } SdaiSession session = sdaiOpenSession(); if (session == NULL) { return StepTutorial::ExecutionResult::eFailed; } SdaiRep repo = _sdaiCreateRepository(session, "TUTORIAL_04_Repo"); if (repo == NULL) { return StepTutorial::ExecutionResult::eFailed; } repo = sdaiOpenRepository(session, repo); OdAnsiString workDir = StepTutorial::WorkDir::getPath() + "Schemas/AP214E3_2010.exp"; SdaiString schemaPath = const_cast(workDir.c_str()); // Your path to .exp file SdaiModel model = sdaiCreateModelBN(repo, "Tutorial_04_Model", schemaPath); if (model == NULL) { return StepTutorial::ExecutionResult::eFailed; } sdaiPromoteModel(model); SdaiAggr aggr = NULL; {// header section SdaiInstance headerDescriptionInst = _sdaiHeaderDescription(repo); SdaiString description[] = { "STEP AP214" }; SdaiString implementationLevel = "1"; sdaiGetAttrBN(headerDescriptionInst, "description", sdaiAGGR, &aggr); sdaiPutAggrByIndex(aggr, 0, sdaiSTRING, description[0]); sdaiPutAttrBN(headerDescriptionInst, "implementation_level", sdaiSTRING, implementationLevel); SdaiInstance headerNameInst = _sdaiHeaderName(repo); SdaiString name = "tmp0.step"; SdaiString timeStamp = "2022-01-12T09:39:58"; SdaiString author[] = {" "}; SdaiString organization[] = {" "}; SdaiString preprocessorVersion = "ODA SDAI"; SdaiString originatingSystem = " "; SdaiString authorization = " "; sdaiPutAttrBN(headerNameInst, "name", sdaiSTRING, name); sdaiPutAttrBN(headerNameInst, "time_stamp", sdaiSTRING, timeStamp); sdaiGetAttrBN(headerNameInst, "author", sdaiAGGR, &aggr); sdaiPutAggrByIndex(aggr, 0, sdaiSTRING, author[0]); sdaiGetAttrBN(headerNameInst, "organization", sdaiAGGR, &aggr); sdaiPutAggrByIndex(aggr, 0, sdaiSTRING, organization[0]); sdaiPutAttrBN(headerNameInst, "preprocessor_version", sdaiSTRING, preprocessorVersion); sdaiPutAttrBN(headerNameInst, "originating_system", sdaiSTRING, originatingSystem); sdaiPutAttrBN(headerNameInst, "authorization", sdaiSTRING, authorization); } SdaiInstance inst_1 = sdaiCreateInstanceBN(model, "mechanical_design_geometric_presentation_representation"); sdaiPutAttrBN(inst_1, "name", sdaiSTRING, " "); SdaiInstance inst_2 = sdaiCreateInstanceBN(model, "product_definition_context"); sdaiPutAttrBN(inst_2, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_2, "life_cycle_stage", sdaiSTRING, "design"); SdaiInstance inst_3 = sdaiCreateInstanceBN(model, "application_protocol_definition"); sdaiPutAttrBN(inst_3, "status", sdaiSTRING, "INTERNATIONAL STANDARD"); sdaiPutAttrBN(inst_3, "application_interpreted_model_schema_name", sdaiSTRING, "automotive_design"); sdaiPutAttrBN(inst_3, "application_protocol_year", sdaiINTEGER, 1994); SdaiInstance inst_4 = sdaiCreateInstanceBN(model, "product_category_relationship"); sdaiPutAttrBN(inst_4, "name", sdaiSTRING, "NONE"); sdaiPutAttrBN(inst_4, "description", sdaiSTRING, "NONE"); SdaiInstance inst_5 = sdaiCreateInstanceBN(model, "shape_definition_representation"); SdaiString instance_6_names[] = { "geometric_representation_context", "global_uncertainty_assigned_context", "global_unit_assigned_context", "representation_context" }; SdaiInstance inst_6 = sdaiCreateComplexInstanceBN(model, 4, instance_6_names); sdaiPutAttrBN(inst_6, "coordinate_space_dimension", sdaiINTEGER, 3); sdaiPutAttrBN(inst_6, "context_identifier", sdaiSTRING, "NONE"); sdaiPutAttrBN(inst_6, "context_type", sdaiSTRING, "WORKSPACE"); SdaiInstance inst_10 = sdaiCreateInstanceBN(model, "styled_item"); sdaiPutAttrBN(inst_10, "name", sdaiSTRING, ""); SdaiInstance inst_11 = sdaiCreateInstanceBN(model, "styled_item"); sdaiPutAttrBN(inst_11, "name", sdaiSTRING, ""); SdaiInstance inst_12 = sdaiCreateInstanceBN(model, "styled_item"); sdaiPutAttrBN(inst_12, "name", sdaiSTRING, ""); aggr = sdaiCreateAggrBN(inst_1, "items"); sdaiAdd(aggr, sdaiINSTANCE, inst_10); sdaiAdd(aggr, sdaiINSTANCE, inst_11); sdaiAdd(aggr, sdaiINSTANCE, inst_12); sdaiPutAttrBN(inst_1, "context_of_items", sdaiINSTANCE, inst_6); SdaiInstance inst_13 = sdaiCreateInstanceBN(model, "application_context"); sdaiPutAttrBN(inst_13, "application", sdaiSTRING, " "); sdaiPutAttrBN(inst_2, "frame_of_reference", sdaiINSTANCE, inst_13); sdaiPutAttrBN(inst_3, "application", sdaiINSTANCE, inst_13); SdaiInstance inst_14 = sdaiCreateInstanceBN(model, "product_category"); sdaiPutAttrBN(inst_14, "name", sdaiSTRING, "part"); sdaiPutAttrBN(inst_14, "description", sdaiSTRING, "NONE"); SdaiInstance inst_15 = sdaiCreateInstanceBN(model, "product_related_product_category"); sdaiPutAttrBN(inst_15, "name", sdaiSTRING, "detail"); sdaiPutAttrBN(inst_15, "description", sdaiSTRING, " "); sdaiPutAttrBN(inst_4, "category", sdaiINSTANCE, inst_14); sdaiPutAttrBN(inst_4, "sub_category", sdaiINSTANCE, inst_15); SdaiInstance inst_16 = sdaiCreateInstanceBN(model, "product_definition_shape"); sdaiPutAttrBN(inst_16, "name", sdaiSTRING, "NONE"); sdaiPutAttrBN(inst_16, "description", sdaiSTRING, "NONE"); SdaiInstance inst_17 = sdaiCreateInstanceBN(model, "advanced_brep_shape_representation"); sdaiPutAttrBN(inst_17, "name", sdaiSTRING, "1"); sdaiPutAttrBN(inst_17, "context_of_items", sdaiINSTANCE, inst_6); sdaiPutAttrBN(inst_5, "definition", sdaiINSTANCE, inst_16); sdaiPutAttrBN(inst_5, "used_representation", sdaiINSTANCE, inst_17); SdaiInstance inst_20 = sdaiCreateInstanceBN(model, "uncertainty_measure_with_unit"); SdaiADB valueADB = sdaiCreateADB(sdaiREAL, 1.0E-006); SdaiString typePath_inst20[] = { "length_measure" }; sdaiPutADBTypePath(valueADB, 1, typePath_inst20); sdaiPutAttrBN(inst_20, "value_component", sdaiADB, valueADB); sdaiDeleteADB(valueADB); sdaiPutAttrBN(inst_20, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_20, "description", sdaiSTRING, ""); SdaiString instance_22_names[] = { "conversion_based_unit", "length_unit", "named_unit", }; SdaiInstance inst_22 = sdaiCreateComplexInstanceBN(model, 3, instance_22_names); sdaiPutAttrBN(inst_22, "name", sdaiSTRING, "INCH"); sdaiPutAttrBN(inst_20, "unit_component", sdaiINSTANCE, inst_22); SdaiString instance_23_names[] = { "named_unit", "plane_angle_unit", "si_unit" }; SdaiInstance inst_23 = sdaiCreateComplexInstanceBN(model, 3, instance_23_names); sdaiPutAttrBN(inst_23, "name", sdaiENUM, "RADIAN"); SdaiString instance_24_names[] = { "named_unit", "solid_angle_unit", "si_unit" }; SdaiInstance inst_24 = sdaiCreateComplexInstanceBN(model, 3, instance_24_names); sdaiPutAttrBN(inst_24, "name", sdaiENUM, "STERADIAN"); aggr = sdaiCreateAggrBN(inst_6, "uncertainty"); sdaiAdd(aggr, sdaiINSTANCE, inst_20); aggr = sdaiCreateAggrBN(inst_6, "units"); sdaiAdd(aggr, sdaiINSTANCE, inst_22); sdaiAdd(aggr, sdaiINSTANCE, inst_23); sdaiAdd(aggr, sdaiINSTANCE, inst_24); SdaiInstance inst_26 = sdaiCreateInstanceBN(model, "presentation_style_assignment"); SdaiInstance inst_27 = sdaiCreateInstanceBN(model, "advanced_face"); sdaiPutAttrBN(inst_27, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_27, "same_sense", sdaiBOOLEAN, true); aggr = sdaiCreateAggrBN(inst_10, "styles"); sdaiAdd(aggr, sdaiINSTANCE, inst_26); sdaiPutAttrBN(inst_10, "item", sdaiINSTANCE, inst_27); SdaiInstance inst_28 = sdaiCreateInstanceBN(model, "presentation_style_assignment"); SdaiInstance inst_29 = sdaiCreateInstanceBN(model, "advanced_face"); sdaiPutAttrBN(inst_29, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_29, "same_sense", sdaiBOOLEAN, true); aggr = sdaiCreateAggrBN(inst_11, "styles"); sdaiAdd(aggr, sdaiINSTANCE, inst_28); sdaiPutAttrBN(inst_11, "item", sdaiINSTANCE, inst_29); SdaiInstance inst_30 = sdaiCreateInstanceBN(model, "presentation_style_assignment"); SdaiInstance inst_31 = sdaiCreateInstanceBN(model, "manifold_solid_brep"); sdaiPutAttrBN(inst_31, "name", sdaiSTRING, "1"); aggr = sdaiCreateAggrBN(inst_12, "styles"); sdaiAdd(aggr, sdaiINSTANCE, inst_30); sdaiPutAttrBN(inst_12, "item", sdaiINSTANCE, inst_31); SdaiInstance inst_32 = sdaiCreateInstanceBN(model, "product"); sdaiPutAttrBN(inst_32, "id", sdaiSTRING, "1"); sdaiPutAttrBN(inst_32, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_32, "description", sdaiSTRING, "PART--DESC"); aggr = sdaiCreateAggrBN(inst_15, "products"); sdaiAdd(aggr, sdaiINSTANCE, inst_32); SdaiInstance inst_33 = sdaiCreateInstanceBN(model, "product_definition"); sdaiPutAttrBN(inst_33, "id", sdaiSTRING, ""); sdaiPutAttrBN(inst_33, "description", sdaiSTRING, "NONE"); sdaiPutAttrBN(inst_33, "frame_of_reference", sdaiINSTANCE, inst_2); sdaiPutAttrBN(inst_16, "definition", sdaiINSTANCE, inst_33); SdaiInstance inst_34 = sdaiCreateInstanceBN(model, "axis2_placement_3d"); sdaiPutAttrBN(inst_34, "name", sdaiSTRING, ""); aggr = sdaiCreateAggrBN(inst_17, "items"); sdaiAdd(aggr, sdaiINSTANCE, inst_31); sdaiAdd(aggr, sdaiINSTANCE, inst_34); SdaiInstance inst_37 = sdaiCreateInstanceBN(model, "length_measure_with_unit"); valueADB = sdaiCreateADB(sdaiREAL, 25.4); SdaiString typePath_inst37[] = { "length_measure" }; sdaiPutADBTypePath(valueADB, 1, typePath_inst37); sdaiPutAttrBN(inst_37, "value_component", sdaiADB, valueADB); sdaiDeleteADB(valueADB); sdaiPutAttrBN(inst_22, "conversion_factor", sdaiINSTANCE, inst_37); SdaiInstance inst_40 = sdaiCreateInstanceBN(model, "dimensional_exponents"); sdaiPutAttrBN(inst_40, "length_exponent", sdaiREAL, 1.); sdaiPutAttrBN(inst_40, "mass_exponent", sdaiREAL, 0.); sdaiPutAttrBN(inst_40, "time_exponent", sdaiREAL, 0.); sdaiPutAttrBN(inst_40, "electric_current_exponent", sdaiREAL, 0.); sdaiPutAttrBN(inst_40, "thermodynamic_temperature_exponent", sdaiREAL, 0.); sdaiPutAttrBN(inst_40, "amount_of_substance_exponent", sdaiREAL, 0.); sdaiPutAttrBN(inst_40, "luminous_intensity_exponent", sdaiREAL, 0.); sdaiPutAttrBN(inst_22, "dimensions", sdaiINSTANCE, inst_40); SdaiInstance inst_42 = sdaiCreateInstanceBN(model, "dimensional_exponents"); sdaiPutAttrBN(inst_42, "length_exponent", sdaiREAL, 0.); sdaiPutAttrBN(inst_42, "mass_exponent", sdaiREAL, 0.); sdaiPutAttrBN(inst_42, "time_exponent", sdaiREAL, 0.); sdaiPutAttrBN(inst_42, "electric_current_exponent", sdaiREAL, 0.); sdaiPutAttrBN(inst_42, "thermodynamic_temperature_exponent", sdaiREAL, 0.); sdaiPutAttrBN(inst_42, "amount_of_substance_exponent", sdaiREAL, 0.); sdaiPutAttrBN(inst_42, "luminous_intensity_exponent", sdaiREAL, 0.); //sdaiPutAttrBN(inst_23, "dimensions", sdaiINSTANCE, inst_42); //Should not be assigned because of named_unit.dimensions redeclared by derived si_unit.dimensions //sdaiPutAttrBN(inst_24, "dimensions", sdaiINSTANCE, inst_42); //Should not be assigned because of named_unit.dimensions redeclared by derived si_unit.dimensions SdaiInstance inst_48 = sdaiCreateInstanceBN(model, "surface_style_usage"); sdaiPutAttrBN(inst_48, "side", sdaiENUM, "BOTH"); aggr = sdaiCreateAggrBN(inst_26, "styles"); sdaiAdd(aggr, sdaiINSTANCE, inst_48); SdaiInstance inst_49 = sdaiCreateInstanceBN(model, "face_outer_bound"); sdaiPutAttrBN(inst_49, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_49, "orientation", sdaiBOOLEAN, true); SdaiInstance inst_50 = sdaiCreateInstanceBN(model, "spherical_surface"); sdaiPutAttrBN(inst_50, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_50, "radius", sdaiREAL, 25.4); aggr = sdaiCreateAggrBN(inst_27, "bounds"); sdaiAdd(aggr, sdaiINSTANCE, inst_49); sdaiPutAttrBN(inst_27, "face_geometry", sdaiINSTANCE, inst_50); SdaiInstance inst_51 = sdaiCreateInstanceBN(model, "surface_style_usage"); sdaiPutAttrBN(inst_51, "side", sdaiENUM, "BOTH"); aggr = sdaiCreateAggrBN(inst_28, "styles"); sdaiAdd(aggr, sdaiINSTANCE, inst_51); SdaiInstance inst_52 = sdaiCreateInstanceBN(model, "face_outer_bound"); sdaiPutAttrBN(inst_52, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_52, "orientation", sdaiBOOLEAN, true); SdaiInstance inst_53 = sdaiCreateInstanceBN(model, "spherical_surface"); sdaiPutAttrBN(inst_53, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_53, "radius", sdaiREAL, 25.4); aggr = sdaiCreateAggrBN(inst_29, "bounds"); sdaiAdd(aggr, sdaiINSTANCE, inst_52); sdaiPutAttrBN(inst_29, "face_geometry", sdaiINSTANCE, inst_53); SdaiInstance inst_54 = sdaiCreateInstanceBN(model, "surface_style_usage"); sdaiPutAttrBN(inst_54, "side", sdaiENUM, "BOTH"); aggr = sdaiCreateAggrBN(inst_30, "styles"); sdaiAdd(aggr, sdaiINSTANCE, inst_54); SdaiInstance inst_55 = sdaiCreateInstanceBN(model, "closed_shell"); sdaiPutAttrBN(inst_55, "name", sdaiSTRING, ""); aggr = sdaiCreateAggrBN(inst_55, "cfs_faces"); sdaiAdd(aggr, sdaiINSTANCE, inst_27); sdaiAdd(aggr, sdaiINSTANCE, inst_29); sdaiPutAttrBN(inst_31, "outer", sdaiINSTANCE, inst_55); SdaiInstance inst_56 = sdaiCreateInstanceBN(model, "product_context"); sdaiPutAttrBN(inst_56, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_56, "frame_of_reference", sdaiINSTANCE, inst_13); sdaiPutAttrBN(inst_56, "discipline_type", sdaiSTRING, "mechanical"); aggr = sdaiCreateAggrBN(inst_32, "frame_of_reference"); sdaiAdd(aggr, sdaiINSTANCE, inst_56); SdaiInstance inst_57 = sdaiCreateInstanceBN(model, "product_definition_formation_with_specified_source"); sdaiPutAttrBN(inst_57, "id", sdaiSTRING, ""); sdaiPutAttrBN(inst_57, "description", sdaiSTRING, "NONE"); sdaiPutAttrBN(inst_57, "of_product", sdaiINSTANCE, inst_32); sdaiPutAttrBN(inst_57, "make_or_buy", sdaiENUM, "NOT_KNOWN"); sdaiPutAttrBN(inst_33, "formation", sdaiINSTANCE, inst_57); SdaiInstance inst_58 = tutorial_04_createCartesianPoint(model, "", 0., 0., 0.); SdaiInstance inst_59 = tutorial_04_createDirection(model, "", 0., 0., 1.); SdaiInstance inst_60 = tutorial_04_createDirection(model, "", 1., 0., 0.); sdaiPutAttrBN(inst_34, "location", sdaiINSTANCE, inst_58); sdaiPutAttrBN(inst_34, "axis", sdaiINSTANCE, inst_59); sdaiPutAttrBN(inst_34, "ref_direction", sdaiINSTANCE, inst_60); SdaiString instance_61_names[] = { "named_unit", "length_unit", "si_unit" }; SdaiInstance inst_61 = sdaiCreateComplexInstanceBN(model, 3, instance_61_names); //sdaiPutAttrBN(inst_61, "dimensions", sdaiINSTANCE, inst_40); //Should not be assigned because of named_unit.dimensions redeclared by derived si_unit.dimensions sdaiPutAttrBN(inst_61, "prefix", sdaiENUM, "MILLI"); sdaiPutAttrBN(inst_61, "name", sdaiENUM, "METRE"); sdaiPutAttrBN(inst_37, "unit_component", sdaiINSTANCE, inst_61); SdaiInstance inst_62 = sdaiCreateInstanceBN(model, "surface_side_style"); sdaiPutAttrBN(inst_62, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_48, "style", sdaiINSTANCE, inst_62); SdaiInstance inst_63 = sdaiCreateInstanceBN(model, "edge_loop"); sdaiPutAttrBN(inst_63, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_49, "bound", sdaiINSTANCE, inst_63); SdaiInstance inst_64 = sdaiCreateInstanceBN(model, "axis2_placement_3d"); sdaiPutAttrBN(inst_64, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_50, "position", sdaiINSTANCE, inst_64); SdaiInstance inst_65 = sdaiCreateInstanceBN(model, "surface_side_style"); sdaiPutAttrBN(inst_65, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_51, "style", sdaiINSTANCE, inst_65); SdaiInstance inst_66 = sdaiCreateInstanceBN(model, "edge_loop"); sdaiPutAttrBN(inst_66, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_52, "bound", sdaiINSTANCE, inst_66); SdaiInstance inst_67 = sdaiCreateInstanceBN(model, "axis2_placement_3d"); sdaiPutAttrBN(inst_67, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_53, "position", sdaiINSTANCE, inst_67); SdaiInstance inst_68 = sdaiCreateInstanceBN(model, "surface_side_style"); sdaiPutAttrBN(inst_68, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_54, "style", sdaiINSTANCE, inst_68); SdaiInstance inst_70 = sdaiCreateInstanceBN(model, "surface_style_fill_area"); aggr = sdaiCreateAggrBN(inst_62, "styles"); sdaiAdd(aggr, sdaiINSTANCE, inst_70); SdaiInstance inst_71 = sdaiCreateInstanceBN(model, "oriented_edge"); sdaiPutAttrBN(inst_71, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_71, "orientation", sdaiBOOLEAN, false); SdaiInstance inst_72 = sdaiCreateInstanceBN(model, "oriented_edge"); sdaiPutAttrBN(inst_72, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_72, "orientation", sdaiBOOLEAN, false); aggr = sdaiCreateAggrBN(inst_63, "edge_list"); sdaiPutAggrByIndex(aggr, 0, sdaiINSTANCE, inst_71); sdaiPutAggrByIndex(aggr, 1, sdaiINSTANCE, inst_72); SdaiInstance inst_73 = tutorial_04_createCartesianPoint(model, "", 25.4, 203.2, 0.); SdaiInstance inst_74 = tutorial_04_createDirection(model, "", 0., 0., 1.); SdaiInstance inst_75 = tutorial_04_createDirection(model, "", 1., 0., 0.); sdaiPutAttrBN(inst_64, "location", sdaiINSTANCE, inst_73); sdaiPutAttrBN(inst_64, "axis", sdaiINSTANCE, inst_74); sdaiPutAttrBN(inst_64, "ref_direction", sdaiINSTANCE, inst_75); SdaiInstance inst_76 = sdaiCreateInstanceBN(model, "surface_style_fill_area"); aggr = sdaiCreateAggrBN(inst_65, "styles"); sdaiAdd(aggr, sdaiINSTANCE, inst_76); SdaiInstance inst_77 = sdaiCreateInstanceBN(model, "oriented_edge"); sdaiPutAttrBN(inst_77, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_77, "orientation", sdaiBOOLEAN, true); SdaiInstance inst_78 = sdaiCreateInstanceBN(model, "oriented_edge"); sdaiPutAttrBN(inst_78, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_78, "orientation", sdaiBOOLEAN, true); aggr = sdaiCreateAggrBN(inst_66, "edge_list"); sdaiPutAggrByIndex(aggr, 0, sdaiINSTANCE, inst_77); sdaiPutAggrByIndex(aggr, 1, sdaiINSTANCE, inst_78); SdaiInstance inst_79 = tutorial_04_createCartesianPoint(model, "", 25.4, 203.2, 0.); SdaiInstance inst_80 = tutorial_04_createDirection(model, "", 0., 0., 1.); SdaiInstance inst_81 = tutorial_04_createDirection(model, "", 1., 0., 0.); sdaiPutAttrBN(inst_67, "location", sdaiINSTANCE, inst_79); sdaiPutAttrBN(inst_67, "axis", sdaiINSTANCE, inst_80); sdaiPutAttrBN(inst_67, "ref_direction", sdaiINSTANCE, inst_81); SdaiInstance inst_82 = sdaiCreateInstanceBN(model, "surface_style_fill_area"); aggr = sdaiCreateAggrBN(inst_68, "styles"); sdaiAdd(aggr, sdaiINSTANCE, inst_82); SdaiInstance inst_83 = sdaiCreateInstanceBN(model, "fill_area_style"); sdaiPutAttrBN(inst_83, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_70, "fill_area", sdaiINSTANCE, inst_83); SdaiInstance inst_84 = sdaiCreateInstanceBN(model, "edge_curve"); sdaiPutAttrBN(inst_84, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_84, "same_sense", sdaiBOOLEAN, true); sdaiPutAttrBN(inst_71, "edge_element", sdaiINSTANCE, inst_84); sdaiPutAttrBN(inst_77, "edge_element", sdaiINSTANCE, inst_84); SdaiInstance inst_85 = sdaiCreateInstanceBN(model, "edge_curve"); sdaiPutAttrBN(inst_85, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_85, "same_sense", sdaiBOOLEAN, true); sdaiPutAttrBN(inst_72, "edge_element", sdaiINSTANCE, inst_85); sdaiPutAttrBN(inst_78, "edge_element", sdaiINSTANCE, inst_85); SdaiInstance inst_86 = sdaiCreateInstanceBN(model, "fill_area_style"); sdaiPutAttrBN(inst_86, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_76, "fill_area", sdaiINSTANCE, inst_86); SdaiInstance inst_87 = sdaiCreateInstanceBN(model, "fill_area_style"); sdaiPutAttrBN(inst_87, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_82, "fill_area", sdaiINSTANCE, inst_87); SdaiInstance inst_88 = sdaiCreateInstanceBN(model, "fill_area_style_colour"); sdaiPutAttrBN(inst_88, "name", sdaiSTRING, ""); aggr = sdaiCreateAggrBN(inst_83, "fill_styles"); sdaiAdd(aggr, sdaiINSTANCE, inst_88); SdaiInstance inst_89 = sdaiCreateInstanceBN(model, "vertex_point"); sdaiPutAttrBN(inst_89, "name", sdaiSTRING, ""); SdaiInstance inst_90 = sdaiCreateInstanceBN(model, "vertex_point"); sdaiPutAttrBN(inst_90, "name", sdaiSTRING, ""); SdaiInstance inst_91 = sdaiCreateInstanceBN(model, "circle"); sdaiPutAttrBN(inst_91, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_91, "radius", sdaiREAL, 25.4); sdaiPutAttrBN(inst_84, "edge_start", sdaiINSTANCE, inst_89); sdaiPutAttrBN(inst_84, "edge_end", sdaiINSTANCE, inst_90); sdaiPutAttrBN(inst_84, "edge_geometry", sdaiINSTANCE, inst_91); SdaiInstance inst_92 = sdaiCreateInstanceBN(model, "circle"); sdaiPutAttrBN(inst_92, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_92, "radius", sdaiREAL, 25.4); sdaiPutAttrBN(inst_85, "edge_start", sdaiINSTANCE, inst_90); sdaiPutAttrBN(inst_85, "edge_end", sdaiINSTANCE, inst_89); sdaiPutAttrBN(inst_85, "edge_geometry", sdaiINSTANCE, inst_92); SdaiInstance inst_93 = sdaiCreateInstanceBN(model, "fill_area_style_colour"); sdaiPutAttrBN(inst_93, "name", sdaiSTRING, ""); aggr = sdaiCreateAggrBN(inst_86, "fill_styles"); sdaiAdd(aggr, sdaiINSTANCE, inst_93); SdaiInstance inst_94 = sdaiCreateInstanceBN(model, "fill_area_style_colour"); sdaiPutAttrBN(inst_94, "name", sdaiSTRING, ""); aggr = sdaiCreateAggrBN(inst_87, "fill_styles"); sdaiAdd(aggr, sdaiINSTANCE, inst_94); SdaiInstance inst_95 = tutorial_04_createColourRGB(model, "", 0., 0., 0.); sdaiPutAttrBN(inst_88, "fill_colour", sdaiINSTANCE, inst_95); SdaiInstance inst_96 = tutorial_04_createCartesianPoint(model, "", 25.4, 203.2, -25.4); sdaiPutAttrBN(inst_89, "vertex_geometry", sdaiINSTANCE, inst_96); SdaiInstance inst_97 = tutorial_04_createCartesianPoint(model, "", 25.4, 203.2, 25.4); sdaiPutAttrBN(inst_90, "vertex_geometry", sdaiINSTANCE, inst_97); SdaiInstance inst_98 = sdaiCreateInstanceBN(model, "axis2_placement_3d"); sdaiPutAttrBN(inst_98, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_91, "position", sdaiINSTANCE, inst_98); SdaiInstance inst_99 = sdaiCreateInstanceBN(model, "axis2_placement_3d"); sdaiPutAttrBN(inst_99, "name", sdaiSTRING, ""); sdaiPutAttrBN(inst_92, "position", sdaiINSTANCE, inst_99); SdaiInstance inst_100 = tutorial_04_createColourRGB(model, "", 0., 0., 0.); sdaiPutAttrBN(inst_93, "fill_colour", sdaiINSTANCE, inst_100); SdaiInstance inst_101 = tutorial_04_createColourRGB(model, "", 0., 0., 0.); sdaiPutAttrBN(inst_94, "fill_colour", sdaiINSTANCE, inst_101); SdaiInstance inst_102 = tutorial_04_createCartesianPoint(model, "", 25.4, 203.2, 0.); SdaiInstance inst_103 = tutorial_04_createDirection(model, "", 0., -1., 0.); SdaiInstance inst_104 = tutorial_04_createDirection(model, "", 0., 0., 1.); sdaiPutAttrBN(inst_98, "location", sdaiINSTANCE, inst_102); sdaiPutAttrBN(inst_98, "axis", sdaiINSTANCE, inst_103); sdaiPutAttrBN(inst_98, "ref_direction", sdaiINSTANCE, inst_104); SdaiInstance inst_105 = tutorial_04_createCartesianPoint(model, "", 25.4, 203.2, 0.); SdaiInstance inst_106 = tutorial_04_createDirection(model, "", 0., -1., 0.); SdaiInstance inst_107 = tutorial_04_createDirection(model, "", 0., 0., 1.); sdaiPutAttrBN(inst_99, "location", sdaiINSTANCE, inst_105); sdaiPutAttrBN(inst_99, "axis", sdaiINSTANCE, inst_106); sdaiPutAttrBN(inst_99, "ref_direction", sdaiINSTANCE, inst_107); SdaiInstance inst_108 = sdaiCreateInstanceBN(model, "presentation_layer_assignment"); sdaiPutAttrBN(inst_108, "name", sdaiSTRING, "0"); sdaiPutAttrBN(inst_108, "description", sdaiSTRING, "0"); aggr = sdaiCreateAggrBN(inst_108, "assigned_items"); sdaiAdd(aggr, sdaiINSTANCE, inst_31); if (_sdaiWriteRepositoryToFile(repo, const_cast(filePath.c_str())) == sdaiFALSE) { return StepTutorial::ExecutionResult::eFailed; } SdaiRep testRep = _sdaiCreateRepositoryFromFile(session, const_cast(filePath.c_str()), "testRepository"); if (testRep == NULL) { return StepTutorial::ExecutionResult::eFailed; } sdaiCloseRepository(repo); sdaiCloseSession(session); return StepTutorial::ExecutionResult::eSucceed; }