找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1003|回复: 11

[ARX程序]: 交点的问题请教

[复制链接]
发表于 2005-11-3 11:37:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我自己做了一个实体,重写了getGripPoints和moveGripPointsAt方法。但我有个同事在用时提出,当点击一个交点然后拖动后,AutoCAD的命令行出现的命令是streth,因为图形没有任何变化只是位置变化了一下,他问我说为什么出来的命令不是move?我试了一下在AutoCAD中画了一个圆然后拖动圆心交点但命令行出来的仍旧是streth。但是圆只是被移动了位置而比例没任何变化。
    我查了一下资料知道海域两个方法getStretchPoints和moveStretch PointsAt。我重写了一下发现程序根本不执行这两个方法。
    现在我很迷惑,getStretchPoints和moveStretch PointsAt这两个方法什么时候使用?move交点和streth交点是否根本没法区分?getGripPoints和moveGripPointsAt在其中到底扮演了什么角色?如何让命令行中出现正确的move信息?
    请各位高手不吝赐教,我在这谢过了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-11-3 17:37:43 | 显示全部楼层
moveGripPointsAt和moveStretch PointsAt是有区别的
前者能对夹点和拉伸点进行拖动,夹点是一个大的点集,包括拉伸点和控制点,
比如一个圆,他有5个夹点(包括圆心点),而拉伸点只有4个,当采用moveGripPointsAt时系统会判断:
如果是圆心,他就采用移动方式,这时调用的函数是tranformBy()对整体进行矩阵变换,
如果不是圆心就以拉伸方式调用moveGripPointsAt()。
而moveStretch PointsAt()内部不做任何多余的事情,只是简单调用一次moveGripPointsAt()。
所以当你重写这两个函数,最终还是在调用基类的moveGripPointsAt()函数,而在这个基类函数中就输出你说的命令行的那种提示,如果你不要这样的提示,你就不要调用这个基类函数,自己采用矩阵变换去写移动和拉伸的处理。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-8 12:02:34 | 显示全部楼层
但我还有个疑问,当画一个圆后,拖动它圆周上得4个夹点,命令行显示得相应命令是stretch,当拖动它圆心得夹点后命令行得相应命令依然是stretch,那这5个夹点不是一样么?是不是有办法让圆心得这个夹点拖动时显示move呢?谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-8 17:41:00 | 显示全部楼层
我也研究过了,结果确实如你所说的。原因我是知道的,你想:
当你拖动圆周点时,你根本没有去执行任何命令,你也没有主动告诉CAD你要执行哪一个命令,那么圆为何能响应你的拖动呢,那是CAD自己的编辑反应器到了一个消息:用户按下了鼠标左键,并且在该点处有实体,于是它就调用相关的函数,同时它又判断出这个点距离实体的某个夹点很接近,于是认为用户是要拉伸实体,所以他就执行他的默认操作,在这个操作里就有向命令行显示如上信息的代码。如果你也采用钩子函数去捕捉这个消息,但那也许是做不到的,你能捕捉到这个消息,但是在在CAD先捕捉到后继续往下传的时候得到的。这时CAD以去调用了它的默认操作了。
一个不是很好的办法:
在wordDraw函数中加入以下代码:
acedGetVar("LASTPROMPT",&rb);
    rb.restype=RTSTR;
    CString retStr=rb.resval.rstring;
    if(retStr=="** STRETCH **")
    {
      acutPrintf("\n正在调节曲线...");
      acutPrintf("\n正在调节曲线...");
      acutPrintf("\n正在调节曲线...");
    }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-9 10:14:52 | 显示全部楼层

谢谢高手,还有一个问题想请教

我在用acedGetString时想让该方法来判断我给出的字符串是否是我需要的格式,不知道这是否能实现?谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-9 11:48:17 | 显示全部楼层
那你先把你的要求格式说来听听
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-9 15:50:57 | 显示全部楼层
sorry,my computer can't output the chinese suddenly .the format similar as  
number,number,number (e.g. 10,23.9,-3.489)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-9 16:10:16 | 显示全部楼层
你自己一定要严格将格式定义分析清楚才能去分析判断规则,要不是没法做的,你现在给的说明不了任何问题
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-9 20:24:35 | 显示全部楼层
我需要输入一个3d向量,所以格式是3个数值加逗号格开。我并不清楚怎么做所以你能给我一段类似的例程么?谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 13:18:50 | 显示全部楼层
那你的问题不是需要一个格式化的字符串,而是一个3D向量,
那这样好了:
你用一个获取点的函数:acedgetpoint(pt0,"请输入一个向量:",pt1);
其中把pt0设置为(0,0,0),这样pt1就是一个满足你需要的向量了,
如果函数返回失败证明用户输入格式不正确。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-12 10:53:14 | 显示全部楼层
路过
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-12 10:54:55 | 显示全部楼层
这些我也不是很懂啊,久没有接触了……
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-23 02:26 , Processed in 0.342148 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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