找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5161|回复: 23

[LISP函数]:让grread也支持捕捉!请测试~

[复制链接]

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-10-6 19:58:09 | 显示全部楼层 |阅读模式

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

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

×
请自行设置好捕捉选项后运行程序~
看看捕捉不一样时会用什么不同效果~

  1. (defun c:test (/ wexit)
  2.   (setq txten (assoc -1 (entget (car (entsel)))))
  3.   (while (not wexit)
  4.     (setq gr  (grread t)
  5.           gr1 (car gr)
  6.     )
  7.     (cond ((= gr1 5)
  8.            (progn
  9.              (setq p (cadr gr))
  10.              (setq p (grreadosnap p))        ;1处。删除这行与不删除效果有什么不一样?
  11.              (entmod (list txten (cons 10 p)))
  12.            )
  13.           )
  14.           ((equal gr '(2 6))                ;F3可设置捕捉值
  15.            (command "_+dsettings" 2)
  16.           )
  17.           (t (setq wexit t))
  18.     )
  19.   )
  20.   (princ)
  21. )

grreadosnap 的调用很方便只要在要产生捕捉的地方
加上一行(setq ?? (grreadosnap ??))就实现了捕捉
如上面的测试(setq p (grreadosnap p))加入后效果就不一样了~
还有下面也是一个例子:
http://www.xdcad.net/forum/showthread.php?s=&threadid=592541
还在测试中~敬请指点~不胜感激~........fsxm
测试好了再发lsp,现在拿出来怕人笑话啦~
请哪个大哥帮了做个动画演示啊~我还不会

本帖被以下淘专辑推荐:

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-10-6 21:22:12 | 显示全部楼层
提两点建议:
1、命令运行过程中不让调整捕捉设置
2、全部捕捉打开,捕捉就没有目标的捕捉
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

 楼主| 发表于 2006-10-6 22:40:17 | 显示全部楼层
谢谢lidejun_55 的指教
1、命令运行过程中不让调整捕捉设置
回:这个马上改正~多谢
2、全部捕捉打开,捕捉就没有目标的捕捉
本人水平有限啦!不好意思~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-6 23:20:37 | 显示全部楼层
最初由 fsxm 发布
[B]谢谢lidejun_55 的指教
1、命令运行过程中不让调整捕捉设置
回:这个马上改正~多谢
2、全部捕捉打开,捕捉就没有目标的捕捉
本人水平有限啦!不好意思~ [/B]

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-10-7 00:21:30 | 显示全部楼层
写了一个简单的移动 Text 测试,试验 Grread 对 Osnap 的支持,命令: Test。鼠标游动过程中F3 为打开/关闭 Osmode 模式,测试中试图支持 Osmode 命令,一直没有做好,索性去掉了。

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

使用道具 举报

发表于 2006-10-7 09:28:40 | 显示全部楼层
想法不错,但是用GRREAD模拟捕捉真的有点牵强,因为CAD给LISP自身的动态的东西实在太少了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-7 10:55:39 | 显示全部楼层
最初由 eachy 发布
[B]写了一个简单的移动 Text 测试,试验 Grread 对 Osnap 的支持,命令: Test。鼠标游动过程中F3 为打开/关闭 Osmode 模式,测试中试图支持 Osmode 命令,一直没有做好,索性去掉了。

下载地址 [url]http://eachy.y... [/B]

提点建议:
1、命令运行过程中不让设置捕捉
2、对最近点捕捉的不行,捕捉全部打开的时候没有目标
3、在没有捕捉到点的时候应该去掉捕捉标志
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

 楼主| 发表于 2006-10-7 12:25:40 | 显示全部楼层
现在
1、命令运行过程中不让设置捕捉
解决好了~按F3可以设置 要关闭可以点命令行下的[对象捕捉]
2、全部捕捉打开,捕捉就没有目标的捕捉
这个问题找到了原因是因为对动态对像也产生了捕捉的原因
解决方法只有手动重设捕捉了如运动对象是直线可以关了end,mid 是text请关了ins对于ner最好不要打开~
3.顺便也做好了没有捕捉到点的时候去掉捕捉标志~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-10-7 14:33:53 | 显示全部楼层
Test 中将 text 换成了 Insert Object,运行如下提示
命令:  TEST
Pick One Insert Object:
[V-上下翻转/H-左右翻转/S-缩放/R-旋转/E-退出]:
Disable Osnap!
[V-上下翻转/H-左右翻转/S-缩放/R-旋转/E-退出]:
Enable Osnap!
[V-上下翻转/H-左右翻转/S-缩放/R-旋转/E-退出]:

标志是插入点标志,也是捕捉点位置,为了看的清楚些,Lisp 毕竟做不到和 ARX 一样。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-10-16 08:12:57 | 显示全部楼层
一个测试,模拟捕捉点显示


[iframe h=600 w=100%]http://www.xdcad.net/forum/showthread.php?postid=3035869#post3035869[/iframe]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-16 22:00:11 | 显示全部楼层
grreadosnap做的很不错,单独扩展了对grread捕捉的显示支持,可以随时拿来用。
不需每次自己写了。
如果方便能否公布源码,我自己添点不同的捕捉显示,和捕捉显示的刻度尺
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

 楼主| 发表于 2006-10-16 22:21:18 | 显示全部楼层
以下是源程序:

  1. (defun grbox (pt / h p1 p2 p3 p4)
  2.   ;;copy from eachy
  3.   (setq        h  (* (/ (getvar "viewsize") (cadr (getvar "screensize")))
  4.               (getvar "pickbox")
  5.            )
  6.         p1 (mapcar '- pt (list h h 0.))
  7.         p2 (mapcar '+ pt (list h (- h) 0.))
  8.         p3 (mapcar '+ pt (list h h 0.))
  9.         p4 (mapcar '+ pt (list (- h) h 0.))
  10.   )
  11.   (grvecs (list 1 p1 p2 1 p2 p3 1 p3 p4 1 p4 p1))
  12. )
  13. (defun grreadosnap (p / osp osmode str)
  14.   ;;grreadosnap ---fsxm 2006.10.06
  15.   (setq osmode (getvar "osmode"))
  16.   (cond        ((= osmode 0))
  17.         ((< osmode 16000)
  18.          (setq str "")
  19.          (foreach x '((1 "_end,")
  20.                       (2 "_mid,")
  21.                       (4 "_cen,")
  22.                       (8 "_nod,")
  23.                       (16 "_qua,")
  24.                       (32 "_int,")
  25.                       (64 "_ins,")
  26.                       (128 "_per,")
  27.                       (256 "_tan,")
  28.                       (512 "_nea,")
  29.                       (2048 "_app,")
  30.                       (4096 "_ext,")
  31.                       (8192 "_par,")
  32.                      )
  33.            (if (/= 0 (logand osmode (car x)))
  34.              (setq str (strcat str (cadr x)))
  35.            )
  36.          )
  37.          (setq osp (osnap p str))
  38.          (redraw)
  39.          (cond (osp
  40.                 (setq p osp)
  41.                 (grbox osp)
  42.                )
  43.          )
  44.         )
  45.   )
  46.   p
  47. )

如果多几个捕捉显示grbox是要多写几个了~
还有(osnap p str)后面的str要一个个来测试~
这样应当可以实现~不过当心
作为在grread中反复调用的效率问题就一直没有去做了~
如果扔一个砖头在这了,引来了大家的好玉也做了一件好事了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-16 23:34:48 | 显示全部楼层
一直以为grread是autolisp中最神奇的函数
很久以前利用grread特性做了个“建筑之门”
http://www.xdcad.net/forum/showthread.php?s=&threadid=416774
由于grread没有支持捕捉显示而大伤脑筋,自己做了显示刻度尺,替代捕捉方式,
万分感谢提供源码,我可以继续捣鼓那扇门了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 10:27 , Processed in 0.460414 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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