Lệnh Gộp file IMF
Thực hiện lệnh IMF, chọn tệp tin dwg đầu tiên trong thư mục.
Tác giả: Anh Nguyen Hoanh
1 Thêm class IMF_.lsp
Lưu mã sau dưới dạng tệp tin IMF_.lsp
Code:
(defun c:imf () ;;;Insert Multi Files by Nguyen Hoanh ( bo tat ca ban ve vao 1 file rieng, roi nhan lenh, chon ban ve dau tien ) (setq pathname (vl-filename-directory (getfiled "Hay chon file dwg bat ky thuoc thu muc" "" "dwg" 0) ) filelist (vl-sort (vl-directory-files pathname "*.dwg") '<) p (getpoint "\nDiem chen: ") xht (car p) yht (cadr p) ) (setq oldos (getvar "osmode")) (setvar "osmode" 0) (foreach filename filelist (command "-insert" (strcat pathname "/" filename) (list xht yht) 1.0 1.0 0.0 ) (vla-getboundingbox (vlax-ename->vla-object (entlast)) 'p1 'p2 ) (setq p1 (vlax-safearray->list p1) p2 (vlax-safearray->list p2) xht (+ xht (abs (car (mapcar '- p2 p1)))) blname (cdr (assoc 2 (entget (entlast)))) ) (command ".explode" (entlast) "") (command "-purge" "Block" blname "N") ) (setvar "osmode" oldos) (princ) ) (defun c:exf () ;;;EXtract Files by Nguyen Hoanh (defun filenamevalid (str) (vl-list->string (vl-remove-if '(lambda (x) (member x (vl-string->list "\\/:?>|"))) (vl-string->list str) ) ) ) (defun getboundingbox (ent / p1 p2) (vla-getboundingbox (vlax-ename->vla-object ent) 'p1 'p2) (list (setq p1 (vlax-safearray->list p1)) (setq p2 (vlax-safearray->list p2)) ) ) (defun ss2ent (ss / sodt index lstent) (setq sodt (if ss (sslength ss) 0 ) index 0 ) (repeat sodt (setq ent (ssname ss index) index (1+ index) lstent (cons ent lstent) ) ) (reverse lstent) ) (defun dxf (ent code) (cdr (assoc code (entget ent)))) (defun gettag (ent / entbl lst) (setq entbl ent) (while (and (setq entbl (entnext entbl)) (= (dxf entbl 0) "ATTRIB") ) (setq lst (append lst (list (cons (dxf entbl 2) (dxf entbl 1))))) ) lst ) (setq entbl (car (entsel "\nHay pick vao block khung ten")) blname (dxf entbl 2) taglst (gettag entbl) index 0 ) (princ "\nCac tag trong block:") (foreach pp taglst (princ (strcat "\n" (itoa index) ": " (car pp))) (setq index (1+ index)) ) (textscr) (setq tag (car (nth (getint "\nHay nhan 0,1,2... de chon tag: ") taglst) ) ) (graphscr) (command ".zoom" "e") (setq oldos (getvar "osmode")) (setvar "osmode" 0) (setq ss (ssget "x" (list (cons 0 "INSERT") (cons 2 blname))) lst (ss2ent ss) lst (mapcar '(lambda (e) (append (list e (cdr (assoc tag (gettag e)))) (getboundingbox e) ) ) lst ) ) (foreach pp lst (setq e (nth 0 pp) f (strcat (getvar "dwgprefix") (filenamevalid (nth 1 pp)) ".dwg" ) p1 (nth 2 pp) p2 (nth 3 pp) ss (ssget "_w" p1 p2) ss (ssadd e ss) ) (command ".wblock" f) (if (setq fh (open f "r")) (progn (close fh) (command "y")) ) (command "" p1 ss "") (command ".oops") ) (setvar "osmode" oldos) (command ".zoom" "p") (princ) )
Link tải (MediaFire)
---------------------------------------------------------------------------------------------
Mọi thông tin xin liên hệ Fanpage AutoLISP Thật là đơn giản!
Cảm ơn bạn đã theo dõi!
Không có nhận xét nào:
Đăng nhận xét