程序未经调试。另外:小数点后可以有零吧。 - ;[提取1號矩形左下角點的坐標[X,Y]及X軸長度,Y軸長度,] X軸55.4 Y軸58. X軸長度52. Y軸長度39.
- ;[提取2號矩形右下角點的坐標[X,Y]及X軸長度,Y軸長度,] X軸2163.7 Y軸60.5 X軸長度72.Y軸長度61.
- ;[提取3號矩形左上角點的坐標[X,Y]及X軸長度,Y軸長度,] X軸2162.3 Y軸870.75 X軸長度45. Y軸長度54.
- ;[提取4號矩形右上角點的坐標[X,Y]及X軸長度,Y軸長度,] X軸53. Y軸869.3 X軸長度36. Y軸長度85
- ;55.4 58. 52. 39.
- ;2163.7 60.5 72. 61.
- ;2162.3 870.75 45. 54.
- ;53. 869.3 36. 85.
- (defun c:nn()
- (setvar "osmode" 0)
- (setq p1 (getpoint "\n 請選擇窗口的第1點:"))
- (setq p2 (getcorner p1 "\n 請選擇窗口的第1點:"))
- (if (setq ss (ssget "w" P1 P2 '((0 . "LWPOLYLINE") (70 . 1) (90 . 4)))) (progn
- (setq n -1)
- (setq ptlst (list))
- (if (= (sslength ss) 4) (progn
- (repeat (sslength ss)
- (setq ent (ssname ss (setq i (1+ i))))
- (setq plst (list))
- (foreach x ent (if (= (car x) 10) (setq plst (cons (cdr x) plst))))
- (setq plst (vl-sort plst '(lambda (a b) (< (cadr a) (cadr b)))))
- (setq plst (vl-sort plst '(lambda (a b) (< (car a) (car b)))))
- (setq ptlst (cons plst ptlst))
- )
- (setq ptlst (vl-sort ptlst '(lambda (a b) (< (cadar a) (cadar b)))))
- (setq ptlst (vl-sort ptlst '(lambda (a b) (< (caar a) (caar b)))))
- (if (setq fn (findfile "558.txt"))
- (setq fp (open fn "a"))
- (setq fp (open "558.txt" "w"))
- )
- (setvar "DIMZIN" 0)
- (setq lenlst (list))
- (mapcar '(lambda (x) (list (-(car (last x)) (caar x)) (-(cadr(last x)) (cadar x)))) ptlst)
- (setq pt1 (caar ptlst)
- pt2 (cadadr ptlst)
- pt3 (cadr(caddr ptlst))
- pt4 (car(last ptlst)))
- (setq i 1)
- (foreach x lenlst
- (setq pt (eval(read(strcat "pt" (itoa i)))))
- (print (rtos (car pt) 2 1) fp) (princ " " fp)
- (princ (rtos (cadr pt) 2 1) fp) (princ " " fp)
- (princ (rtos (car x) 2 1) fp) (princ " " fp)
- (princ (rtos (cadr x) 2 1) fp)
- )
- (close fp)
- ))
- ))
- (princ)
- )
|