网友C#2010开发UG7.0心得2(圆柱与圆锥)

C#2010开发UG7.0心得2(圆柱与圆锥)

前面说了长方体,接下来说说圆柱与圆锥,创建的步骤是一致的,都是由各自的Builder类来创建。不同的是,长方体没有轴线方向一说,就是它的长宽高永远是沿着坐标轴的X、Y和Z方向。想改变的话只能转坐标系了,这个下节说。现在先看圆柱与圆锥。

20130520224431
因为用来学习NXOPEN的东西实在太少,而帮助文档里也简单的可怜,所以我写的方法完全是根据我的理解提纯的Journal里的代码。Journal即是操作记录,这个大家可以研究研究,修改它可以很快生成自己的代码,有点像从ANSYS的操作日志里来提纯得到APDL程序一样。以后可能会找到更好的方法,以后再说,现在就拿Journal里的方法来创建,并封装自己的类与方法使之更简洁。
开始,圆柱,先建立个最简单的圆柱,就是默认的轴线为Z轴正半轴的,基点在原点的,直径50,高70的圆柱。

Feature nullFeatures = null;
CylinderBuilder cylBuilder1;
cylBuilder1 = workPart.Features.CreateCylinderBuilder(nullFeatures);
cylBuilder1.Diameter.RightHandSide = “50”;
cylBuilder1.Height.RightHandSide = “70”;
Feature cyl1;
cyl1 = cylBuilder1.CommitFeature();
cylBuilder1.Destroy();

注意直径与高的类型仍是string,而且是通过RightHandSide属性来定义的。轴线、基点不设置,系统就采取默认值采用轴线为Z轴正半轴,基点为原点。其余的部分很熟悉吧,和创建长方体时一样的,甚至可以直接用当时定义的空的Feature(如果在一个工程中)。下面来看下改变了轴线方向的圆柱:

// Feature nullFeatures = null; 上面已经创建过了
CylinderBuilder cylBuilder2;
cylBuilder2 = workPart.Features.CreateCylinderBuilder(nullFeatures);

cylBuilder2.Diameter.RightHandSide = “50”;
cylBuilder2.Height.RightHandSide = “70”;

Axis axis1;
axis1 = cylBuilder2.Axis;

Direction direction1;
DatumAxis datumAxis1 = (DatumAxis)workPart.Datums.FindObject(“DATUM_CSYS(0) Y axis”);
direction1 = workPart.Directions.CreateDirection(datumAxis1, Sense.Forward, NXOpen.SmartObject.UpdateOption.WithinModeling);
axis1.Direction = direction1;

Point nullPoint = null;
axis1.Point = nullPoint;

Feature cyl2;
cyl2 = cylBuilder2.CommitFeature();
cylBuilder2.Destroy();

可以看出只是多了一段创建一个Axis对象的代码,并将cylBuilder2的Axis属性值赋给它。两个引用都指向同一位置后,再来设置其具体内容。该Axis对象的Direction是这样创建的:先通过FindObject()方法来得到Y轴方向,并用它创建一个Direction对象direction1。该Axis对象的Point属性是个空(null),所以仍采用原点。这样,轴线,基点,直径,高度,这些参数齐全了就可以Commit了,最后Destroy。
这个FindObject()方法,大家还是看帮助文档自己体会吧,我只能做到能够正确用它,但现在还是理解的不是很透彻。direction1的创建方法,大多是枚举类型,敲完空格直接选,为了方便还是直接从Journal里复制的好。圆柱就说这么多,圆锥就是多一个直径而已,下面贴出代码,自己体会吧。

NXOpen.Features.Cone nullFeatures_Cone = null;
NXOpen.Features.ConeBuilder coneBuilder1;
coneBuilder1 = workPart.Features.CreateConeBuilder(nullFeatures_Cone);

coneBuilder1.BaseDiameter.RightHandSide = “60”;
coneBuilder1.TopDiameter.RightHandSide = “20”;
coneBuilder1.Height.RightHandSide = “30”;

Axis axis1;
axis1 = coneBuilder1.Axis;

Direction direction1;
DatumAxis datumAxis1 = (DatumAxis)workPart.Datums.FindObject(“DATUM_CSYS(0) Y axis”);
direction1 = workPart.Directions.CreateDirection(datumAxis1, Sense.Forward, NXOpen.SmartObject.UpdateOption.WithinModeling);
axis1.Direction = direction1;

point3d basePoint = new point3d(0.0,10.0,0.0);
Point point1 = workPart.Points.CreatePoint(basePoint);
axis1.Point = point1;

NXObject nXObject1;
nXObject1 = coneBuilder1.Commit();
coneBuilder1.Destroy();

上面代码创建了一个轴线为Y轴正半轴,基点在(0.0,10.0,0.0)底径 60,顶径20,高30的圆锥,这次不同的是用的NXObject来接受返回结果,用的方法也变成对应的Commit()方法。今天结束。

网友C#2010开发UG7.0心得5(实例之阵列)

64位系统下VS2010二次开发NX7.0

未经允许不得转载:NX1847安装方法|UG12.0安装方法|ug12.0安装教程|ug12.0安装视频|ug12.0软件下载 » 网友C#2010开发UG7.0心得2(圆柱与圆锥)

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏