NX UG二次开发 《Getting Started with NX Open》 第六章 位置、矢量和点 C#

(原为英文版,翻译为机器自动翻译,原代码为vb.net,本人翻译成C#,因个人能力有限,有错误之处请指出。)

接下来的几章简要介绍了可用于执行简单任务的NX Open功能。函数描述相当简短,因为我们只是想向您展示可用的函数范围。《NX开放参考指南》有更详细的信息,如果您使用像Visual Studio这样的良好开发环境,在编写代码时也会向您提供这些详细信息。具体来说,只要在函数名后面键入左括号,就会出现函数输入列表以及说明。通过使用Visual Studio中的对象浏览器,您还可以获得有关任何函数或对象的完整信息。

在对函数的描述之后,我们通常会给出一小段示例代码,展示如何使用这些函数。这些例子很简单,但仍然很有用。为了保持简洁,示例代码通常不完整。例如,声明经常被忽略,而完整的Main函数很少被包含。如果您确实想要编译示例代码,通常需要进行一些添加。

Point3d对象表示三维空间中的位置。在基本数之后,位置和向量是几何应用中最基本的对象,因此我们将首先描述它们。还有Point2d和Point4d对象,但这些对象的使用频率不高,因此我们这里不讨论它们。注意,Point3d不是真正的NX对象。Point3d对象只存在于NX Open程序中-它们不会永久存储在NX模型中(或其他任何地方)。因此,一旦程序运行完毕,所有的Point3d对象都将消失。从这个意义上讲,它们就像你在程序中使用的数字变量。如果要创建永久NX对象以记录位置,应使用NXOpen。点,而不是Point3d。可以使用以下函数创建Point3d对象:

作用

输入和创建方法

Point3d(x As Double, y As Double, z As Double)

从三个直角坐标。

在第一列中,您可以看到在调用函数时应该提供的输入类型的正式描述——您必须提供三个“double”类型的变量。

这个函数是一个构造函数,所以在调用它时,我们必须在代码中使用“New”关键字。以下是一些示例:

Point3d p = new Point3d(3, 5, 8); //使用坐标(3,5,8)创建点p
Point3d q = new Point3d(1.7, 2.9, 0);//使用坐标(1.7, 2.9, 0)创建点q

Point3d对象属性如下:

数据类型

所有物

通道

描述

Double

X

get, set

Point3d的x坐标

Double

Y

get, set

Point3d的y坐标

Double

Z

get, set

Point3d的z坐标


Vector3d对象表示三维空间中的方向或位移。与Point3d对象一样,Vector3d对象只存在于NX Open程序中-它们不会永久存储在NX模型中(或其他任何地方)。您可以使用以下构造函数创建Vector3d对象:

作用

输入和创建方法

Vector3d(x As Double, y As Double, z As Double)

来自三个矩形组件。

矢量对象属性如下:

数据类型

所有物

通道

描述

Double

 X

get, set

向量的x分量

Double

Y

get, set

向量的y分量

Double

Z

get, set

向量的z分量

NXOpen.VectorArithmetic类提供了一个与NXOpen.Vector3d非常相似的Vector3对象。此类还提供了对Vector3对象执行操作的函数,如加法、减法、叉积等。在某些情况下,使用Vector3进行计算,然后将答案转换为NXOpen可能会很方便。Vector3d表单供进一步使用。以下代码说明了该方法:

NXOpen.VectorArithmetic.Vector3 u = new NXOpen.VectorArithmetic.Vector3(3, 4, 7);
NXOpen.VectorArithmetic.Vector3 v = new NXOpen.VectorArithmetic.Vector3(4, 2, 1);
NXOpen.VectorArithmetic.Vector3 w = new NXOpen.VectorArithmetic.Vector3(3, 4, 7) + 0.5 * new NXOpen.VectorArithmetic.Vector3(4, 2, 1);
NXOpen.Vector3d r = new NXOpen.Vector3d(w.x, w.y, w.z);

  • Point 

Point可能看起来很像Point3d对象,但它们非常不同。Point是NX对象,永久存储在NX零件文件中;Point3d和Vector3d对象是仅在NX Open程序运行时存在的临时对象。

为了创建一个点,我们按照第5章中解释的“工厂”模式编写代码。基本思想是零件文件包含不同对象类型的“集合”。因此,例如,给定名为myPart的Part对象,有一个名为myPart的集合。包含零件中所有Point对象的点。类似地,myPart.Arcs是一个集合,包含此零件和myPart中的所有圆弧。曲线包括所有曲线。

这些集合用作“factory”对象,我们可以使用这些对象在零件文件中创建新对象,如下所示:

Part workPart = theSession.Parts.Work;  //获得工作部件
PointCollection points = workPart.Points;  //获取工作部件的点集合PointCollection 
Point3d coords = new Point3d(3, 5, 0);  // 定义点的坐标
Point p1 = points.CreatePoint(coords); // 创建点(添加到集合)
p1.SetVisibility(SmartObject.VisibilityOption.Visible);

最后一行代码是必需的,因为NXOpen.Point是“SmartObject”,默认情况下不可见。上面的代码以相当冗长的方式编写,以便进行完整的解释。在实践中,您通常会这样写:

Part workPart = theSession.Parts.Work;  //获得工作部件
Point3d coords = new Point3d(3, 5, 0); // 定义点的坐标
Point p1 = workPart.Points.CreatePoint(coords); // 创建点
p1.SetVisibility(SmartObject.VisibilityOption.Visible); // 使可见

如果你愿意,你甚至可以用一行代码创建一个点,如下所示:

 Point p1 = NXOpen.Session.GetSession().Parts.Work.Points.CreatePoint(new Point3d(3, 5, 0));

总之,以下函数在名为myPart的部分中创建一个点:

作用

输入和创建方法

 myPart.Points.CreatePoint(x As Double, y As Double, z As Double)

从x,y,z坐标

Point对象的特性如下:

数据类型

所有物

通道

描述

Double

X

get, set

点的x坐标。

Double

Y

get, set

点的y坐标。

Double

Z

get, set

点的z坐标。

有许多函数需要Point3d对象作为输入。如果我们有一个Point,而不是Point3d,我们总是可以得到一个Point3d。所以,如果pt是一个点,我们要设置NXOpen的原点。Direction(需要Point3d对象),则需要的代码是:

myDirection.Origin = new Point3d(pt.Coordinates.X, pt.Coordinates.Y, pt.Coordinates.Z);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UG NXOpen学徒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值