找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2702|回复: 35

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

[复制链接]
发表于 2007-7-30 23:40:26 | 显示全部楼层 |阅读模式

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

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

×
请教,倒角时如何能实现窗选,点选是一件非常麻烦的事情,如果能实现窗选,就会快很多了,也方便很多。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-31 07:59:33 | 显示全部楼层

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

最初由 chen10jing 发布
[B]请教,倒角时如何能实现窗选,点选是一件非常麻烦的事情,如果能实现窗选,就会快很多了,也方便很多。 [/B]

  1.   [FONT=courier new]
  2. ;;;用FENCE
  3. (defun c:ff (/ a b c d e f g h i j k z)
  4.   
  5.   (princ "\n一次FILLET两组非平行线. ")
  6.   (initget 7)
  7.   (setq a (getpoint "\n請選擇第一個FENCE的第一個點:"))
  8.   (initget 7)
  9.   (setq b (getpoint a "\n請選擇第一個FENCE的第二個點:"))
  10.   (initget 7)
  11.   (setq c (getpoint "\n請選擇第二個FENCE的第一個點:"))
  12.   (initget 7)
  13.   (setq d (getpoint c "\n請選擇第二個FENCE的第二個點:"))
  14.   (setq rad (getreal "\n請輸入FILLET的半徑:"))
  15.   (if (numberp rad)
  16.     (command "fillet" "r" rad "")
  17.   )
  18.   (setq e (ssget "F" (list a b)))
  19.   (setq f (ssget "F" (list c d)))
  20.   (setq i (min
  21.             (sslength e)
  22.             (sslength f)
  23.           )
  24.   )
  25.   (setq j 0)
  26.   (while (<= j i)
  27.     (setq g (ssname e j)
  28.           h (ssname f j)
  29.     )
  30.     (command "FILLET" g h)
  31.     (setq j (1+ j))
  32.   )
  33.   
  34. )
  35.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-31 09:20:34 | 显示全部楼层
2楼代码未实现楼主的要求。
2楼代码在结构上可以改进的如下:

  1. ;;;用FENCE
  2. (defun C:FF (/ A B C D E F G H I J K Z)
  3.     (princ "\n一次FILLET两组非平行线. ")
  4.     (if        (and
  5.             (not (initget 7))
  6.             (setq A (getpoint "\n請選擇第一個FENCE的第一個點:"))
  7.             (not (initget 7))
  8.             (setq B (getpoint A "\n請選擇第一個FENCE的第二個點:"))
  9.             (not (initget 7))
  10.             (setq C (getpoint "\n請選擇第二個FENCE的第一個點:"))
  11.             (not (initget 7))
  12.             (setq D (getpoint C "\n請選擇第二個FENCE的第二個點:"))
  13.             (setq RAD (getreal "\n請輸入FILLET的半徑:"))
  14.         )
  15.         (progn
  16.             ;;设置圆角半径
  17.             (if        (numberp RAD)
  18.                 ;;(command "fillet" "r" RAD "")
  19.                 (setvar "FILLETRAD" RAD)
  20.             )
  21.             (setq E (ssget "F" (list A B)))
  22.             (setq F (ssget "F" (list C D)))
  23.             (setq I (min
  24.                         (sslength E)
  25.                         (sslength F)
  26.                     )
  27.             )
  28.             (setq J 0)
  29.             ;;(while (<= J I)
  30.             (repeat I
  31.                 (setq G        (ssname E J)
  32.                       H        (ssname F J)
  33.                 )
  34.                 (command "_.FILLET" G H)
  35.                 (setq J (1+ J))
  36.             )
  37.         )
  38.     )
  39.     (progn)
  40. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-31 10:04:12 | 显示全部楼层

  1. ;;;=========================================
  2. ;;;功能:框选 圆角
  3. ;;;日期:zml84 于 2007-07-31
  4. (defun C:FF (/ PT1 PT2 SS)
  5.     (while (setq PT1 (getpoint "\n选择对象:"))
  6.         (if (and (setq PT2 (getcorner PT1 " >>>第二点:"))
  7.                  (setq SS (ssget "c" PT1 PT2))
  8.                  (= (sslength SS) 2)
  9.             )
  10.             (command "_.fillet" (ssname SS 0) (ssname SS 1))
  11.             (princ "\n请选择两个可以圆角的对象。")
  12.         )
  13.     ) ;_结束 while
  14.     (princ)
  15. ) ;_结束 defun
  16. ;;;=========================================

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

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

发表于 2007-7-31 11:53:44 | 显示全部楼层
建议:
不仅要能实现窗选,而且也能实现多选(一次选择多个角),对倒角和圆角都有用。也能对多段线产生此效果。
实际上CAD的倒角和圆角命令还不够方便,虽然有了M(多个)模式.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-31 13:08:25 | 显示全部楼层
各位的智慧真不错,真神人也,但2、3楼主的程序不能实现一次多选,而且对半径不能保持默认值或上次输入的值,造成每次都要输入;而4楼的程序只能一次多选,不能单选。还是集大家智慧,包括5楼的建议,大家设计出一个好程序,方便大家。再次表示感谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-31 17:45:13 | 显示全部楼层
一次窗选多个对象,会使欲操作的对象模糊不清的。估计这也是ACAD只提供点选的原因吧。

楼上所言“4楼的程序只能一次多选,不能单选。”,请测试后再回答。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-31 19:11:41 | 显示全部楼层
一次窗选多个对象,会使欲操作的对象模糊不清的。估计这也是ACAD只提供点选的原因吧。

楼上所言“4楼的程序只能一次多选,不能单选。”,请测试后再回答。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-31 19:29:42 | 显示全部楼层
zm184老大不要生气,不知道是不是我的cad出了问题,用这个程序时,只能二条线一起窗选才有用,如果单独选择每条线,就没有用了,好像选择不了一样。不知道问题出在哪里。请老大帮帮忙。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-31 19:35:01 | 显示全部楼层
zm184老大不要生气,不知道是不是我的cad出了问题,用这个程序时,只能二条线一起窗选才有用,如果单独选择每条线,就没有用了,好像选择不了一样。不知道问题出在哪里。请老大帮帮忙。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-31 20:40:18 | 显示全部楼层
可能我的理解有误。
你要的效果可是这样:

  1. (defun C:FF (/ SS)
  2.     (if        (and (setq SS (ssget))
  3.              (= (sslength SS) 2)
  4.         )
  5.         (command "_.fillet" (ssname SS 0) (ssname SS 1))
  6.     )
  7.     (princ)
  8. ) ;_结束 defun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-31 21:03:59 | 显示全部楼层
zml84 老大,非常感谢,我要的就是这个效果,实际上用倒角是比较少的,用的更多的是使二条不相交的线交于一点,或者是十字相交的线相互剪切,此程序实现这一功能着实完美,再次表示感谢。


zml84 老大,很高兴的使用了此程序,突然发现有一点美中不足,就是选择的时候,有时候本来是想保留这边,但结果总是把这边剪切掉,无论怎么选择总是剪切我想要保留的那一边,这是什么原因,还往老大帮帮忙。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-31 22:17:29 | 显示全部楼层
这就是框选的缺点了.
如果没有点选,cad就按默认保留长度比较长的一边
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-31 22:32:45 | 显示全部楼层
很感谢zml84    大家不妨到他的博客看下,的解有好多好东东
http://zml84.blog.sohu.com/
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-8-1 02:38:08 | 显示全部楼层
1



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 11:46 , Processed in 0.430358 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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