//单个体创建镜像体
tag_t Create_Mirror_Bodys(tag_t bodys, double dir[3], double Pt[3])
{
tag_t planetag = NULL_TAG;
std::vector<tag_t> mirrorBodys;
if (!bodys) return NULL_TAG;
UF_CALL(UF_MODL_create_fixed_dplane(Pt, dir, &planetag));
Session *theSession = Session::GetSession(); Part *workPart(theSession->Parts()->Work()); Part *displayPart(theSession->Parts()->Display()); Features::Feature *nullFeatures_Feature(NULL); if (!workPart->Preferences()->Modeling()->GetHistoryMode()) { throw NXException::Create("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode."); } Features::MirrorBodyBuilder *mirrorBodyBuilder1; mirrorBodyBuilder1 = workPart->Features()->CreateMirrorBodyBuilder(nullFeatures_Feature); mirrorBodyBuilder1->SetAssociative(false); mirrorBodyBuilder1->SetCopyThreads(false); mirrorBodyBuilder1->SetFixAtCurrentTimestamp(true); Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(bodys))); bool added1; added1 = mirrorBodyBuilder1->MirrorBodyList()->Add(body1); DatumPlane *datumPlane1(dynamic_cast<DatumPlane *>(NXObjectManager::Get(planetag))); mirrorBodyBuilder1->Plane()->SetValue(datumPlane1); NXObject *nXObject1; nXObject1 = mirrorBodyBuilder1->Commit(); std::vector<NXObject *> objects1; objects1 = mirrorBodyBuilder1->GetCommittedObjects(); mirrorBodyBuilder1->Destroy(); if (objects1.empty()) { objects1.push_back(nXObject1); } tag_t bodytag; UF_CALL(UF_MODL_ask_feat_body(objects1[0]->Tag(), &bodytag)); mirrorBodys.push_back(bodytag); UF_OBJ_delete_object(planetag); return bodytag;}
//多个体创建镜像体
std::vector<tag_t> Create_Mirror_Bodys(std::vector<tag_t> bodys, double dir[3], double Pt[3])
{
tag_t planetag = NULL_TAG;
std::vector<tag_t> mirrorBodys;
if (bodys.empty()) return mirrorBodys;
UF_CALL(UF_MODL_create_fixed_dplane(Pt, dir, &planetag));
Session *theSession = Session::GetSession(); Part *workPart(theSession->Parts()->Work()); Part *displayPart(theSession->Parts()->Display()); Features::Feature *nullFeatures_Feature(NULL); if (!workPart->Preferences()->Modeling()->GetHistoryMode()) { throw NXException::Create("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode."); } Features::MirrorBodyBuilder *mirrorBodyBuilder1; mirrorBodyBuilder1 = workPart->Features()->CreateMirrorBodyBuilder(nullFeatures_Feature); mirrorBodyBuilder1->SetAssociative(false); mirrorBodyBuilder1->SetCopyThreads(false); mirrorBodyBuilder1->SetFixAtCurrentTimestamp(true); for (int i = 0; i < bodys.size(); i++) { Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(bodys[i]))); bool added1; added1 = mirrorBodyBuilder1->MirrorBodyList()->Add(body1); } DatumPlane *datumPlane1(dynamic_cast<DatumPlane *>(NXObjectManager::Get(planetag))); mirrorBodyBuilder1->Plane()->SetValue(datumPlane1); NXObject *nXObject1; nXObject1 = mirrorBodyBuilder1->Commit(); std::vector<NXObject *> objects1; objects1 = mirrorBodyBuilder1->GetCommittedObjects(); mirrorBodyBuilder1->Destroy(); if (objects1.empty()) { objects1.push_back(nXObject1); } for (int i = 0; i < objects1.size(); i++) { tag_t bodytag; UF_CALL(UF_MODL_ask_feat_body(objects1[i]->Tag(), &bodytag)); mirrorBodys.push_back(bodytag); } UF_OBJ_delete_object(planetag); return mirrorBodys;}