 - (defun c:hbtz (/ tzml filelst i x y pmax pmin zx ys dx dy cdy dwg fn fd)
- (vl-load-com)
- (defun browseforfolder (msg / shfolder path catchit)
- (setq shfolder (vlax-invoke-method (vlax-create-object "Shell.Application")
- 'browseforfolder
- (vlax-get-property
- (vlax-get-acad-object)
- 'hwnd
- ) msg 1
- )
- catchit (vl-catch-all-apply '(lambda ()
- (setq shfolder
- (vlax-get-property shfolder
- 'self
- )
- path
- (vlax-get-property shfolder
- 'path
- )
- )
- )
- )
- )
- (if (vl-catch-all-error-p catchit)
- nil
- path
- )
- )
- (setq tzml (browseforfolder "选择文件路径"))
- (if (/= (substr tzml (strlen tzml)) "\")
- (setq tzml (strcat tzml "\"))
- )
- (setq filelst (vl-directory-files tzml "*.dwg" 1))
- (setq filelst (acad_strlsort filelst)
- i -1
- x 0
- y 0
- cdy 0
- )
- (setq fn (getint "\n[每行文件数量]<1>:"))
- (if (not fn)
- (setq fn 1)
- )
- (setq fd (getreal "\n[文件间距]<100>:"))
- (if (not fd)
- (setq fd 100)
- )
- (setvar "osmode" 0)
- (setvar "attreq" 0)
- (setvar "cmdecho" 0)
- (command "ucs" "")
- (while (setq dwg (nth (setq i (1+ i))
- filelst
- )
- )
- (prompt (strcat "\n" dwg))
- (command "insert" (strcat tzml dwg) (list 0 0) "" "" "")
- (vla-getboundingbox (vlax-ename->vla-object (entlast)) 'mi 'ma)
- (setq pmax (vlax-safearray->list ma)
- pmin (vlax-safearray->list mi)
- )
- (setq zx (list (car pmin) (cadr pmin))
- ys (list (car pmax) (cadr pmax))
- )
- (setq dwg (entlast))
- (command "rectangle" pmin pmax)
- (command "change" (entlast) "" "P" "C" "1" "")
- (command "move" dwg (entlast) "" (list (car zx) (cadr ys))
- (list x y)
- )
- (setq dy (- (cadr ys) (cadr zx))
- dx (- (car ys) (car zx))
- )
- (if (> dy cdy)
- (setq cdy dy)
- )
- (if (= (rem (1+ i) fn) 0)
- (setq x 0
- y (- y cdy fd)
- cdy 0
- )
- (setq x (+ x dx fd))
- )
- )
- (princ)
- )
这段代码,如何加入(command "_explode" "all" ""),使得插入前,分解每一个图块和标注样式;最好是重命名块和标注样式(随机名字也可以) |