start4444 发表于 2020-10-20 10:40:13

纯瞎折腾--直线命令

(defun c:tt5 (/ *error* loop pt1 pt2 ptlst);;直线命令
        (defun *error* (msg)(grtext 1 "*取消*"))
        (setq pt1 (getpoint "\n指定第一点:") ptlst (cons pt1 ptlst) loop t)        
        (while loop
                (initget "U C")
                (setq pt2 (getpoint (if (< 2 (length ptlst)) "\n指定下一点或 [闭合(C)/放弃(U)]:" "\n指定下一点或 [放弃(U)]:") pt1))
                (cond ((= pt2 "U") (if (= 1 (length ptlst)) (setq loop nil) (progn (entdel (entlast)) (setq pt1 (car ptlst) ptlst (cdr ptlst)))));放弃
                          ((= pt2 "C")(if (< 2 (length ptlst)) (progn (entmake (list '(0 . "LINE") (cons 10 pt1) (cons 11 (last ptlst)))) (setq loop nil)) (princ "\n需要点或选项关键字。")));闭合
                          ((= (type pt2) 'LIST)(entmake (list '(0 . "LINE") (cons 10 pt1) (cons 11 pt2))) (setq ptlst (cons pt1 ptlst) pt1 pt2 ));画线
                          ((setq loop nil))
                );cond               
        );while
        (if (= pt2 "U") (progn (princ "\n已经放弃所有线段。") (c:tt5)))
        (princ)       
)

bai2000 发表于 2020-10-20 11:01:38

能不能右击鼠标连续后退?

start4444 发表于 2020-10-20 12:16:05

本帖最后由 start4444 于 2020-10-20 12:18 编辑

bai2000 发表于 2020-10-20 11:01
能不能右击鼠标连续后退?
cond 里面4个选项,1是U ,2是C,3是选点画线,4是其他,包含了鼠标右键,你把4选项改为u的那个项就行了,自己折腾吧

xvjiex 发表于 2020-10-20 13:27:57

仿造pline命令,有创意!!!

cghdy 发表于 2020-10-22 09:35:24

怎么感觉和line命令没啥区别

czb203 发表于 2020-10-25 09:45:24

仿造pline命令,有创意!!!

wang_cn10 发表于 2020-10-25 17:27:48

这跟line命令有什么区别?

wwy810327 发表于 2020-11-10 16:28:45

感觉更像pline

散装牛奶 发表于 2022-3-30 08:49:58

请问能不能加入标注功能?就是每画一条线都自动标长度。

liuhe 发表于 2022-8-31 10:59:58

楼主写的很有意思,
页: [1]
查看完整版本: 纯瞎折腾--直线命令