Leute, ich zeige dir die Evolution.
durch Gewohnheit/Komfort Arbeit in einer einzigen Datei mit vielen Tabellen (die letzte hatte 46), Erstellen eines Layouts für jede Tabelle.
Dies liegt daran, dass ich, wenn gefragt, alle Zeichnungen durch Veröffentlichung, sehr schnell und weil, wenn ich einen Wechsel irgendwo machen, ist es viel einfacher, alle abhängigen Tabellen zu aktualisieren.
da einige Kunden nicht wollen eine Datei mit 46 Tabellen, aber 46 Dateien von 1 Tabelle, musste ich die Datei ihrer Bestandteile Layouts exportieren.
Layoutexport, exportieren das Layout, aber nur im Modellraum (Sie verlieren das Layout) und vor allem exportieren es mit dem im Layout gesetzten Display (wenn Sie im Layout "Representing print styles" eingerichtet haben, finden Sie das schwarze und weiße Modell.
und vor allem für einzelnes Layout.
Ich versuchte andere Lispe (Typ lxa), die ein Layout-Export-Mehrfach ist, aber leidet an den gleichen Problemen von Exportlayout (offensichtlich)
Ich versuchte Layoutstodwgs aber es tut ein Fall, ich repliziere das gesamte Modell, so eine 13mbyte Datei wurde mir 46 13mbyte Dateien
und dann schrieb ich es, mit Hilfe von gp (großer Meister) und rpor66 (anderes Tier der Lispe).
Es ist ein wenig grob, wenig Fehlerkontrolle, aber tun, was Sie brauchen
Exportieren Sie jedes Layout in eine separate Datei, wobei die einzigen im Layoutfenster und dem Layout selbst enthaltenen Einheiten, einschließlich der relevanten Einheiten im Papierraum, gehalten werden.
Code:
(defun reset_var()
(setq layouts nil ad nil layfol nil oldrgnmode nil layoutnumber nil count nil)
(setq vp nil flay nil p1 nil p2 nil p3 nil p4 nil p5 nil p6 nil p7 nil p8 nil)
(setq target_vp nil oldosmode nil todel nil count1 nil layname nil file_name nil)
(setq pspace_ent nil oldmaxvp nil old_thumb nil)
)
;;; exportieren alle Layouts in separaten Dateien in einem Unterordner "layouts"
;;; für jede Datei behalten Modelleinheit und Layout (mit relativer Papierraumeinheit)
;;; Layout muss einen einzigen Vieport, wenn Layout haben mehrere Ansichtspunkte, Probram Bruch.
;;; Tanks zu gp und rpor66 von cad3d.it zu lösen meine Dealock
(Defun c:layexport9 ()
(vl-load-com)
(setq oldmaxvp (getvar "maxactvp"))
(setq old_thumb (getvar "updatethumbnail"))
(setvar "clayout" "Modell")
(Setq-Layoutlist)
(setq layouts (acad_strlsort layouts))
(setq ad (getvar "dwgprefix"))
(setq layfol (strcat ad "layouts"))
(falls (findfile layfol)
(Prog.)
(alert "\n la verzeichnis di output e' gia' esistente)
\nla procedura potrebbe sovrascrivere Datei giã esistenti
e produrre risultati inaspettati.
\nil programma sara' terminato e tutte le variabili saranno azzerate")
(reset_var)
(quit)
)
)
(vl-mkdir layfol)
(setq oldrgnmode (getvar "regenmode"))
(setvar "regenmode" 0)
(Setq Layoutnummer (Längenlayouts))
(setq count 0)
(setq pspace_ent (ssget "x" ((67.1))))
(vorherige Layouts
(setvar "maxactvp" 2)
(setvar "updatethumbnail" 0)
(setq layout (nth count layouts))
(setq vp (ssget "x" (list (cons 0 "viewport")(cons 410 layout)))
(falls (>) 2)
(Prog.)
(setq vpnumerr (strcat "nel layou " layout " ci sono piu" di una viewport
\nil programma potrebbe fornire risultati inaspettati e sara' terminato.
\nricordarsi di eliminare la verzeichnis giã creata altrimenti la procedura fallirã nuovamente."))
(alert vpnumerr)
(reset_var)
(quit)
)
)
(setvar "clayout" Layout);;<------ Cambia il layout rendendo corrente quello in esame
************ *
(setq flay (vlax-ename->vla-object (ssname vp 0)))
(vla-getboundingbox flay 'p1* 'p2*)
(setq p1 (vlax-safearray->list p1*))
(setq p2 (vlax-safearray->list p2*))
(setq p3 (list (car p1) (cadr p1))
(setq p4 (list (car p2) (cadr p2))
(setq p5 (trans p1 3 2))
(Satz p6 (trans p2 3 2))
;; inizio suggerimento rpor
;; somma il valore di Target alle Koordinaten anzeigen
(sofern (Verzeichnis '17)
;;
(Prog.)
(setq target_vp (cdr (assoc '17 (entget))))
(setq p7 (list (+ (nth 0 p5)(nth 0 aim_vp))) (+ (nth 1 p5)(nth 1 target_vp)) 0.00 )
(setq p8 (list (+ (nth 0 p6)(nth 0 aim_vp))) (+ (nth 1 p6)(nth 1 target_vp)) 0.00 )
),
);
(setvar "clayout" "Modell")
********* ****************************************************************************************************************************************************************************************************************************************************************
(setq oldosmode (getvar "osmode"))
(setvar "osmode" 0)
(Befehl "_.select" "_crossing" p7 p8 "")
(Befehl "._undo" "_begin")
(Befehl "_erase" "_all" "_remove" "_previous" "_remove" pspace_ent ")
(setq count1 -1)
(Repeat Layoutnummer
(setq count1 (+ count1 1))
(setq layname (nth count1 layouts))
(falls (/= Layout des Vornamens) (Befehl "_layout" "_delete"));
;<-- Chiusura-Wiederholung
(Befehl "._undo" "_end")
(setq file_name (strcat layfol "\\" layout))
(Befehl "-purge" "_all" "" "_no")
(Befehl "-purge" "_all" "" "_no")
(setvar "maxactvp" oldmaxvp)
(setvar "updatethumbnail" old_thumb)
(Befehl "_saveas" "" file_name)
(Befehl "_undo" "_back" "_y")
(setvar "clayout" "Modell")
(Befehl "_erase" "_crossing" p7 p8 ")
(Befehl "-purge" "_all" "" "_no")
(Zentralzählung (+ Zählung 1))
... Chiusura foreach Layout
(setvar "regenmode" oldrgnmode)
;<------chiusura defun
(alert "\n estrae tutti i layout di un dwg in Datei separati in una sottocartella layouts del dwg.
\nfunziona con layout che abbiano una sola viewport, ed esporta, per ogni layout, sia la parte modello che il relativo layout con le entita' appartenenti al paper space di quel layout.
\n\nusare layexport9 per lanciare)
der einzige Teil, den ich noch lösen muss, ist, externe Referenzen (Xrif und Bilder) aus dem Ordner, in dem sie sich auf dem neuen Unterordner "layouts" befinden, physisch zu kopieren, so dass beim Öffnen der Dateien des einzelnen Layouts nicht die fehlende Referenzanmerkung ergibt.
Ich kann die xref dwg Liste von:
Code:
;;; codice zu schließen xref blocchi
(setq *acad-Objekt* (vlax-get-acad-Objekt)
(setq *active-doc* (vla-get-activedocument *acad-object*))
(setq *blocks* (vla-get-blocks *active-doc*))
(vlax-for n *Blocks*
(eq (vla-get-isxref n) :vlax-true)
(Progn)
(setq pippo (vla-get-path n))
(setq pippo (findfile pippo))
)
)
)
;;; codice zu schließen xref blocchi
und Bilddateinamen nach:
Code:
;;; Codice, um die xref immagini zu drücken
(defun imgfile)
(vl-catch-all-apply)
Lambda (
(setq acad_image_dict)
(vla-item)
(vla-get-Diktionäre
(vla-get-activedocument
(vlax-get-acad-object)
)
)
"acad_image_dict"
)
)
)
)
(setq lista (list))
(wenn acad_image_dict
(vlax-für Eintrag acad_image_dict
(setq img
(vl-princ-to-string)
(cdr)
(Verband 1)
(Zug)
(vlax-vla-object->ename entry)
)
)
)
)
)
)
Aber ich bin auf Autocad Shell-Operationen stecken geblieben. Ich habe sie seit 20 Jahren nicht benutzt.
Ein weiterer Schub der Meister?