ads_point 是原来的ADS 编程中定义的一种数据类型,其定义为:
typedef ads_real ads_point[3];
而ads_real 则被定义为:
typedef double ads_real;
可以看出,ads_point 实际上是一个三维浮点数组,它至今仍在与ADS 相关的编程中使用。从ads_point 转换到AcGePoint3d 类型的点,即可以通过数组元素直接赋值,也可以通过asPnt3d 函数直接转化:
1. 通过数组元素交换:
ptInsert[X] = pt[X]; ptInsert[Y] = pt[Y]; ptInsert[Z] = pt[Z];
2.使用asPnt3d 函数(需要包含geassign.h 头文件):
AcGePoint3d ptInsert = asPnt3d(pt);
之所以可以使用X、Y 和Z 直接作为数组的下标,是由于这三个字母在ObjectARX 有特殊的定义:
enum { X = 0, Y = 1, Z = 2 };
1 // AcgePoint3d转化成ads_point 2 void LzxCalculation::AcgePoint3dToads_point(const AcGePoint3d& pt, ads_point& adsPoint) 3 { 4 adsPoint[X] = pt.x; 5 adsPoint[Y] = pt.y; 6 adsPoint[Z] = pt.z; 7 }