明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4396|回复: 16

怎么去掉点选模式,输入距离,直接批量框选哪边就延长那边

[复制链接]
发表于 2019-3-29 23:22:57 | 显示全部楼层 |阅读模式
3明经币
(defun c:vv( / d)
  (setq d (getdist "\n延伸长度:"))            
  (if (and (setq ss (ssget '((0 . "LINE,ARC,ELLIPSE,*POLYLINE"))))
              (setq pt (getpoint "\n延伸方向:"))            
      )
    (progn
      (command "lengthen" "de" d)
      (repeat (setq n (sslength ss))
      (command (list (setq e (ssname ss (setq n (1- n)))) pt))           
      )
      (command "")
    )
  )
  (princ)
)

最佳答案

查看完整内容

把if换成while就行了
发表于 2019-3-29 23:22:58 | 显示全部楼层
把if换成while就行了
  1. (defun c:vv (/ D E N P0 P1 SS)
  2.   (setq d (getdist "\n延伸长度:"))
  3.   (while (and (setq p0 (getpoint "\n框选对象第一对角点(会以此点做为延伸方向):"))
  4.            (setq p1 (getcorner p0 "\n框选对象另一对角点:"))
  5.            (setq ss (ssget "c" p0 p1 '((0 . "LINE,ARC,ELLIPSE,*POLYLINE"))))
  6.          )
  7.     (progn
  8.       (command "lengthen" "de" d)
  9.       (repeat (setq n (sslength ss))
  10.         (command (list (setq e (ssname ss (setq n (1- n)))) p0))
  11.       )
  12.       (command "")
  13.     )
  14.   )
  15.   (princ)
  16. )


回复

使用道具 举报

发表于 2019-3-30 16:22:45 | 显示全部楼层
  1. (defun c:vv (/ D E N P0 P1 SS)
  2.   (setq d (getdist "\n延伸长度:"))
  3.   (if
  4.     (and (setq p0 (getpoint "\n框选对象第一对角点(会以此点做为延伸方向):"))
  5.          (setq p1 (getcorner p0 "\n框选对象另一对角点:"))
  6.          (setq ss (ssget "c" p0 p1 '((0 . "LINE,ARC,ELLIPSE,*POLYLINE"))))
  7.     )
  8.      (progn
  9.        (command "lengthen" "de" d)
  10.        (repeat (setq n (sslength ss))
  11.          (command (list (setq e (ssname ss (setq n (1- n)))) p0))
  12.        )
  13.        (command "")
  14.      )
  15.   )
  16.   (princ)
  17. )
回复

使用道具 举报

发表于 2019-3-30 21:45:38 | 显示全部楼层

这个程序不错,如果加上记忆功能更完美!!
回复

使用道具 举报

 楼主| 发表于 2019-3-31 10:35:16 | 显示全部楼层

怎么 加个循环,可以连继续 框选 下去就完美了
回复

使用道具 举报

 楼主| 发表于 2019-4-1 13:29:31 | 显示全部楼层
漂亮,要的就是这个效果
回复

使用道具 举报

发表于 2019-4-1 19:05:35 | 显示全部楼层
伤心了啊,代码我写出来,别人在我上面改一句,别人的还成最佳答案了
回复

使用道具 举报

 楼主| 发表于 2019-4-3 17:42:36 | 显示全部楼层
琴剑江山_10184 发表于 2019-4-1 19:05
伤心了啊,代码我写出来,别人在我上面改一句,别人的还成最佳答案了

哥,我错了 ,你看一下代码还有地方要完善的没,我后面就顶你
回复

使用道具 举报

发表于 2019-4-6 13:57:15 | 显示全部楼层
本帖最后由 1028695446 于 2019-4-6 14:01 编辑
纵横八方 发表于 2019-4-3 17:42
哥,我错了 ,你看一下代码还有地方要完善的没,我后面就顶你
;;我这个是在前面2个大师的基础上,优化的,因为上2位没有注意用户体验,比如选点的时候直接按了空格,没有选到点,程序依然会让用户继续选第二个点,然后选物体,之后报错,这种交互体验极差的:P
;;定距延长
(defun c:y1 (/ D E N P0 P1 SS)
  (setq d (getdist "\n延伸长度:"))
  (if(and
                        (if d (setq p0 (getpoint "\n框选对象第一对角点(会以此点做为延伸方向):")))
                        (if p0 (setq p1 (getcorner p0 "\n框选对象另一对角点:")))
                        (if (and p0 p1)(setq ss (ssget "c" p0 p1 '((0 . "LINE,ARC,ELLIPSE,*POLYLINE")))))
    )
                (progn
                        (command "lengthen" "de" d)
                        (repeat (setq n (sslength ss))
                                (command (list (setq e (ssname ss (setq n (1- n)))) p0))
                        )
                        (command "")
                )
  )
  (princ)
)
;;定距延长,继续框选
(defun c:y2 (/ D E N P0 P1 SS)
  (setq d (getdist "\n延伸长度:"))
  (while                (and
                                                        (if d (setq p0 (getpoint "\n框选对象第一对角点(会以此点做为延伸方向):")))
                                                        (if p0 (setq p1 (getcorner p0 "\n框选对象另一对角点:")))
                                                        (if (and p0 p1)(setq ss (ssget "c" p0 p1 '((0 . "LINE,ARC,ELLIPSE,*POLYLINE")))))
                                                )
                (progn
                        (command "lengthen" "de" d)
                        (repeat (setq n (sslength ss))
                                (command (list (setq e (ssname ss (setq n (1- n)))) p0))
                        )
                        (command "")
                )
                (setq p0 nil p1 nil ss nil)
  )
  (princ)
)
回复

使用道具 举报

 楼主| 发表于 2019-4-6 16:55:43 来自手机 | 显示全部楼层
漂亮!多谢大师们优化
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-23 10:35 , Processed in 0.184193 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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