这个应该表现得更好一点:
- (defun c:RoomTag ( / p1 p2 ss tl ip bn old-att-req)
- (vl-load-com)
- (setq old-att-req (getvar "ATTREQ"))
- (princ "\n<<< Select Mtexts >>> ")
- (cond
- ((not (and (setq p1 (getpoint "\nSelect 1st corner :"))
- (setq p2 (getcorner p1 "\nSelect 2nd corner :"))))
- (princ "\nNothing selected"))
- ((not (setq ss (ssget "w" p1 p2 '((0 . "MTEXT"))))) (princ "\nNo Mtext's found"))
- ((not (= (sslength ss) 4)) (princ "\nYou must select 4 Mtext's"))
- ((not (tblsearch "block" (setq bn "Room_Tag"))) (princ "\nBlock 'Room_Tag' not present"))
- (t
- (setq ss (sss ss) tl (mapcar '(lambda (x) (cdr (assoc 1 (entget x)))) ss)
- ip (cdr (assoc 10 (entget (caddr ss)))))
- (setvar "ATTREQ" 0)(command-s "-insert" bn ip 1 1 0)
- (mapcar '(lambda (att val) (wai bn att val)) '("RM_TAG" "RM_VENT" "RM_NO." "RM_AREA") tl)
- (mapcar 'entdel ss)
- (if (setq ss (ssget "w" p1 p2 '((0 . "LWPOLYLINE"))))
- (progn (entdel (ssname ss 0))(setq ss nil)))
- (setvar "ATTREQ" old-att-req)
- )
- )
- )
仅替换主要功能c:RoomTag
gr.Rlx |