2
10
9
初来乍到
(defun c:pps (/ mm_lay pi2 2pi 3pi2 les i pltlr pltud clt plt obj info ac0 dr40 pt10 starc edarc pt11 pt10s p10 n alist alist1 alist2 lft rht upt dnt cor1 cor2 cor3 cor4 pcenter locat key xcor1 xcor2 xcor3 xcor4 plistn loc1 loc2 locat2 locn1 locn2 lcline0 clocat clocat2 lcline1 lcline2 celine0 celine1 celine2 pt1 pt2 oldline pt1 pt2 pt3 pt0 *error* erases mvs vxs) (defun erases (ss / i) (setq i -1)(repeat (sslength ss) (entdel (ssname ss (setq i (1+ i))))))(defun mvs (lst / a lst2) (while (setq a (car lst) lst2 (cons a lst2) lst (vl-remove a lst)))(reverse lst2))(defun vxs (e / i v lst)(setq i -1)(while (setq v (vlax-curve-getpointatparam e (setq i (1+ i)))) (setq lst (cons v lst)))(reverse lst))(defun *error*(s) (setvar 'cmdecho 0)(command "_.undo" "e")(setvar 'cmdecho 1)(redraw))(if (null (tblsearch "layer" "03centreline")) (progn (setq mm_lay (getvar "CLAYER")) (setvar "cmdecho" 0) (command "_layer" "m" "03centreline" "c" "1" "" "l" "center" "" "lw" "0.18" "03centreline" "") (setvar "cmdecho" 1) (setvar "clayer" mm_lay) )) (if (null (tblsearch "layer" "04dashed")) (progn (setq mm_lay (getvar "CLAYER")) (setvar "cmdecho" 0) (command "_layer" "m" "04dashed" "c" "2" "" "l" "DASHED" "" "lw" "0.18" "04dashed" "") (setvar "cmdecho" 1) (setvar "clayer" mm_lay) ))(setq pi2 (/ pi 2))(setq 2pi (* pi 2))(setq 3pi2 (/ (* 3 pi) 2))(setq les (ssget '((0 . "LINE,CIRCLE,ARC,LWPOLYLINE") (-4 . "<NOT") (8 . "*03centreline*") (-4 . "NOT>") ) ))(setq i 0)(repeat (sslength les) (setq obj (ssname les i)) (setq info (entget obj)) (setq ac0 (cdr (assoc 0 info))) (cond ((= ac0 "CIRCLE") (progn (setq dr40 (cdr (assoc 40 info))) (setq pt10 (cdr (assoc 10 info))) (setq clt (cons pt10 clt)) (setq pltlr (cons (polar pt10 0 dr40) (cons (polar pt10 pi dr40) pltlr) ) ) (setq pltud (cons (polar pt10 pi2 dr40) (cons (polar pt10 3pi2 dr40) pltud) ) ) );end_progn ) ((= ac0 "ARC") (setq dr40 (cdr (assoc 40 info))) (setq pt10 (cdr (assoc 10 info))) ;; (setq clt (cons pt10 clt)) (setq starc (cdr (assoc 50 info))) (setq edarc (cdr (assoc 51 info))) (if (or (and (= starc 0) (= edarc pi)) (and (= starc pi) (= edarc 0)) (and (= starc pi2) (= edarc 3pi2)) (and (= starc 3pi2) (= edarc pi2)) ) (setq clt (cons pt10 clt)) ) (cond ((or (and (<= starc pi2) (<= pi2 edarc) (< edarc 3pi2)) (and (<= pi2 edarc) (< edarc 3pi2 starc)) ) (setq pltud (cons (polar pt10 pi2 dr40) pltud)) ) ((or (and (<= starc pi2) (>= edarc 3pi2)) (and (<= starc pi2) (< edarc pi2)) (and (> starc 3pi2) (>= edarc 3pi2)) ) (setq pltud (cons (polar pt10 pi2 dr40)