(原为英文版,翻译为机器自动翻译,原代码为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可能看起来很像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);