ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

NX 二次开发找柱面整圆边并输出对应的相关信息

2021-03-13 14:34:48  阅读:272  来源: 互联网

标签:%. arcCoords NX msg 2f 整圆边 二次开发 UF axis


C++  

 

//选择过滤
Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
std::vector<Selection::MaskTriple> maskArray(1);
maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_CYLINDRICAL_FACE);
selection0->GetProperties()->SetSelectionFilter("SelectionFilter", action, maskArray);

selection0->SetToolTip("选择圆柱面");
selection0->SetBitmap("revolved_face_collector");

 

UF_initialize();
//获取UI选取的圆柱面
std::vector<TaggedObject *> faces = selection0->GetSelectedObjects(); //得到圆柱面

char msg [256];

for ( int i = 0 ; i < faces.size();i++)
{
Face *face1 = dynamic_cast<Face *>(faces[i]);
edges = face1->GetEdges();
}

NXOpen::Edge::EdgeType edgetype;//2为圆边?
for(int i=0;i < edges.size();i++ )
{
Edge *edge1 = edges[i];
edgetype = edge1->SolidEdgeType(); //获取类型
if ( edgetype == 2 )
{
arcedges1.push_back(edges[i]);//如果是圆边就塞到容器
//获取边的信息
UF_EVAL_p_t evaluator;
UF_EVAL_initialize(edge1->Tag(), &evaluator);//使用UF_EVAL_ask_arc()函数需要先进行初始化

UF_EVAL_arc_t arcCoords;
UF_EVAL_ask_arc(evaluator, &arcCoords);////arc结构体中有曲线的参数(圆中,半径,是否整圆等相关信息)
double arcCenter[3] = { 0.00 };
arcCenter[0] = arcCoords.center[0];
arcCenter[1] = arcCoords.center[1];
arcCenter[2] = arcCoords.center[2];
double arcx_axis [3] = { 0.00 };
arcx_axis[0] = arcCoords.x_axis[0];
arcx_axis[1] = arcCoords.x_axis[1];
arcx_axis[2] = arcCoords.x_axis[2];
double arcy_axis [3] = { 0.00 };
arcy_axis[0] = arcCoords.y_axis[0];
arcy_axis[1] = arcCoords.y_axis[1];
arcy_axis[2] = arcCoords.y_axis[2];
double arcR[1] = { 0.00 } ;
arcR [0] = arcCoords.radius;
//确定给定的数据是否来自圆形曲线或边缘
bool boolIsArc;
UF_EVAL_is_arc(evaluator, &boolIsArc);
if (boolIsArc)
{
if (fabs(arcCoords.limits[0]) < 0.001 && fabs(arcCoords.limits[1] - 2 * PI) < 0.001)//判断是否是整圆
{
bool boolVal = true;//此圆是整圆
arcedges2.push_back(edges[i]);//是整圆就把边塞到容器
sprintf(msg, "边的中心:%.2f %.2f %.2f",arcCenter[0],arcCenter[1],arcCenter[2]);
theSession->ListingWindow()->WriteLine( msg);
sprintf(msg, "边半径:%.2f ",arcR [0]);
theSession->ListingWindow()->WriteLine( msg);
sprintf(msg, "边的X轴:%.2f %.2f %.2f",arcx_axis[0],arcx_axis[1],arcx_axis[2]);
theSession->ListingWindow()->WriteLine( msg);
sprintf(msg, "边的y轴:%.2f %.2f %.2f",arcy_axis[0],arcy_axis[1],arcy_axis[2]);
theSession->ListingWindow()->WriteLine( msg);
}
}
}
}

UF_terminate();

 

 

标签:%.,arcCoords,NX,msg,2f,整圆边,二次开发,UF,axis
来源: https://www.cnblogs.com/hqsalanhuang/p/14528693.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有