一个简单的问题,希望大家给予解答,谢谢
现在正在吃力的学习arx,在编写我的第一个arx程序时,碰到一个问题,就是如何将一个 AcGePoint3d类型的点转换成ads_point类型的点,应为我要用acutDistance()函数计算两个AcGePoint3d类型的点之间的距离,由于参数不一至,编译失败,在帮助中找了很一会都没有找到,希望那位热心的朋友告知,现谢了,以后弱国还有问题,再请教AcGePoint3d类转换为ads_point的方法
AcGePoint3d类重载了[]运算符:inline double operator [](unsigned int i) const;
所以,你可以用这样的方法访问AcGePoint3d点的各个坐标值:
AcGePoint3d acge_pt;
double x=acge_pt;
double y=acge_pt;
double z=acge)pt;
然后,你可以利用上面代码获得的坐标值给一个ads_point类(或者说是结构)赋值:
ads_point ads_pt;
ads_pt=x;
ads_pt=y;
ads_pt=z;
当然,你也可以不用acutDistance()函数来计算距离,而这样定义函数(或者重载acutDistance()函数):
#ifndef math.h
#include <math.h>
#endif
double acgeDistance(AcGePoint3d &pt1,AcGePoint3d &pt2)
{
double x1,x2,y1,y2,z1,z2;
double x,y,z;
x1=pt1; x2=pt2; x=x1-x2;
y1=pt1; y2=pt2; y=y1-y2;
z1=pt1; z2=pt2; z=z1-z2;
return sqrt(x*x+y*y+z*z);
}
以上所有代码随手写来,未经调试,也未编写注释代码,有什么不便请告知。
asPnt3d(const double *pnt)参数可以直接使用ads_point
先谢谢了,给了我继续学习的勇气
本帖最后由 作者 于 2003-6-12 23:41:56 编辑你的代码我看懂了,似乎没有什么特别难的技术和引进新的函数,也许是我对AcGe类的一些最基本的操作还很不熟悉,也没有办法,我们这里实在难买到一本书(连arx影子的书都看不到,更不要说好书了),很难进行系统的学习,只能盲目的看帮助,非常感谢你为我回答了一个这么简单的问题(我害怕太简单了没有人回答,呵呵),以后如果还碰到一些问题,我还会问的,我保证,我不会问一个没有经过思考、没有查阅资料以及没有任何意义的问题,也希望大家能帮我这个小弟入门,应为arx确实不比vlisp和vba,他需要的基础太多了,
[此贴子已经被作者于2003-6-12 23:38:02编辑过]
又碰到新的问题了,不知道改如何解决,版主再看看
本帖最后由 作者 于 2003-6-13 20:00:07 编辑上传的一个txt文件里有两个内容,一个属于cpp文件的内容,另一个属于头文件的内容,程序功能也有了简单的说明,程序的其他部分使用appwizzard生成的,我没有做什么改动。我也是刚看完一本c++书的,所以代码有些地方不规范,程序虽然简单,但我想自己通过写些简单的程序入门,然后解决一些工作中的简单问题(本来都已用vlisp解决了,但在某些大批量的处理程序中,太慢了,还出错,想试试arx),希望你有时间看看,谢了
错误原因:
startPoint和endPoint不是AcDbLine类型的成员变量,而是成员函数。在你的程序中,使用pcur_line->endPoint只能访问到该函数的入口地址,而不是执行了该函数!你必须在程序中这样使用:
pcur_line->endPoint() //and so on
例如,在acgeDistance函数中正确的使用直线端点和方法是这样:
dist_real = acgeDistance(pcur_line->endPoint(),pcur_line->startPoint());
哦,问题解决了,
该解决的问题都解决了,能编译出来了,但运行命令时还有一些宜昌,但我想这个问题就让我先好好考虑考虑吧,恩
页:
[1]