UG NX二次开发(C#)-建模-获得点所在的圆弧曲线
Posted GimiGimmy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UG NX二次开发(C#)-建模-获得点所在的圆弧曲线相关的知识,希望对你有一定的参考价值。
如何根据选择的点,获得点所在的圆弧曲线,这时候要用到SmartObject,就是智能对象,在NXOPEN中,其在UG_SO类中。
首选选择点的代码为:
if (point0.GetSelectedObjects().Length == 0)
{
return 1;
}
TaggedObject[]taggedObjects = point0.GetSelectedObjects();
再将TaggedObject对象转换为Point对象,即是:
Point point = (Point)taggedObjects[0];
然后对点进行操作,用UF_SO_Ask_parents()函数, 其声明如下:
在C#中,用的是UFSo,即:
TheUFSession = UFSession.GetUFSession();
UFSo uFSo = theUFSession.So;
int options = UFConstants.UF_SO_ASK_ALL_PARENTS;
int n_parents;
Tag[] parents_Tags;
uFSo.AskParents(point.Tag, options, out n_parents, out parents_Tags);
再对获得的父向进行类型判断:
int type;
int subType;
foreach(var pt in parents_Tags)
{
UFObj uFObj = theUFSession.Obj;
uFObj.AskTypeAndSubtype(pt,out type,out subType);
MessageBox.Show(type.ToString() + "\\t" + subType.ToString());
if(type==70)
{
if(subType==3)
{
NXObjectManager nXObjectManager = new NXObjectManager();
Edge curve = (Edge)nXObjectManager.GetTaggedObject(pt);
if (curve.SolidEdgeType == Edge.EdgeType.Circular)
{
Section section = workPart.Sections.CreateSection(curve);
Arc Arc = (Arc)workPart.Curves.CreateSmartCompositeCurve(section, SmartObject.UpdateOption.WithinModeling, 0.001);
MessageBox.Show(Arc.Radius.ToString() + "\\t" + Arc.CenterPoint.ToString());
}
}
}
}
应用实例如下:
获得圆弧曲线的半径为30mm,其圆心点坐标为:[0,0,100]
以上是关于UG NX二次开发(C#)-建模-获得点所在的圆弧曲线的主要内容,如果未能解决你的问题,请参考以下文章
NX二次开发(C#)-建模-通过起始点终止点圆弧半径创建圆弧
UG NX二次开发(C#)-建模-创建填充曲面(CreateFillHoleBuilder)