ObjectARX ads_point 和AcGePoint3d 的转化

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 }
原文地址:https://www.cnblogs.com/lzx838/p/2633617.html