找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: 裸奔的花猫

[原创] 模拟天正动态粘贴

[复制链接]

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-6-19 13:37:17 | 显示全部楼层
裸奔的花猫 发表于 2013-6-19 12:58
长老,这个是用GRVECS虚幻了一个物体,真正的物体没有被拖动,所以非常快,然后对虚拟物体进行变换,视觉 ...

难道ARX没有和grvecs对应的函数?不懂ARX,上网查了一下,似乎有一个对应的acedGrVecs函数,不知有没有用?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-19 13:52:47 | 显示全部楼层
本帖最后由 wowan1314 于 2013-6-20 13:03 编辑

我的课题被你实现了!  牛。

坐等源码学习。呵呵
  1. (DEFUN C:T1 nil
  2.   (SETQ SS (SSGET ":L") PT (getpoint))
  3.   (setq size (* (getvar "viewsize") 2))
  4.   (command "_.copy" SS "" "0,0" "@")
  5.   (setq oldos (getvar "osmode"))
  6.   (setvar "osmode" 0)(setvar "cmdecho" 0)
  7.   (PRINC "\n 指定插入点或A旋转s上下镜像D左右镜像+放大一倍-缩小一倍T改基点")
  8.   (while PT
  9.     (setq BB (grread T 5 1))
  10.     (cond
  11.       ((= (car BB) 5) (SETQ PT1 (CADR BB))    (redRaw)
  12.          (GRVECS
  13.                (LIST -1 PT (mapcar '+ (LIST size 0 0) PT)
  14.                      -1 PT (mapcar '-  PT(LIST size 0 0))
  15.                      -1 PT (mapcar '-  PT(LIST  0 size 0))
  16.                      -1 PT (mapcar '+ (LIST  0 size 0) PT)
  17.                )
  18.           )
  19.          (COMMAND "MOVE" SS  "" PT PT1)(SETQ PT PT1)
  20.       )
  21.       ((= (car BB) 3) (SETQ PT NIL))
  22.       ((member BB '((2 97)(2 65)))
  23.        (COMMAND "ROTATE" SS "" PT1 90)
  24.       )
  25.       ((member BB '((2 115)(2 83)))
  26.        (COMMAND "mirror" SS "" PT1 (mapcar '- pt1 '(1 0)) "Y")
  27.       )
  28.       ((member BB '((2 100)(2 68)))
  29.        (COMMAND "mirror" SS "" PT1 (mapcar '- pt1 '(0 1)) "Y")
  30.       )
  31.       ((member BB '((2 43)(2 61)))
  32.        (COMMAND "scale" SS "" PT1 "2")
  33.       )
  34.       ((member BB '((2 116)(2 84)))
  35.        (setvar "osmode" oldos)(redRaw)
  36.        (setq pt (getpoint))
  37.        (setvar "osmode" 0)
  38.       )
  39.       ((equal BB '(2 45))
  40.        (COMMAND "scale" SS "" PT1 "0.5")
  41.       )
  42.     )
  43.   )
  44. (setvar "osmode" oldos)(redRaw)(princ)
  45. )
123.gif

点评

葛老,如果用这种方式的话走到尽头就会出现我说的捕捉自身问题了  详情 回复 发表于 2013-6-20 11:44
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

发表于 2013-6-19 18:20:40 | 显示全部楼层
Love-Lisp 发表于 2013-6-19 12:31
楼主不是来这里炫耀的吧?程序没看着到也罢了,连个思路也没有说明!

还是你胆大点。。。。。这话我可不敢说。。。
源码放不放是人家的权力吧。。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-19 19:16:07 | 显示全部楼层
对ARX,用 Jig 肯定是最佳的选择,高飞鸟版主有个ARX动态的。不过Jig也是要一个个实体写,用Lisp对选择集操作一个个Transformby可能会有延迟吧,把选择集临时做个块,动态的时候对块操作,点下鼠标删除块再一次变换选择集,不过用块的话,里面的Text可能显示会有小瑕疵(比如Mirror)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-19 21:15:20 来自手机 | 显示全部楼层
本帖最后由 裸奔的花猫 于 2013-6-19 21:41 编辑

先说下
这个程序的思路:
1.先把选择集的实体模拟成点表
2、用GRVERS将实体模拟出来一个虚拟影像
3、用矩阵对虚拟影像进行变换,过程当中用GRREAD模拟捕捉,这样可以很好的避免捕捉自身问题
4、然后记录过程,作用与实体
整个过程都是虚拟的,因为大家看到的只是虚幻一场,所以速度非常快
这类的程序主要用作做方案用,要不停的变换一个图块的位置、旋转,来做出合适的位置判断,所以模拟起来没必要非要每个东西都显示的那么精确,主要还是看轮廓断定排放的方向,所以就想到了这个办法,因为GRVERS正好是支持矩阵的。
等程序测试好了,发代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-19 23:05:36 来自手机 | 显示全部楼层
grvers和背景色匹配以及擦除也有问题,你换个背景色试试,现在的背景色可以用真彩色的来自: Android客户端
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 146个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-6-20 11:25:14 | 显示全部楼层
楼主,你现在的代码都支持那些实体模拟成点表了?

这些实体有吗?

1、文字
2、尺寸
3、图块
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 11:39:31 | 显示全部楼层
为了提高速度,文字都是以BOX形式
图块肯定要支持,演示中的那个就是图块
尺寸就以线表示
st788796
redraw怎么会闪啊,一点都不会闪,你说得是REGEN吧
Free-Lancer
我测试GRVERS效果很好啊,物体颜色可以在获取物体模拟点表的时候直接把颜色添加进去
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 11:44:13 | 显示全部楼层
wowan1314 发表于 2013-6-19 13:52
我的课题被你实现了!  牛。

坐等源码学习。呵呵

葛老,如果用这种方式的话走到尽头就会出现我说的捕捉自身问题了

点评

是呀!没办法。 我就出个捕捉自身的当绿叶来衬托你撒。  发表于 2013-6-20 12:55
你说的捕捉自身是什么情况?  详情 回复 发表于 2013-6-20 12:16
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-6-20 12:16:39 | 显示全部楼层
裸奔的花猫 发表于 2013-6-20 11:44
葛老,如果用这种方式的话走到尽头就会出现我说的捕捉自身问题了

你说的捕捉自身是什么情况?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

发表于 2013-6-20 12:25:48 | 显示全部楼层
本帖最后由 LoveArx 于 2013-6-20 12:29 编辑

楼主的想法很牛,但概念还是要纠正下。

不管使用GRDRAW也好,还是GRVEC也好,这些都是属于在屏幕上绘制向量,这些LISP函数最终都是要调用ARX的底层核心库的,所以你不能说比ARX要怎么怎么样。

ARX的AcEdJig类,就是处理拖动的类,拖动实体并不是实体也跟着移动,而是每个AcDbEntity对象本身都有worldDraw方法把实体自身绘制到屏幕上,也是绘制向量的最底层操作。拖动的过程中,实体调用自身的worldDraw方法显示出来,而实体并不跟着移动,所以说ARX是绝对不会“卡”的。写的代码不好的时候,会在拖动中调用update时候的处理有问题,不该显示的时候给update了。比如具体应用时候,鼠标没到指定点的时候要求实体是不变的时候,而不好的代码没次鼠标变换都跟着update,这样就会造成你说的“闪”的问题。这和ARX无关。
严格来说,LISP模拟的要肯定慢于ARX的,因为楼主的代码最开始的时候要把实体变成点表,这个要时间的,而且还有一些不方面用点表模拟的实体。

ARX是实体直接调用自身的worldDraw方法来绘制自己,不存在模拟情况,支持所有实体。

点评

一句支持所有实体!深深的打击了我lisp的心。 为什么lisp仅有个grread还如此的单薄  发表于 2013-6-20 13:31
感谢指点,JIP是个梦想,正像你说的那样,模拟点的过程用过LISP写速度还是慢(复杂的实体),如果用ARX模拟速度肯定会块N倍  详情 回复 发表于 2013-6-20 13:24
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-20 13:14:35 | 显示全部楼层
本帖最后由 wowan1314 于 2013-6-20 13:17 编辑

我来演示下捕捉自身情况的代码。。。用以衬托楼主的强大。!
  1. (DEFUN C:T1 nil
  2.   (SETQ SS (SSGET ":L") PT (getpoint))
  3.   (setq size (* (getvar "viewsize") 2))
  4.   (command "_.copy" SS "" "0,0" "@")
  5.   (setq oldos (getvar "osmode"))
  6.   (setvar "osmode" 0)(setvar "cmdecho" 0)
  7.   (PRINC "\n 指定插入点或A旋转s上下镜像D左右镜像+放大一倍-缩小一倍T改基点")
  8.   (while PT
  9.     (setq BB (grread T 5 1))
  10.     (cond
  11.       ((= (car BB) 5) (SETQ PT1 (CADR BB))    (redRaw)
  12.            (if
  13.              (setq
  14.                nearpt (osnap PT1 "_END,_MID,INT")
  15.              )                                ; 取得最近的捕捉点
  16.               (PROGN
  17.                 (setq g2 nearpt)
  18.                 (setq h          (/ (getvar "viewsize")
  19.                              (cadr (getvar "screensize"))
  20.                           )
  21.                       d          (getvar "pickbox")
  22.                       lst (list (* d h) (* (- d 0.5) h) (* (+ d 0.5) h))
  23.                       ptx (car g2)
  24.                       pty (cadr g2)
  25.                 )
  26.                 (foreach x lst
  27.                   (setq        ptt1 (list (- ptx x) (- pty x))
  28.                         ptt2 (list (+ ptx x) (- pty x))
  29.                         ptt3 (list (+ ptx x) (+ pty x))
  30.                         ptt4 (list (- ptx x) (+ pty x))
  31.                   )
  32.                   (grvecs (list 2 ptt1 ptt2 ptt2 ptt3 ptt3 ptt4 ptt4 ptt1))
  33.                 )
  34.               )
  35.            )
  36.          (GRVECS
  37.                (LIST -1 PT (mapcar '+ (LIST size 0 0) PT)
  38.                      -1 PT (mapcar '-  PT(LIST size 0 0))
  39.                      -1 PT (mapcar '-  PT(LIST  0 size 0))
  40.                      -1 PT (mapcar '+ (LIST  0 size 0) PT)
  41.                )
  42.           )
  43.          (COMMAND "MOVE" SS  "" PT PT1)(SETQ PT PT1)
  44.       )
  45.       ((= (car BB) 3) (SETQ PT NIL))
  46.       ((member BB '((2 97)(2 65)))
  47.        (COMMAND "ROTATE" SS "" PT1 90)
  48.       )
  49.       ((member BB '((2 115)(2 83)))
  50.        (COMMAND "mirror" SS "" PT1 (mapcar '- pt1 '(1 0)) "Y")
  51.       )
  52.       ((member BB '((2 100)(2 68)))
  53.        (COMMAND "mirror" SS "" PT1 (mapcar '- pt1 '(0 1)) "Y")
  54.       )
  55.       ((member BB '((2 43)(2 61)))
  56.        (COMMAND "scale" SS "" PT1 "2")
  57.       )
  58.       ((member BB '((2 116)(2 84)))
  59.        (setvar "osmode" oldos)(redRaw)
  60.        (setq pt (getpoint))
  61.        (setvar "osmode" 0)
  62.       )
  63.       ((equal BB '(2 45))
  64.        (COMMAND "scale" SS "" PT1 "0.5")
  65.       )
  66.     )
  67.   )
  68. (setvar "osmode" oldos)(redRaw)(princ)
  69. )
321.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 13:24:44 | 显示全部楼层
LoveArx 发表于 2013-6-20 12:25
楼主的想法很牛,但概念还是要纠正下。

不管使用GRDRAW也好,还是GRVEC也好,这些都是属于在屏幕上绘制 ...

感谢指点,JIP是个梦想:lol,正像你说的那样,模拟点的过程用过LISP写速度还是慢(复杂的实体),如果用ARX模拟速度肯定会块N倍
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 04:22 , Processed in 0.457025 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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