然而,这可以用于任何角度的线:
- (defun c:hb (/ *error* ovar vlst ent ip edata ang att1 blk ip1 ip2 ans)
- (defun *error* (msg)
- (if ovar (mapcar 'setvar vlst ovar)) (princ))
- (setq vlst '("OSMODE" "BLIPMODE" "CMDECHO" "ATTDIA" "ATTREQ")
- ovar (mapcar 'getvar vlst))
- (if (or (tblsearch "BLOCK" "HBAB") (findfile "HBAB.dwg"))
- (progn
- (mapcar 'setvar vlst '(544 0 0 0 0))
- (while (setq ent (entsel "\nSelect Block Insertion Point"))
- (setq ip (osnap (cadr ent) "_nea"))
- (setvar "OSMODE" 0)
- (setq edata (entget (car ent))
- ang (angle (dxf 10 edata) (dxf 11 edata)))
- (command "-insert" "HBAB" "s" (max 1 (getvar "dimscale")) ip (* 180.0 (/ ang pi)))
- (setq att1 (entnext (setq blk (entlast)))
- ip1 (dxf 10 (entget att1))
- ip2 (dxf 10 (entget (entnext att1))))
- (command "Break" ent "f" ip1 ip2)
- (initget "Yes No")
- (setq ans (getkword "\nMirror Block? [Yes/No] <No>: "))
- (if (= ans "Yes")
- (command "_mirror" blk "" ip1 ip2 "_Y"))
- (setvar "OSMODE" 544)))
- (princ "\n<!> Block Not Found <!>"))
- (mapcar 'setvar vlst ovar)
- (princ))
- (defun dxf (code elist)
- (cdr (assoc code elist)))
还包括错误捕获以检查块名,并添加了镜像选项。 |