NXOpen固定约束

UF_initialize();
Session *theSession = Session::GetSession();
Part *workPart(theSession->Parts()->Work());
Part *displayPart(theSession->Parts()->Display());
// ----------------------------------------------
// Menu: Assemblies->Components->Add Component...
// ----------------------------------------------
//添加组件
Point3d basePoint1(0.0, 0.0, 0.0);
Matrix3x3 orientation1;
orientation1.Xx = 1.0;
orientation1.Xy = 0.0;
orientation1.Xz = 0.0;
orientation1.Yx = 0.0;
orientation1.Yy = 1.0;
orientation1.Yz = 0.0;
orientation1.Zx = 0.0;
orientation1.Zy = 0.0;
orientation1.Zz = 1.0;
PartLoadStatus *partLoadStatus1;
Assemblies::Component *component1;
component1 = workPart->ComponentAssembly()->AddComponent("E:\\bgl\\1.prt", "MODEL", "1", basePoint1, orientation1, -1, &partLoadStatus1);
delete partLoadStatus1;

/*//添加固定约束
Positioning::ComponentPositioner *componentPositioner1;
componentPositioner1 = workPart->ComponentAssembly()->Positioner();

componentPositioner1->ClearNetwork();

componentPositioner1->BeginAssemblyConstraints();
////////////////////////////////////
Positioning::Network *network1;
network1 = componentPositioner1->EstablishNetwork();

Positioning::ComponentNetwork *componentNetwork1(dynamic_cast<Positioning::ComponentNetwork *>(network1));
componentNetwork1->SetMoveObjectsState(true);

Assemblies::Component *nullAssemblies_Component(NULL);
componentNetwork1->SetDisplayComponent(nullAssemblies_Component);

////////////////////////////////////////
Positioning::Constraint *constraint1;
constraint1 = componentPositioner1->CreateConstraint();

Positioning::ComponentConstraint *componentConstraint1(dynamic_cast<Positioning::ComponentConstraint *>(constraint1));
componentConstraint1->SetConstraintType(Positioning::Constraint::TypeFix);

//Assemblies::Component *component1(dynamic_cast<Assemblies::Component *>(workPart->ComponentAssembly()->RootComponent()->FindObject("COMPONENT 1 1")));
Positioning::ConstraintReference *constraintReference1;
constraintReference1 = componentConstraint1->CreateConstraintReference(component1, component1, false, false, false);

componentNetwork1->Solve();

componentPositioner1->ClearNetwork();

componentPositioner1->EndAssemblyConstraints();*/


Positioning::ComponentPositioner *componentPositioner1;
componentPositioner1 = workPart->ComponentAssembly()->Positioner();

componentPositioner1->ClearNetwork();

//开始

componentPositioner1->BeginAssemblyConstraints();


Positioning::Network *network1;
network1 = componentPositioner1->EstablishNetwork();

Positioning::ComponentNetwork *componentNetwork1(dynamic_cast<Positioning::ComponentNetwork *>(network1));
componentNetwork1->SetMoveObjectsState(true);

Assemblies::Component *nullAssemblies_Component(NULL);
componentNetwork1->SetDisplayComponent(nullAssemblies_Component);

componentNetwork1->SetMoveObjectsState(true);

 

Positioning::Constraint *constraint1;
constraint1 = componentPositioner1->CreateConstraint();

Positioning::ComponentConstraint *componentConstraint1(dynamic_cast<Positioning::ComponentConstraint *>(constraint1));
componentConstraint1->SetConstraintAlignment(Positioning::Constraint::AlignmentInferAlign);

componentConstraint1->SetConstraintType(Positioning::Constraint::TypeTouch);

//Find Face1
tag_t face1Tag = null_tag;
Face *face1;
UF_OBJ_cycle_by_name("F1",&face1Tag);
if (face1Tag)
{
face1 = dynamic_cast<Face *>(NXObjectManager::Get(face1Tag));
}

//Find Face2
tag_t face2Tag = null_tag;
Face *face2;
UF_OBJ_cycle_by_name("F2",&face2Tag);
if (face2Tag)
{
face2 = dynamic_cast<Face *>(NXObjectManager::Get(face2Tag));
}

Positioning::ConstraintReference *constraintReference1;
constraintReference1 = componentConstraint1->CreateConstraintReference(component1, face1, true, false, false);

 

Positioning::ConstraintReference *constraintReference2;
constraintReference2 = componentConstraint1->CreateConstraintReference(workPart->ComponentAssembly(), face2, true, false, false);


constraintReference2->SetFixHint(true);


componentNetwork1->Solve();


componentPositioner1->ClearNetwork();


componentPositioner1->EndAssemblyConstraints();

UF_terminate();

posted @ 2021-08-04 14:06  光量子  阅读(119)  评论(0编辑  收藏  举报