明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1762|回复: 6

一个简单的问题,希望大家给予解答,谢谢

[复制链接]
发表于 2003-6-11 21:55:00 | 显示全部楼层 |阅读模式
现在正在吃力的学习arx,在编写我的第一个arx程序时,碰到一个问题,就是如何将一个 AcGePoint3d类型的点转换成ads_point类型的点,应为我要用acutDistance()函数计算两个AcGePoint3d类型的点之间的距离,由于参数不一至,编译失败,在帮助中找了很一会都没有找到,希望那位热心的朋友告知,现谢了,以后弱国还有问题,再请教
发表于 2003-6-12 09:47:00 | 显示全部楼层

AcGePoint3d类转换为ads_point的方法

AcGePoint3d类重载了[]运算符:
inline double operator [](unsigned int i) const;
所以,你可以用这样的方法访问AcGePoint3d点的各个坐标值:
AcGePoint3d acge_pt;
double x=acge_pt[0];
double y=acge_pt[1];
double z=acge)pt[2];
然后,你可以利用上面代码获得的坐标值给一个ads_point类(或者说是结构)赋值:
ads_point ads_pt;
ads_pt[X]=x;
ads_pt[Y]=y;
ads_pt[Z]=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[0];   x2=pt2[0];   x=x1-x2;
  y1=pt1[1];   y2=pt2[1];   y=y1-y2;
  z1=pt1[2];   z2=pt2[2];   z=z1-z2;
  return sqrt(x*x+y*y+z*z);
}
以上所有代码随手写来,未经调试,也未编写注释代码,有什么不便请告知。
发表于 2003-6-12 09:50:00 | 显示全部楼层

asPnt3d(const double *pnt)参数可以直接使用ads_point

 楼主| 发表于 2003-6-12 23:41:00 | 显示全部楼层

先谢谢了,给了我继续学习的勇气

本帖最后由 作者 于 2003-6-12 23:41:56 编辑

你的代码我看懂了,似乎没有什么特别难的技术和引进新的函数,也许是我对AcGe类的一些最基本的操作还很不熟悉,也没有办法,我们这里实在难买到一本书(连arx影子的书都看不到,更不要说好书了),很难进行系统的学习,只能盲目的看帮助,非常感谢你为我回答了一个这么简单的问题(我害怕太简单了没有人回答,呵呵),以后如果还碰到一些问题,我还会问的,我保证,我不会问一个没有经过思考、没有查阅资料以及没有任何意义的问题,也希望大家能帮我这个小弟入门,应为arx确实不比vlisp和vba,他需要的基础太多了,


[此贴子已经被作者于2003-6-12 23:38:02编辑过]
 楼主| 发表于 2003-6-13 20:00:00 | 显示全部楼层

又碰到新的问题了,不知道改如何解决,版主再看看

本帖最后由 作者 于 2003-6-13 20:00:07 编辑

上传的一个txt文件里有两个内容,一个属于cpp文件的内容,另一个属于头文件的内容,程序功能也有了简单的说明,程序的其他部分使用appwizzard生成的,我没有做什么改动。我也是刚看完一本c++书的,所以代码有些地方不规范,程序虽然简单,但我想自己通过写些简单的程序入门,然后解决一些工作中的简单问题(本来都已用vlisp解决了,但在某些大批量的处理程序中,太慢了,还出错,想试试arx),希望你有时间看看,谢了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2003-6-16 08:44:00 | 显示全部楼层

错误原因:

startPoint和endPoint不是AcDbLine类型的成员变量,而是成员函数。
在你的程序中,使用pcur_line->endPoint只能访问到该函数的入口地址,而不是执行了该函数!你必须在程序中这样使用:
pcur_line->endPoint()     //and so on
例如,在acgeDistance函数中正确的使用直线端点和方法是这样:
dist_real = acgeDistance(pcur_line->endPoint(),pcur_line->startPoint());
 楼主| 发表于 2003-6-18 00:32:00 | 显示全部楼层

哦,问题解决了,

该解决的问题都解决了,能编译出来了,但运行命令时还有一些宜昌,但我想这个问题就让我先好好考虑考虑吧,恩
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 16:01 , Processed in 0.185332 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表