找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: chen10jing

[求助] [求助]:倒角时如何实现窗选

[复制链接]

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-8-1 10:15:16 | 显示全部楼层
作为趣味练习,试一试下面这个如何?
  1. (defun C:FF (/ SS)
  2.     (if        (and (setq SS (ssget))
  3.              (= (sslength SS) 2)
  4.         )
  5.         (command "_.fillet"
  6.                  (list (ssname SS 0) '(0 0))
  7.                  (list (ssname SS 1) '(0 0))
  8.         )
  9.     )
  10.     (princ)
  11. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-1 17:53:38 | 显示全部楼层
能否实现象点选一样,选那边留哪边,而不乱呢?就是把点选变成框选。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-8-1 19:31:08 | 显示全部楼层
这就要从两个函数的返回值说起了。
<br>
(entsel)  返回一个双元表,格式是 ( 对象图元名     点取的坐标 )
(ssget)   返回的是一个选择集。
<br>
想要框选还要点位,方法是使用GETPOINT来模拟ssget。
把我在四楼的代码改造后应该可以实现。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-1 20:41:44 | 显示全部楼层
zm184老大,不好意思啊,我们只会用,对程序不懂,还是请老大辛劳一下,把程序改造一下,万分感谢。16楼的那个改进版效果不大呀,还是不能保留选择的那一边,还往老大改进一下,造福社会要。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-8-1 22:15:47 | 显示全部楼层

  1. ;;;=========================================
  2. ;;功能:圆角 框选
  3. ;;日期:zml84 于 2007-08-01 22:00
  4. (defun C:FF (/ TEST PT1 PT2 A B)
  5.     ;;选择对象1
  6.     (setq TEST t)
  7.     (while TEST
  8.         (if (setq PT1 (getpoint "\n选择对象:"))
  9.             (if        (and
  10.                     (setq PT2 (getcorner PT1 " >>>第二点:"))
  11.                     (setq SS (ssget "c" PT1 PT2))
  12.                 )
  13.                 (progn
  14.                     (setq A    (list (ssname SS 0) PT1)
  15.                           TEST NIL
  16.                     )
  17.                     (if        (>= (sslength SS) 2)
  18.                         (setq B (list (ssname SS 1) PT2))
  19.                     )
  20.                 )
  21.             )
  22.             (setq TEST NIL)
  23.         )
  24.     )
  25.     ;;选择对象2
  26.     (setq TEST t)
  27.     (if        (and A (= B NIL))
  28.         (while TEST
  29.             (if        (setq PT1 (getpoint "\n选择对象:"))
  30.                 (if (and
  31.                         (setq PT2 (getcorner PT1 " >>>第二点:"))
  32.                         (setq SS (ssget "c" PT1 PT2))
  33.                     )
  34.                     (setq B    (list (ssname SS 0) PT1)
  35.                           TEST NIL
  36.                     )
  37.                 )
  38.                 (setq TEST NIL)
  39.             )
  40.         )
  41.     )
  42.     ;;圆角操作
  43.     (if        (and A B)
  44.         (command "_.fillet" A B)
  45.     )
  46.     (princ)
  47. ) ;_结束 defun
  48. ;;;=========================================

更多讨论,请参见:http://www.acad.net.cn/viewthread.php?tid=284&extra=page%3D1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2007-8-2 12:56:06 | 显示全部楼层 |阅读模式

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

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

×
zm184的改进程序已经很完美了,用起来非常舒服,有此程序,此生足也。还有三条意见,不知该提不该提:
1、可否像拷贝一样,实现继可点选,又可窗选,如果其中一条线较短,框选是不好选的;
2、可否让它在选择时,像其它命令一样,选中后变成虚线,以显示此线已被选中,由于没有变成虚线,不知选中否,结果其实已经选中。
3、单条线分别选择时,不会出错了,但双线同时选择时,有时会出错,把想留下的线剪切掉了,此问题好像很难解决。
如果实现了这三点,就非常非常完美了。
请老大不要见怪,如果实现这二点有难度,就不勉为其难了。感谢中。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-8-2 13:36:20 | 显示全部楼层

  1.   [FONT=courier new]
  2. (defun c:test (/ a b c d e f fence1 fence2 g h i j lst1 lst2 rad)
  3.   (tt-begin '(("cmdecho" 0) ("osmode" 0)))
  4.   (princ "\n一次FILLET两组非平行线. 版权所有:人无完人,蛋有完蛋.")
  5.   (setq a (upoint 1 "" "\n\t請選擇第一個FENCE的第一個點" a nil)
  6.         b (upoint 1 "" "\n\t請選擇第一個FENCE的第二個點" b a)
  7.         c (upoint 1 "" "\n\t請選擇第二個FENCE的第一個點" c nil)
  8.         d (upoint 1 "" "\n\t請選擇第二個FENCE的第二個點" d c)
  9.         rad (ureal 4 "" "\n\t請輸入FILLET的半徑" rad)
  10.   )
  11.   (if (numberp rad)
  12.     (setvar "FILLETRAD" rad)
  13.   )
  14.   (if (and
  15.         (setq e (ssget "F" (list a b)))
  16.         (setq f (ssget "F" (list c d)))
  17.       )
  18.     (progn
  19.       (setq fence1 (txt-mkline a b)
  20.             fence2 (txt-mkline c d)
  21.             lst1 (txt-obj-int-ss fence1 e)
  22.             lst2 (txt-obj-int-ss fence2 f)
  23.       )
  24.       (command "erase" fence1 fence2 "")
  25.       (setq i (min
  26.                 (sslength e)
  27.                 (sslength f)
  28.               )
  29.       )
  30.       (setq j 0)
  31.       (while (<= j i)
  32.         (setq g (list (ssname e j) (nth j lst1))
  33.               h (list (ssname f j) (nth j lst2))
  34.         )
  35.         (command "FILLET" g h)
  36.         (setq j (1+ j))
  37.       )
  38.     )
  39.   )
  40.   (tt-end)
  41. )

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

使用道具 举报

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

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-8-2 15:01:17 | 显示全部楼层
楼上的代码中,好多都是自定义的函数啊!
楼主的问题,请见:
http://www.acad.net.cn/viewthrea ... tra=page%3D1#pid944
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-8-2 22:28:16 | 显示全部楼层
zml84 改的支持虚显不错,但是最好有动态显示并取消捕作,支持倒多个就象那F的M选项,不用倒一个就退出.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-3 11:44:02 | 显示全部楼层
程序已经越改越好用了,各人有各人的要求,满足所有人的需求,那这个程序就太完美了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-3 11:51:38 | 显示全部楼层
程序已经越改越好用了,各人有各人的要求,满足所有人的需求,那这个程序就太完美了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-8-3 12:18:42 | 显示全部楼层
应 26 楼的要求,代码改进如下:
1、在执行时,暂时关闭对象捕捉设置;
2、实现连续执行;
3、修正了一次框选两个对象时,“把想留下的线剪切掉了”的错误。
<br>
代码位置(11楼):
http://www.acad.net.cn/viewthrea ... tra=page%3D1#pid952
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-8-3 12:45:10 | 显示全部楼层
应 26 楼的要求,代码改进如下:
1、在执行时,暂时关闭对象捕捉设置;
2、实现连续执行;
3、修正了一次框选两个对象时,“把想留下的线剪切掉了”的错误。
<br>
代码位置(11楼):
http://www.acad.net.cn/viewthrea ... tra=page%3D1#pid952
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 04:14 , Processed in 0.424135 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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