CafeJr,请备份您的DWG并尝试一下,看看它是否适合您的需要。。。
- (defun c:elevs2xrefs ( / *error* fildia dwgn dwgname ss i ent entlst path loop bb se dx ch gap p )
- (defun *error* ( msg )
- (if fildia (setvar 'filedia fildia))
- (if msg (prompt msg))
- (princ)
- )
- (vl-load-com)
- (alert "\nAll enities in current MODEL space in DWG must be 2d and parallel to WCS - ENTER TO CONTINE else ESC to terminate")
- (setq fildia (getvar 'filedia))
- (setvar 'tilemode 1)
- (setq dwgn (getvar 'dwgname))
- (setq dwgname (substr dwgn 1 (- (strlen dwgn) 4)))
- (setq ss (ssget "_X" '((410 . "Model"))))
- (setq i -1)
- (while (setq ent (ssname ss (setq i (1+ i))))
- (setq entlst (cons ent entlst))
- )
- (if (not (vl-every '(lambda ( x ) (or (equal (assoc 210 x) '(210 0.0 0.0 1.0)) (equal (assoc 12 x) '(12 0.0 0.0 1.0)))) (mapcar 'entget entlst)))
- (progn
- (alert "\nNot all enities are parallel to WCS - quitting...")
- (exit)
- )
- )
- (if (not (vl-every '(lambda ( x ) (equal (caddr (car x)) (caddr (cadr x)) 1e-6)) (mapcar 'acet-ent-geomextents entlst)))
- (progn
- (alert "\nNot all enities are 2D - quitting...")
- (exit)
- )
- )
- (setvar 'filedia 0)
- (vla-save (vla-get-activedocument (vlax-get-acad-object)))
- (setq path (vl-catch-all-apply 'vl-filename-directory (list (getfiled "Select destination directory for dwg split export - pick one file in desired folder" "" "" 4))))
- (command "_.-layer" "on" "*" "t" "*" "u" "*" "")
- (command "_.ucs" "w")
- (command "_.ucs" "front")
- (command "_.plan" "")
- (command "_.zoom" "0.5xp")
- (setq loop t)
- (while loop
- (setq bb (acet-geom-ss-extents-accurate ss))
- (setq se (ssget "_F" (list (list (caar bb) (cadar bb)) (list (caadr bb) (cadar bb)))))
- (command "_.ucs" "w")
- (command "_.-wblock" (strcat path "\" dwgname "-" (rtos (cadar bb)) ".dwg") "" (list 0.0 0.0 (cadar bb)) se "")
- (command "_.erase" se "")
- (command "_.-xref" "A" (strcat path "\" dwgname "-" (rtos (cadar bb)) ".dwg") (list 0.0 0.0 (cadar bb)) "" "" "")
- (command "_.ucs" "p")
- (setq ss (acet-ss-remove se ss))
- (if (equal (cadar bb) (cadadr bb) 1e- (setq loop nil))
- )
- (command "_.saveas" "" (strcat path "\" dwgname "-allelevs.dwg"))
- (command "_.ucs" "w")
- (command "_.plan" "")
- (command "_.zoom" "0.5xp")
- (setq ss (ssget "_X" '((410 . "Model"))))
- (setq bb (acet-geom-ss-extents-accurate ss))
- (setq dx (- (caadr bb) (caar bb)))
- (initget "Yes No")
- (setq ch (getkword "\nScatter created XREFS along X axis on elevation 0.0 [Yes/No] <Yes>: "))
- (if (or (eq ch "Yes") (eq ch nil))
- (progn
- (setq gap (abs (getdist "\nSpecify gap distance between 2 Xrefs along X axis: ")))
- (setq i -1)
- (while (setq ent (ssname ss (setq i (1+ i))))
- (vla-move (vlax-ename->vla-object ent) (vlax-3d-point (setq p (cdr (assoc 10 (entget ent))))) (vlax-3d-point (list (car p) (cadr p) 0.0)))
- (vla-move (vlax-ename->vla-object ent) (vlax-3d-point '(0.0 0.0 0.0)) (vlax-3d-point (list (* (float i) (+ dx gap)) 0.0 0.0)))
- )
- (command "_.saveas" "" (strcat path "\" dwgname "-allelevsscatter.dwg"))
- )
- )
- (*error* nil)
- (princ)
- )
M.R。 |