/////////////////////////////////////////////////////////////////////////////// // 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 "daiModel.h" #include "ExStepTutorialBase.h" OdDAIObjectId createCartesianPoint(OdDAI::ModelPtr model, const OdAnsiString& name, const double x, const double y, const double z) { OdDAI::ApplicationInstancePtr point = model->createEntityInstance("cartesian_point"); point->putAttr("name", name); OdDAI::List * coordinates; point->getAttr("coordinates") >> coordinates; coordinates->createEmpty(); coordinates->addByIndex(0, x); coordinates->addByIndex(1, y); if (!Odisnan(z)) coordinates->addByIndex(2, z); return model->appendEntityInstance(point); } OdDAIObjectId createDirection(OdDAI::ModelPtr model, const OdAnsiString& name, const double x, const double y, const double z) { OdDAI::ApplicationInstancePtr direction = model->createEntityInstance("direction"); direction->putAttr("name", name); OdDAI::List * coordinates; direction->getAttr("direction_ratios") >> coordinates; coordinates->createEmpty(); coordinates->addByIndex(0, x); coordinates->addByIndex(1, y); if (!Odisnan(z)) coordinates->addByIndex(2, z); return model->appendEntityInstance(direction); } OdDAIObjectId createColorRgb(OdDAI::ModelPtr model, const OdAnsiString& name, const double r, const double g, const double b) { OdDAI::ApplicationInstancePtr color = model->createEntityInstance("colour_rgb"); color->putAttr("name", name); color->putAttr("red", r); color->putAttr("green", g); color->putAttr("blue", b); return model->appendEntityInstance(color); } OdDAIObjectId createDimmExponents(OdDAI::ModelPtr model, const double length_exponent, const double mass_exponent, const double time_exponent, const double electric_current_exponent, const double thermodynamic_temperature_exponent, const double amount_of_substance_exponent, const double luminous_intensity_exponent) { OdDAI::ApplicationInstancePtr exponent = model->createEntityInstance("dimensional_exponents"); exponent->putAttr("length_exponent", length_exponent); exponent->putAttr("mass_exponent", mass_exponent); exponent->putAttr("time_exponent", time_exponent); exponent->putAttr("electric_current_exponent", electric_current_exponent); exponent->putAttr("thermodynamic_temperature_exponent", thermodynamic_temperature_exponent); exponent->putAttr("amount_of_substance_exponent", amount_of_substance_exponent); exponent->putAttr("luminous_intensity_exponent", luminous_intensity_exponent); return model->appendEntityInstance(exponent); } OdAnsiString getExeDir(OdAnsiString path) { int slashPos = -1; #ifdef ODA_WINDOWS slashPos = path.reverseFind('\\'); if (slashPos > 0) path = path.left(slashPos + 1); #endif slashPos = path.reverseFind('/'); if (slashPos > 0) path = path.left(slashPos + 1); return path; }