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#)-建模-通过起始点终止点圆弧半径创建圆弧

NX二次开发(C#)-建模-三点创建圆弧曲线

UG NX二次开发(C#)-建模-创建填充曲面(CreateFillHoleBuilder)

UG NX二次开发(C#)-建模-获得NX当前打开的所有part文件

NX二次开发(C#)-建模-圆弧边对象转化为圆弧对象

UG NX二次开发(C#)-建模-获取圆柱面信息(轴向半径深度)