找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1425|回复: 5

[求助]:自定义实体的move过程的奇怪现象

[复制链接]
发表于 2008-5-15 12:02:34 | 显示全部楼层 |阅读模式

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

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

×
当自定义实体被用户使用move命令移动的时候,在还没有点击确定位置的时候,实体首先掉用transformBy,然后调用worldDraw绘制图形显示,问题如下:我的实体派生自AcDbPolyLine,当实体的全局线宽为0时实体在move的过程中表现正常,当全局线宽不为0时,在move的过程中我发现实体的移动要比实际移动的远,后来发现在worldDraw函数的进口和出口之间transformBy竟然被多次调用,而线宽为0时,在worldDraw函数的进口和出口之间transformBy是不会被调用的。这是什么原因?我在worldDraw函数里仅仅调用如下例程:
AcDbPolyline::worldDraw(mode);
mode->geometry().draw(&msPl);//msPl为一AcDbPolyline成员
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2008-5-15 13:25:23 | 显示全部楼层
上传工程,我给你看看
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-15 23:09:13 | 显示全部楼层
该工程含一个arx主工程和一个dbx依赖工程,入口命令为testpl,该命令生成一个自定义实体,用户若修改其全局线宽不为0时,再执行move命令,这时可见“竖线”偏离的比想像中要远,中心点计算也不对,当全局线宽设置为0时,行为恢复正常。然而,在通过夹点移动实体时不论全局线宽是否为0,行为均正常。另外,在move的过程中可以在命令行的调式输出可见在worldDraw函数的入口和出口之间transform被调用多次!!难以理解,望高手指点!感谢!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-15 23:10:12 | 显示全部楼层
运行例子图片:
补充说一下,执行move命令时只是在移动鼠标的过程中图形显示不对,当用户确定移动点后,图形即恢复正常。另外,当把基类worldDraw函数至于最后,例如上述工程中的worldDraw例程如下:
        mode->geometry().draw(&m_pl);//竖线
        AcDbPolyline::worldDraw(mode);//方框线
则图形显示正常,但中心点其实不对,你可以从由(0,0)点至中心的辅助线看出!!(上面的工程代码不收爱心币,不用担心花钱啦!希望得到你们更多的帮助!)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2008-5-21 10:36:29 | 显示全部楼层
谢谢binbin,我下载了你修改后的工程,确实是可以,这个问题我也发现了就是将基类的worlddraw函数AcDbPolyline::worldDraw(mode);至于最后一行,但是不知道你有没有发现当该行至于第一行时就不行,按理说和基类的调用次序应该没有什么关系啊。感谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 06:27 , Processed in 0.236921 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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