コード例 #1
0
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();
}
コード例 #2
0
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;
}
コード例 #3
0
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;
}
コード例 #4
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;
}