9
43
34
初来乍到
使用道具 举报
167
163
(defun c:cr (/ lt ename b c sn sn1 sn2 p1 p2 p3 p4 f d d1 d2 d3 a1 a2 a3 a4 p5 p6 p7 p8 p9 p10 sc ocl la ) (command "cmdecho" (getvar "cmdecho")) (setq lt "center") (if (= (tblsearch "ltype" lt) nil) (command "-linetype" "l" lt "acad.lin" "") ) (setq ocl (getvar "clayer")) (setq la "different") (if (tblsearch "layer" la) (command "-layer" "s" la "") (command "-layer" "m" la "") ) (princ "\n Select rectangles: ") (setq ss (ssget '((-4 . "<and") (0 . "LWPOLYLINE") (70 . 1) (90 . 4) (-4 . "and>") ) )sn (sslength ss)sn1 sn ) (repeat sn (setq sn2 (1- sn1) ename (ssname ss sn2) b (entget ename) b (member (assoc 10 b) b) ) (while (member (assoc 10 b) b) (setq c (append c (list (cdr (assoc 10 b)))) b (cdr b) b (member (assoc 10 b) b) ) ) (setq f 0.125 d 0.12 p1 (nth 0 c) p2 (nth 1 c) p3 (nth 2 c) p4 (nth 3 c) c nil d1 (/ (distance p1 p2) 2) d2 (/ (distance p2 p3) 2) d3 (if (> d1 d2) (* d1 0.12) (* d2 0.12) ) a1 (angle p1 p2) a2 (angle p2 p1) a3 (angle p2 p3) a4 (angle p3 p2) p5 (polar p1 a1 d1) p6 (polar p5 a4 d3) p7 (polar p6 a3 (+ (* d2 2) (* d3 2))) p8 (polar p2 a3 d2) p9 (polar p8 a1 d3) p10 (polar p9 a2 (+ (* d1 2) (* d3 2))) sc (* (+ d1 d2) f) sn1 sn2 ) (entmake (list (cons 0 "LINE") (cons 8 la) (cons 6 lt) (cons 62 3) (cons 10 p6) (cons 11 p7) (cons 48 sc) (cons 210 (list 0.0 0.0 1.0)) ) ) (entmake (list (cons 0 "LINE") (cons 8 la) (cons 6 lt) (cons 62 3) (cons 10 p9) (cons 11 p10) (cons 48 sc) (cons 210 (list 0.0 0.0 1.0)) ) ) ) (setvar "clayer" ocl) (princ))
(defun c:cr (/ lt ename b c sn sn1 sn2 p1 p2 p3 p4 f d d1 d2 d3 a1 a2 a3 a4 p5 p6 p7 p8 p9 p10 sc ocl la ent lar ) (command "cmdecho" (getvar "cmdecho")) (setq lt "center") (if (= (tblsearch "ltype" lt) nil) (command "-linetype" "l" lt "acad.lin" "") ) (setq ocl (getvar "clayer")) (setq la "1"lar "0") (if (tblsearch "layer" la) (command "-layer" "s" la "") (command "-layer" "m" la "") ) (princ "\n Select rectangles: ") (setq ss (ssget '((-4 . "<and") (0 . "LWPOLYLINE") (70 . 1) (90 . 4) (-4 . "and>") ) )sn (sslength ss)sn1 sn ) (repeat sn (setq sn2 (1- sn1) ename (ssname ss sn2) ent (entget ename) b (member (assoc 10 ent) ent) ) (while (member (assoc 10 b) b) (setq c (append c (list (cdr (assoc 10 b)))) b (cdr b) b (member (assoc 10 b) b) ) ) (setq f 0.125 d 0.12 p1 (nth 0 c) p2 (nth 1 c) p3 (nth 2 c) p4 (nth 3 c) c nil d1 (/ (distance p1 p2) 2) d2 (/ (distance p2 p3) 2) d3 (if (> d1 d2) (* d1 0.12) (* d2 0.12) ) a1 (angle p1 p2) a2 (angle p2 p1) a3 (angle p2 p3) a4 (angle p3 p2) p5 (polar p1 a1 d1) p6 (polar p5 a4 d3) p7 (polar p6 a3 (+ (* d2 2) (* d3 2))) p8 (polar p2 a3 d2) p9 (polar p8 a1 d3) p10 (polar p9 a2 (+ (* d1 2) (* d3 2))) sc (* (+ d1 d2) f) sn1 sn2 ) (entmake (list (cons 0 "LINE") (cons 8 la) (cons 6 lt) ;(cons 62 3) (cons 10 p1) (cons 11 p3) (cons 48 sc) (cons 210 (list 0.0 0.0 1.0)) ) ) (entmake (list (cons 0 "LINE") (cons 8 la) (cons 6 lt) ;(cons 62 3) (cons 10 p2) (cons 11 p4) (cons 48 sc) (cons 210 (list 0.0 0.0 1.0)) ) ) (if (= "0" (cdr (assoc 8 ent))) () (progn (setq ent (subst (cons 8 lar) (assoc 8 ent) ent)) (entmod ent) ) ) ) (setvar "clayer" ocl) (princ))(defun c:crd (/ lt ename b c sn sn1 sn2 p1 p2 p3 p4 f d d1 d2 d3 a1 a2 a3 a4 p5 p6 p7 p8 p9 p10 sc ocl la ent ) (command "cmdecho" (getvar "cmdecho")) (setq lt "center") (if (= (tblsearch "ltype" lt) nil) (command "-linetype" "l" lt "acad.lin" "") ) (setq ocl (getvar "clayer")) (setq la "1") (if (tblsearch "layer" la) (command "-layer" "s" la "") (command "-layer" "m" la "")