extern void OptimizeFace( const string &OptName, const vector<string> &variate, const vector<double> &lower, const vector<double> &upper, const vector<string> &target, const int &MaxTime, const int &MaxNumberIteration, const double &AbsoluteConvergenceCriteria, const double &RelativeConvergenceCriteria ) { Session *theSession = Session::GetSession(); Part *workPart(theSession->Parts()->Work()); Optimization::OptimizationBuilder *optimizationBuilder1; optimizationBuilder1 = workPart->Optimization()->CreateOptimizationBuilder(); optimizationBuilder1->SetStudyName(OptName); std::vector<NXString> attributenames(target.size()); std::vector<NXObject *> attributeobjects(target.size()); NXObject *nullNXObject(NULL); std::vector<Optimization::OptimizationBuilder::OptimizationAttributeType> objectivetypes(target.size()); std::vector<double> objectivetargetvalues(target.size()); for (int i = 0; i < target.size(); ++i) { attributenames[i] = target[i]; attributeobjects[i] = nullNXObject; objectivetypes[i] = Optimization::OptimizationBuilder::OptimizationAttributeTypeKFAttribute; objectivetargetvalues[i] = 10; } optimizationBuilder1->SetOptimizationObjectives(attributenames, attributeobjects, objectivetypes, objectivetargetvalues); std::vector<NXString> attributenames2(variate.size()); std::vector<NXObject *> attributeobjects2(variate.size()); std::vector<Optimization::OptimizationBuilder::OptimizationAttributeType> variabletypes1(variate.size()); for (int i = 0; i < variate.size(); ++i) { attributenames2[i] = variate[i]; Expression *expression2(dynamic_cast<Expression *>(workPart->Expressions()->FindObject(variate[i]))); attributeobjects2[i] = expression2; variabletypes1[i] = Optimization::OptimizationBuilder::OptimizationAttributeTypeExpression; } std::vector<double> variablelowerlimitvalue1 = lower; std::vector<double> variableupperlimitvalue1 = upper; optimizationBuilder1->SetOptimizationVariables(attributenames2, attributeobjects2, variabletypes1, variablelowerlimitvalue1, variableupperlimitvalue1); optimizationBuilder1->SetOptimizationType(Optimization::OptimizationBuilder::OptimizationTargetTypeMinimum); optimizationBuilder1->SetAlgorithmType(Optimization::OptimizationBuilder::OptimizationAlgorithmTypePowell); optimizationBuilder1->SetConvergenceSpeedType(Optimization::OptimizationBuilder::OptimizationConvergenceSpeedTypeFast); optimizationBuilder1->SetMaxTime(MaxTime); optimizationBuilder1->SetMaxNumberIteration(MaxNumberIteration); optimizationBuilder1->SetAbsoluteConvergenceCriteria(AbsoluteConvergenceCriteria); optimizationBuilder1->SetRelativeConvergenceCriteria(RelativeConvergenceCriteria); optimizationBuilder1->SetShowGraph(false); optimizationBuilder1->RunOptimization(); optimizationBuilder1->Destroy(); }
extern Features::StudioSpline* CreateStudioSplineByLine(Features::AssociativeLine* associativeLine1, Features::AssociativeLine* associativeLine2, Features::AssociativeLine* associativeLine3) { Session *theSession = Session::GetSession(); Part *workPart(theSession->Parts()->Work()); NXObject *nullNXObject(NULL); Features::StudioSplineBuilderEx *studioSplineBuilderEx1; studioSplineBuilderEx1 = workPart->Features()->CreateStudioSplineBuilderEx(nullNXObject); // ---------------------------------------------- // Dialog Begin Point // ---------------------------------------------- Expression *expression1; expression1 = workPart->Expressions()->CreateSystemExpression("1.000000"); Scalar *scalar1; scalar1 = workPart->Scalars()->CreateScalarExpression(expression1, Scalar::DimensionalityTypeNone, SmartObject::UpdateOptionWithinModeling); Line *line1(dynamic_cast<Line *>(associativeLine1->FindObject("CURVE 1"))); Point *point1; point1 = workPart->Points()->CreatePoint(line1, scalar1, SmartObject::UpdateOptionWithinModeling); Features::GeometricConstraintData *geometricConstraintData1; geometricConstraintData1 = studioSplineBuilderEx1->ConstraintManager()->CreateGeometricConstraintData(); geometricConstraintData1->SetPoint(point1); studioSplineBuilderEx1->ConstraintManager()->Append(geometricConstraintData1); studioSplineBuilderEx1->Evaluate(); // ---------------------------------------------- // Dialog Begin Point // ---------------------------------------------- Expression *expression2; expression2 = workPart->Expressions()->CreateSystemExpression("1.000000"); Scalar *scalar2; scalar2 = workPart->Scalars()->CreateScalarExpression(expression2, Scalar::DimensionalityTypeNone, SmartObject::UpdateOptionWithinModeling); Line *line2(dynamic_cast<Line *>(associativeLine2->FindObject("CURVE 1"))); Point *point2; point2 = workPart->Points()->CreatePoint(line2, scalar2, SmartObject::UpdateOptionWithinModeling); Features::GeometricConstraintData *geometricConstraintData2; geometricConstraintData2 = studioSplineBuilderEx1->ConstraintManager()->CreateGeometricConstraintData(); geometricConstraintData2->SetPoint(point2); studioSplineBuilderEx1->ConstraintManager()->Append(geometricConstraintData2); studioSplineBuilderEx1->Evaluate(); // ---------------------------------------------- // Dialog Begin Point // ---------------------------------------------- Expression *expression3; expression3 = workPart->Expressions()->CreateSystemExpression("1.000000"); Scalar *scalar3; scalar3 = workPart->Scalars()->CreateScalarExpression(expression1, Scalar::DimensionalityTypeNone, SmartObject::UpdateOptionWithinModeling); Line *line3(dynamic_cast<Line *>(associativeLine3->FindObject("CURVE 1"))); Point *point3; point3 = workPart->Points()->CreatePoint(line3, scalar3, SmartObject::UpdateOptionWithinModeling); Features::GeometricConstraintData *geometricConstraintData3; geometricConstraintData3 = studioSplineBuilderEx1->ConstraintManager()->CreateGeometricConstraintData(); geometricConstraintData3->SetPoint(point3); studioSplineBuilderEx1->ConstraintManager()->Append(geometricConstraintData3); studioSplineBuilderEx1->Evaluate(); NXObject *nXObject; nXObject = studioSplineBuilderEx1->Commit(); studioSplineBuilderEx1->Destroy(); return (Features::StudioSpline*)nXObject; }
int TubeFromWire::CreateTube(NXOpen::Part *workPart, NXString outerDiameter, Routing::SplinePathBuilder *spline) //Ek { Features::Feature *nullFeatures_Feature(NULL); // создаем объект трубы как указатель //this = workPart->Features()->CreateTubeBuilder(nullFeatures_Feature); this->SetTolerance(0.001); // припуск this->OuterDiameter()->SetRightHandSide(outerDiameter); //внешний диаметр this->InnerDiameter()->SetRightHandSide(INNER_DIAMETER); //внутренний диаметр this->BooleanOption()->SetType(GeometricUtilities::BooleanOperation::BooleanTypeCreate); // булевы операции this->PathSection()->SetDistanceTolerance(DISTANCE_TOLERANCE_TUBE); // допуск this->PathSection()->SetChainingTolerance(CHAINING_TOLERANCE_TUBE); // допуск // про булевы операции std::vector<Body *> targetBodies1(1); Body *nullBody(NULL); targetBodies1[0] = nullBody; this->BooleanOption()->SetTargetBodies(targetBodies1); this->PathSection()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves); // вывод "ќдин сегмент" // создаем из Curve объект CurveDumbRule,который потом добавим в объект трубы Curve *curve1; curve1 = spline->GetRouteSegment(); std::vector<IBaseCurve *> curves1(1); Routing::SplineSegment *splineSegment1(dynamic_cast<Routing::SplineSegment *>(spline->GetRouteSegment())); curves1[0] = splineSegment1; CurveDumbRule *curveDumbRule1; curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1); //CurveDumbRule *curveDumbRule1; //curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curve1); this->PathSection()->AllowSelfIntersection(true); std::vector<SelectionIntentRule *> rules1(1); rules1[0] = curveDumbRule1; NXObject *nullNXObject(NULL); Point3d helpPoint1(-1711.72322949462, 778.153286292641, 0.0); this->PathSection()->AddToSection(rules1, splineSegment1, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false); //Session::UndoMarkId markId4; //markId4 = theSession->SetUndoMark(Session::MarkVisibilityInvisible, "Tube"); NXObject *nXObject1; nXObject1 = this->Commit(); return 0; }
extern Features::StudioSpline* CreateStudioSplineByPoints(Features::PointFeature *pointFeature1, Features::PointFeature *pointFeature2, Features::PointFeature *pointFeature3) { Session *theSession = Session::GetSession(); Part *workPart(theSession->Parts()->Work()); NXObject *nullNXObject(NULL); Features::StudioSplineBuilderEx *studioSplineBuilderEx1; studioSplineBuilderEx1 = workPart->Features()->CreateStudioSplineBuilderEx(nullNXObject); // ---------------------------------------------- // Dialog Begin Point // ---------------------------------------------- Point *point1(dynamic_cast<Point *>(pointFeature1->FindObject("POINT 1"))); Xform *nullXform(NULL); Point *point2; point2 = workPart->Points()->CreatePoint(point1, nullXform, SmartObject::UpdateOptionWithinModeling); Features::GeometricConstraintData *geometricConstraintData1; geometricConstraintData1 = studioSplineBuilderEx1->ConstraintManager()->CreateGeometricConstraintData(); geometricConstraintData1->SetPoint(point2); studioSplineBuilderEx1->ConstraintManager()->Append(geometricConstraintData1); studioSplineBuilderEx1->Evaluate(); // ---------------------------------------------- // Dialog Begin Point // ---------------------------------------------- Point *point3(dynamic_cast<Point *>(pointFeature2->FindObject("POINT 1"))); Point *point4; point4 = workPart->Points()->CreatePoint(point3, nullXform, SmartObject::UpdateOptionWithinModeling); Features::GeometricConstraintData *geometricConstraintData2; geometricConstraintData2 = studioSplineBuilderEx1->ConstraintManager()->CreateGeometricConstraintData(); geometricConstraintData2->SetPoint(point4); studioSplineBuilderEx1->ConstraintManager()->Append(geometricConstraintData2); studioSplineBuilderEx1->Evaluate(); // ---------------------------------------------- // Dialog Begin Point // ---------------------------------------------- Point *point5(dynamic_cast<Point *>(pointFeature3->FindObject("POINT 1"))); Point *point6; point6 = workPart->Points()->CreatePoint(point5, nullXform, SmartObject::UpdateOptionWithinModeling); Features::GeometricConstraintData *geometricConstraintData3; geometricConstraintData3 = studioSplineBuilderEx1->ConstraintManager()->CreateGeometricConstraintData(); geometricConstraintData3->SetPoint(point6); studioSplineBuilderEx1->ConstraintManager()->Append(geometricConstraintData3); studioSplineBuilderEx1->Evaluate(); NXObject *nXObject1; nXObject1 = studioSplineBuilderEx1->Commit(); studioSplineBuilderEx1->Destroy(); return (Features::StudioSpline*)nXObject1; }