
- (defun c:smc (/ pt1 pt2 ss1 n i ents j ent1 ent2 pts)
- (setq osm (getvar "osmode"))
- (setvar "osmode" 0)
- (setq pt1 (getpoint "\输入要删除门窗的窗口起始点:")
- pt2 (getcorner pt1 "\n输入窗口的另一点:")
- ) ;_ end of setq
- (setq ss1 (ssget "W" pt1 pt2))
- (command "_.erase" ss1 "")
- (setq
- ss1 (ssget "C" pt1 pt2 '((0 . "line") (8 . "墙体")))
- ) ;_ end of setq
- (setq n (sslength ss1))
- (setq i 0) ;_ end of setq
- (while (< i n)
- (setq j (1+ i))
- (setq enti (ssname ss1 i))
- (while (< j n)
- (progn (setq entj (ssname ss1 j))
- (setq pts (lianxian enti entj))
- (princ "\n pts")(princ pts)
- (setq j (+ j 1))
- ) ;_ end of progn
- ) ;_ end of while
- (setq i (+ i 1))
- (princ "\ni=")
- (princ i)
- ) ;_ end of while
- (command "_.erase" ss1 "")
- (princ)
- (setvar "osmode" osm)
- ) ;_ end of defun
- (defun lianxian (ent1 ent2 / name1 name2 pta1 ptb1
- pta2 ptb2 ang1 ang2 ang3 da db
- dc dd m
- )
- (setq name1 (entget ent1)
- name2 (entget ent2)
- ) ;_ end of setq
- (setq pta1 (cdr (assoc 10 name1))
- ptb1 (cdr (assoc 11 name1))
- pta2 (cdr (assoc 10 name2))
- ptb2 (cdr (assoc 11 name2))
- ) ;_ end of setq
- (setq ang1 (angle pta1 ptb1)
- ang2 (angle pta1 ptb2)
- ) ;_ end of setq
- (if (< (abs (- ang1 ang2)) 0.0000001)
- (progn (setq da (distance pta1 pta2)
- db (distance pta1 ptb2)
- dc (distance ptb1 pta2)
- dd (distance ptb1 ptb2)
- ) ;_ end of setq
- (setq m (max da db dc dd))
- (if (= m da)
- (command "_.line" pta1 pta2 "")
- (if (= m db)
- (command "_.line" pta1 ptb2 "")
- (if (= m dc)
- (command "_.line" ptb1 pta2 "")
- (if (= m dd)
- (command "_.line" ptb1 ptb2 "")
- ) ;_ end of if
- ) ;_ end of if
- ) ;_ end of if
- ) ;_ end of if
- ) ;_ end of progn
- ) ;_ end of if
- ) ;_ end of defun
|