求大神修改下这个线宽加粗,这个程序每次执行选择了一个后就不能再选其他了
求大神修改下,下面程序选择一个后就不能执行了,求改成可以多选(defun c:XKJC( / sh s ss ww ssn)
(princ"\n程序功能:支持*LINE,ARC,CIRCLE,ELLIPSE加粗")
(setq sh (getvar "peditaccept"))
(setvar "peditaccept" 0)
(setvar "cmdecho" 0)
(if (= jcxw_0 Nil) (setq jcxw_0 1))
(setq ww (getdist (strcat "\n 请输入线宽 <" (rtos jcxw_0 2) ">: ")))
(if (= ww nil) (setq ww jcxw_0))(setq jcxw_0 ww)
(setq ss (ssget '((-4 . "<or")(0 . "LINE")(0 . "CIRCLE")(0 . "ARC")
(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "or>"))))
(setq s 0) (command "undo" "be")
(repeat (if ss (sslength ss) (progn (princ "\n 未选择对象。") 0))
(setq ssn (ssname ss s) entyp (cdr (assoc 0 (entget ssn))))
(cond ((= entyp "CIRCLE") (progn
(setq rr (cdr (assoc 40 (entget ssn)))
cen (cdr (assoc 10 (entget ssn))))
(command "donut" (* 2 (- rr (/ ww 2))) (* 2 (+ rr (/ ww 2))) cen "")
(command "erase" ssn "")))
((= entyp "LINE") (command "pedit" ssn "y" "w" ww ""))
((= entyp "ARC") (command "pedit" ssn "y" "w" ww ""))
((= entyp "LWPOLYLINE") (command "pedit" ssn "w" ww ""))
((= entyp "POLYLINE") (command "pedit" ssn "w" ww ""))
)(setq s (1+ s))
)(command "undo" "e")
(setvar "peditaccept" sh)
(princ)
)
(defun c:tttt( / sh s ss ww ssn)
(princ"\n程序功能:支持*LINE,ARC,CIRCLE,ELLIPSE加粗")
(setq sh (getvar "peditaccept"))
(setvar "peditaccept" 0)
(setvar "cmdecho" 0)
(if (= jcxw_0 Nil) (setq jcxw_0 1))
(setq ww (getdist (strcat "\n 请输入线宽 <" (rtos jcxw_0 2) ">: ")))
(if (= ww nil) (setq ww jcxw_0))(setq jcxw_0 ww)
(while (setq ss (ssget '((-4 . "<or")(0 . "LINE")(0 . "CIRCLE")(0 . "ARC")
(0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "or>"))))
(setq s 0) (command "undo" "be")
(repeat (if ss (sslength ss) (progn (princ "\n 未选择对象。") 0))
(setq ssn (ssname ss s) entyp (cdr (assoc 0 (entget ssn))))
(cond ((= entyp "CIRCLE") (progn
(setq rr (cdr (assoc 40 (entget ssn)))
cen (cdr (assoc 10 (entget ssn))))
(command "donut" (* 2 (- rr (/ ww 2))) (* 2 (+ rr (/ ww 2))) cen "")
(command "erase" ssn "")))
((= entyp "LINE") (command "pedit" ssn "y" "w" ww ""))
((= entyp "ARC") (command "pedit" ssn "y" "w" ww ""))
((= entyp "LWPOLYLINE") (command "pedit" ssn "w" ww ""))
((= entyp "POLYLINE") (command "pedit" ssn "w" ww ""))
)(setq s (1+ s))
))(command "undo" "e")
(setvar "peditaccept" sh)
(princ)
) ;稍微改了下,当练练手,加了个错误处理
(defun c:tt ( / *error* s ss ww x sysvar values i )
(defun *error* (msg)
(mapcar 'setvar sysvar values)
(princ)
)
(setq sysvar '(cmdecho peditaccept) values (mapcar 'getvar sysvar))
(mapcar 'setvar '("CMDECHO" "PEDITACCEPT") '(0 1))
(princ"\n程序功能:支持*LINE,ARC,CIRCLE加粗")
(if (= jcxw_0 nil) (setq jcxw_0 1))
(setq ww (getdist (strcat "\n 请输入线宽 <" (rtos jcxw_0 2) ">: ")))
(if (= ww nil) (setq ww jcxw_0))(setq jcxw_0 ww)
(command "undo" "be")
(if (setq ss (ssget ":L" '((0 . "line,*POLYLINE,arc,CIRCLE"))))
(repeat (setq i (sslength ss))
(setq s (ssname ss (setq i (1- i))))
(setq x (cdr (assoc 0 (entget s))))
(cond
((wcmatch x "LINE,ARC")
(command "_.pedit" s "_j" "" "_w" ww "")
)
((wcmatch x "*POLYLINE")
(vla-put-constantWidth (Vlax-Ename->Vla-Object s)ww)
)
((eq x "CIRCLE")
(setq rr (cdr (assoc 40 (entget s))) cen (cdr (assoc 10 (entget s))))
(command "donut" (* 2 (- rr (/ ww 2))) (* 2 (+ rr (/ ww 2))) cen "")
(entdel s)
)
)
)
)
(command "undo" "e")
(*error* nil)
)
页:
[1]