//移动组件(批量移动)
void aperture_tool1:: moveComponent(std::vector<Assemblies::Component *>componentV2,Vector3d translation1){
Session *theSession = Session::GetSession();
Part *workPart(theSession->Parts()->Work());
Part *displayPart(theSession->Parts()->Display());
Positioning::ComponentPositioner *componentPositioner1;
componentPositioner1 = workPart->ComponentAssembly()->Positioner();
//用于NX定位组件 建立网络
Positioning::Network *network1;
network1 = componentPositioner1->EstablishNetwork();
Positioning::ComponentNetwork *componentNetwork1(dynamic_cast<Positioning::ComponentNetwork *>(network1));
//将对象设置为移动状态
componentNetwork1->SetMoveObjectsState(true);
//删除所有的约束
componentNetwork1->RemoveAllConstraints();
std::vector<NXObject *> movableObjects2(componentV2.size());
for (int i=0;i<componentV2.size();i++)
{
movableObjects2[i]=componentV2[i];
}
//集合移动组
componentNetwork1->SetMovingGroup(movableObjects2);
//开始拖动
componentNetwork1->BeginDrag();
componentNetwork1->DragByTranslation(translation1);
componentNetwork1->Solve();
componentPositioner1->ClearNetwork();
theSession->UpdateManager()->DoUpdate(theSession->SetUndoMark(Session::MarkVisibilityInvisible, "Move Component Update"));
componentPositioner1->EndMoveComponent();
}
【UG\NX二次开发】移动组件(批量移动)
于 2023-11-09 21:05:38 首次发布