/*录制:对单条边修剪与延伸*/
bool CreateExtendEdge(tag_t my_edge1, double my_len, tag_t& sheetTag)
{
try
{
Session* theSession = Session::GetSession();
Part* workPart(theSession->Parts()->Work());
Part* displayPart(theSession->Parts()->Display());
std::vector<Edge*> edges1(1);
Features::TrimExtendBuilder* trimExtendBuilder1;
trimExtendBuilder1 = workPart->Features()->CreateTrimExtendBuilder(NULL);
Edge* edge1(dynamic_cast<Edge*>(NXOpen::NXObjectManager::Get(my_edge1)));//传入边的Tag
// UF_DISP_set_highlight(my_edge1, 1);
edges1[0] = edge1;
EdgeDumbRule* edgeDumbRule1;
edgeDumbRule1 = workPart->ScRuleFactory()->CreateRuleEdgeDumb(edges1);
std::vector<SelectionIntentRule*> rules2(1);
rules2[0] = edgeDumbRule1;
trimExtendBuilder1->TargetCollector()->ReplaceRules(rules2, false);
trimExtendBuilder1->SetTolerance(0.0254);
char len[256];
sprintf_s(len, 256, "%lf", my_len);
trimExtendBuilder1->TargetExtendDistance()->SetRightHandSide(len);//设置长度
NXObject* nXObject1;
nXObject1 = trimExtendBuilder1->Commit();
UF_MODL_ask_feat_body(trimExtendBuilder1->CommitFeature()->Tag(), &sheetTag);
uf_list_t* objs_body;
UF_MODL_create_list(&objs_body); //创建链表
UF_MODL_put_list_item(objs_body, sheetTag); //加入对象
UF_MODL_delete_object_parms(objs_body); //执行去参
UF_MODL_delete_list(&objs_body);
trimExtendBuilder1->Destroy();
}
catch (exception& ex)
{
//UF_UI_open_listing_window();
//UF_UI_write_listing_window("延伸错误\n");
return 1;
}
return 0;
}
【UG\NX二次开发】NXOpen 修剪与延伸(trimExtendBuilder)
于 2023-11-09 15:22:49 首次发布