你试试这个惯例。首先制作一个新的空白图形,加载此例程,输入“IF”(lisp命令的名称,表示“插入文件”),指出包含100个或更多dwg文件的目录(必须将idw导出为dwg),然后等待结果。插入的文件尚未分解。
- (defun c:if(/ dir files len col n x y h dy v li dy minp maxp)
- (setq dir (vl-filename-directory (getfiled "Get Directory" (getvar "dwgprefix") "dwg" 4))
- files (vl-remove-if-not
- '(lambda(x) (vl-string-search "DWG" (strcase (vl-filename-extension x))))
- (vl-directory-files dir nil 1))
- len (length files)
- col (fix (sqrt len))
- n -1
- y 0
- h 0
- )
- (while (< n (1- len))
- (setq x 0
- y (+ y h)
- h 0)
- (repeat col
- (setq v (nth (setq n (1+ n)) files))
- (if v
- (progn
- (command "-insert" (strcat dir "/" v) '(0 0) "" "" "")
- (vla-getBoundingBox (vlax-ename->vla-object (entlast)) 'minp 'maxp)
- (setq li (mapcar 'vlax-safearray->list (list minp maxp)))
- (command "move" (entlast) "" '(0 0) (list x y))
- (if (> (setq dy (abs (- (cadadr li) (cadar li)))) h)
- (setq h dy))
- (setq x (+ x (abs (- (caadr li) (caar li)))) )
- )
- )
- )
- )
- )
|