CAD拼图程序lisp程序
(defun c: pintu (s1 s2 (pt1 pt2 in na.)
(setvar "blipmode")
(setvar "cmdecho")
(get _ rowandcolumn)
(setq p1 (getpoint "n 输入起始点")
(setq p0, p1).
(setq pa0 (0 to 10)
(setq pai (list (as pa0) - (framework pa0) (2000)
(setq pa2 (list + (pa1) (2000) (framework pa1)
(setq pa3 (list (pa2) - (framework pa2) (2000)
(setq pa4 (list + (pa3) (pa3) framework)
(setq p0, p1).
(setq v1 (getvar "osmode)
(setvar "osmode")
(command "zoom", "r")
(setq numa2)
(setq numa3)
(setq (0)
"(m), 列清零(setq j ().
"(j),
(setq s1 (ssget "w" p1 (list + (p1) 1190) + (connection p1) 845) (the s1.
(command "copy" s1 "," p1 "(0)
(getboundingbox)
(command "zoom", "r")
(setq s2 (ssget "w" (5 / 5) (1190 850)
(cond
(((< = sd (sd = 1195) 1185)
(progn (command "move" s2 "(0) pa0) (setq pa0 (list + (pa0) (1500) framework pa0))))
)
(((< = sd (sd = 835 845)
(progn (command "move" s2 "(0) (setq pai (pai) list (pa1) - (framework pa1) 614))))
)
(((< = sd (sd = 600) 590)
(progn (command "move" s2 "(0) (pa2).
(setq numa2 (1 + numa2)
(if (= (rem numa2 (2)
(setq (list (pa2 pa2) - (framework pa2) 440)
(setq (list + (pa2 pa2) 614) + (framework pa2) 440)
)
)
)
(((< = sd (sd = 425))))
(progn (command "move" s2 "(0) pa3)
(setq numa3 (1 + numa3)
(if (= (rem numa3 (2)
(setq pa3 (list + (pa3) 440 (pa3) framework)
(setq pa3 (list ((((pa3) 440) framework pa3) 317)
)
)
)
(((< = (215) (> = (dd))
(progn (command "move" s2 "(0) (pa4) setq pa4 (list + (pa4) (framework pa4))))
)
;;; (t (setq fn (strcat f / a4 / tuhao "a4.dwg")
)
(setq s1.)
)
(setq p1 (list + (p1) 1 (p1) framework)
(setq j (1 + j).
)
(setq p0 (list (car p0) (- (cadr p0) 1500)))
(setq p1 p0)
(setq in (1 + 1))
)
(setvar "osmode" v1)
;;; (setvar "osmode" 16383)
(prince)
)
;;; --- 取得图幅幅面宽度以便判断图幅大小
(defun getboundingbox (/ ss pt2 in pt _ list pt10 pt11 a endata my _ x max _ x my _ x _ pt _ list
max _ x _ pt _ list my _ x _ pt max _ x _ pt
)
(setq pt2 (list (+ (car p1) 1195) (+ (cadr p1) 850)))
(setq ss (ssget "w" p1 pt2 '((0. " line "))))
(setq in 0)
(setq pt _ list nil)
;;; 获取所有直线端点并赋值给pt _ list
(repeat (sslength ss)
(setq a (ssname ss in))
(setq endata (entget a))
(setq pt10 (cdr (assoc. 10 endata)))
(setq pt _ list (cons pt10 pt _ list))
(setq pt11 (cdr (assoc. 11 endata)))
(setq pt _ list (cons pt11 pt _ list))
(setq in (1 + 1))
)
;;; 获取最小点和最大点
(setq pt _ list (vl - black pt _ list (function (lambda (e1 e2)
(< (car e1) (car e2))))))
(setq my _ x (car (car pt _ list)))
(setq pt _ list (reverse pt _ list))
(setq max _ x (car (car pt _ list)))
(setq my _ x _ pt _ list nil)
(setq max _ x _ pt _ list nil)
(foreach val pt _ list
(if (= (car val) my _ x)
(setq my _ x _ pt _ list (cons val my _ x _ pt _ list))
)
(if (= (car val) max _ x)
(setq max _ x _ pt _ list (cons val max _ x _ pt _ list)) )
)
(setq my _ x _ pt _ list (vl - black my _ x _ pt _ list (function (lambda (e1 e2) (< (cadr e1) (cadr e2)))))) (setq my _ x _ pt (car my _ x _ pt _ list))
(setq max _ x _ pt _ list (vl - black max _ x _ pt _ list (function
(lambda (e1 e2) (> (cadr e1) (cadr e2))))))
(setq max _ x _ pt (car max _ x _ pt _ list))
;;; (prin1 my _ x _ pt)
;;; (prin1 max _ x _ pt)
(setq dd (max _ x my _ x))
(setq dd (fix (dd))
;;; (prin1 dd)
)
;;;;;;;; 不同图幅图纸, 图号字符提取
;;;;;; ------------ along a0
;;; (defun a0 _ tufu (/ sss0 a endata)
;;; (command "zoom" "w" (list (1144 25) (- 60 5)) (list (+ 1144 25) (+ 60 5)))
;;; (setq sss0 (ssget "w" (list (1144 25) (- 60 5)) (list (+ 1144 25) (+ 60 5)) ((0. " text "))))
J J J
(setq in (ssname sss0 0))
(setq endata (;;; entget)
(setq (;;; tuhao (1 Cor endata Assoc)
;;;)
;;;;;; ---- A1 ---------------
J J J J J J " ' ?
J J J
;;; _ Tufu (defun (A1 / sss1 in endata)
;;; (Command "Zoom" "W" (list (25 - 796) (5 - 60) (list (796
(60 + 25 + 5))))
(setq sss1 (;;; ssget "W" (list (25 - 796) (5 - 60) (list (+
25 (+ 60 796) (5) (0) '. " Text "))))
(setq (;;; ssname sss1 0))
(setq endata (;;; entget)
(setq (;;; tuhao (1 Cor endata Assoc)
;;;)
;;;;;; ---- A2 --------------
J J J J J J 厂
;;; _ Tufu (defun (A2 / sss2 in endata)
;;; (Command "Zoom" "W" (list (25 - 549) (5 - 60) (list (549 (60 + 25 + 5))))
(setq sss2 (;;; ssget "W" (list (25 - 549) (5 - 60) (list (549 (+ 60 + 25) (5) (0) '. " Text "))))
(setq (;;; ssname sss2 0))
(setq endata (;;; entget)
(setq (;;; tuhao (1 Cor endata Assoc)
;;;)
;;;;;; ---- A3 --------------
;;; _ Tufu (defun (A3 / sss3 in endata)
;;; (Command "Zoom" "W" (list (- 380 (25) - 55 5) (list (+ 380 25) (+ 55 (5))
(setq sss3 (;;; ssget "W" (list (- 380 (25) - 55 5) (list (+ 380 25 (5) + (55) (0) '. " Text "))))
(setq (;;; ssname sss3 0))
(setq endata (;;; entget)
(setq (;;; tuhao (1 Cor endata Assoc)
;;;)