57
351
294
后起之秀
;Curved Leader(defun c:CL () (defun *error* (msg) (reset) (prompt (strcat "\n\n" msg " ")) );defun (setq osm (getvar "osmode")) (setq layerl (getvar "clayer")) (setq ortho (getvar "orthomode")) (setvar "orthomode"0) (setvar "blipmode"0) (setvar "cmdecho"0) (if (tblsearch "layer" "txt") (command "layer" "s" "txt" "") (progn (setq rgn (getvar "regenmode")) (setvar "regenmode"0) (command "layer" "m" "txt") (command "c" "c" "") (command "") (setvar "regenmode" rgn) );progn );if (princ) (setq p1 (getpoint "\nstart: ")) (setq p2 (getpoint p1 "\nfirst point of curve: ")) (setq ang (angle p1 p2)) (setq dimsc (getvar "dimscale")) (setq lth (* 0.10125 dimsc)) (setq pp2 (polar p1 ang lth)) (setq p02 (polar pp2 (+ ang 1.570796) (/ lth 5.5))) (setq p03 (polar pp2 (- ang 1.570796) (/ lth 5.5))) (command "pline" p1 "w" "0" "0" p2) (while (setq p2 (getpoint "\nto point: " p2)) (command p2) );while (command "") (princ) (command "pedit" "@" "s" "") (command "solid" p1 p02 p03 "" "") (if (tblsearch "layer" "txt") (command "layer" "s" "txt" "") (progn (setq rgn (getvar "regenmode")) (setvar "regenmode"0) (command "layer" "m" "text") (command "c" "4" "") (command "") (setvar "regenmode" rgn) );progn );if (princ) (setvar "osmode"1) (setvar "blipmode"0) (setq t1 (getpoint "\nPick end point of leader: ")) (setvar "osmode" osm) (setq t2 (getpoint t1 "\nPick direction for text justification: ")) (setq ds (/ dimsc 24)) (if (< (car t2) (car t1)) (setq t3 (polar t1 (/ 225 57.295) (* ds (sqrt 2.0)))) (setq t3 (polar t1 (/ 315 57.295) (* ds (sqrt 2.0)))) );if (prompt "\nEnter Text: ") (if (< (car t3) (car t1)) (command "Dtext" "r" t3 "0") (command "Dtext" t3 "0") );if (setvar "orthomode" ortho) (command "layer" "s" layerl "") )
使用道具 举报
114
1万
中流砥柱
;| Curved Leader By Lee McDonnell 31.12.2008|; ; Version 2 ~ Added Variable Menu.(defun c:cl () (c:CurvedLeader)) ; Program Shortcut(defun c:CurvedLeader (/ *error* varlist oldvars pl vlist stpt enpt ang pt ltxt) ;; --- Error Trap --- (defun *error* (msg) (mapcar 'setvar varlist oldvars) (if (= msg "") (princ "\nLeader Constructed.") (princ (strcat "\n" (strcase msg))) ) ;_ end if (princ) ) ; end of *error* (setq varlist (list "CMDECHO" "CLAYER" "PLINEWID") oldvars (mapcar 'getvar varlist) ) ; end setq ;; --- Error Trap --- (or (getenv "CL:ARROWW") (setenv "CL:ARROWW" "2.0")) (or (getenv "CL:ARROWL") (setenv "CL:ARROWL" "4.0")) (or (getenv "CL:TEXTH") (setenv "CL:TEXTH" "2.5")) (or (getenv "CL:TEXTO") (setenv "CL:TEXTO" "2.5")) (alert (strcat "Type "CLSET" to Alter Base Variables. \nCurrent Settings: \n\nArrow Width: " (getenv "CL:ARROWW") "\nArrow Length: " (getenv "CL:ARROWL") "\nText Height: " (getenv "CL:TEXTH") "\nText Offset: " (getenv "CL:TEXTO") ) ;_ end strcat ) ;_ end alert (defun makelay (x y) (if (not (tblsearch "Layer" x)) (command "-layer" "m" x "c" y x "") ) ;_ end if ) ;_ end defun (defun polyvert (z) (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) (entget z))) ) ;_ end defun (setvar "cmdecho" 0) (vl-load-com) (mapcar 'makelay '("LEADER" "LEADER-TEXT") '("2" "2")) (setvar "clayer" "LEADER") (prompt "\nConstruct Leader... ") (setvar "PLINEWID" 0.0) (command "_pline") (while (> (getvar "cmdactive") 0) (command pause)) (setq pl (entlast)) (setq vlist (polyvert pl)) (command "_pedit" pl "S" "") (setq stpt (car vlist) enpt (last vlist) ang (angle stpt (cadr vlist)) ) ;_ end setq (command "_pline" stpt "W" "0.0" "2.0" (polar stpt ang 4.0) "" ) ;_ end command (setq pt (polar enpt 0 2.5)) (if (/= (setq ltxt (getstring t "\nSpecify Text for Leader: ")) "") (entmake (list '(0 . "TEXT") '(8 . "LEADER-TEXT") (cons 10 pt) (cons 40 2.5) (cons 1 ltxt) '(50 . 0.0) '(7 . "STANDARD") '(71 . 0) '(72 . 0) '(73 . 2) (cons 11 pt) ) ; end list ) ; end entmake (alert "Blank Leader Created.") ) ;_ end if (*error* "") (princ)) ;_ end defun(princ "\nCurved Leader by Lee McDonnell Loaded. Type "CL" to Invoke.")(defun c:clset (/ arw arl txth txto) (or (getenv "CL:ARROWW") (setenv "CL:ARROWW" "2.0")) (or (getenv "CL:ARROWL") (setenv "CL:ARROWL" "4.0")) (or (getenv "CL:TEXTH") (setenv "CL:TEXTH" "2.5")) (or (getenv "CL:TEXTO") (setenv "CL:TEXTO" "2.5")) (alert (strcat "Current Settings: \n\nArrow Width: " (getenv "CL:ARROWW") "\nArrow Length: " (getenv "CL:ARROWL")