| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Modelbereich samt allen Layouts skalieren (683 mal gelesen)
|
vevi61 Mitglied techn. Zeichner
Beiträge: 59 Registriert: 08.10.2003 AutoCAD 2012
|
erstellt am: 31. Jul. 2007 18:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute! Ich hab von einem Architekten einen Grundrissplan von einem Wohnhaus mit ca. 50 Wohneinheiten bekommen. Im Modellbereich hat er die Geschoße eingezeichnet. Jedes Layout enthält einen Wohnungstyp (insgesamt 8), der jedoch öfter vorkommt und somit wurde für jede Wohnung innerhalb des Layouts ein eigenes Ansichtsfenster inklusive Schriftfeld erstellt. Ich möchte den Plan samt allen Fenstern zur Weiterbearbeitung übernehmen. Mein Problem besteht aber darin, dass der Architekt in cm gezeichnet hat, ich brauche aber Meter als Einheit. Nach dem Skalieren des Modelbereiches stimmen natürlich meine Ansichtsfenster nicht mehr. Meine Frage: Gibt es vielleicht eine Möglichkeit, das Aussehen und den Inhalt der Ansichtsfenster beizubehalten, nur eben den Massstab "in einem Rutsch" zu ändern? Wäre für eine Lösung wirklich dankbar. vevi61
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 31. Jul. 2007 18:33 <-- editieren / zitieren --> Unities abgeben: Nur für vevi61
|
g.r Mitglied Beruf? Ja! Ausbildung: auch!!
Beiträge: 603 Registriert: 06.07.2005 ACA 2010 Scaleo, AMD Athlon64 DC4600+ acer Aspire 8930 4C 4GB VISTA Ultimate HP 750C AMD Athlon, W2k
|
erstellt am: 01. Aug. 2007 08:41 <-- editieren / zitieren --> Unities abgeben: Nur für vevi61
Hi vevi, ... ich hätte folgende Idee: lies den Modellbereich komplett aus. Diese neue Datei richtest Du dir für dein Eingabeformat ein. In der vorherigen Datei fügst Du deine "neue" Datei als Xref ein (skalieren nicht vergessen) und platzierst das Xref in genau der Position wie der Grundriss vorher lag. Somit hast du eine Datei zum bearbeiten, so wie du es möchtest ... und die vorherige Datei für die Ausgabe, ohne die ganzen Ansichtsfenster zu ändern. Funktionieren tut das ... Gruß ------------------ ... günter [Diese Nachricht wurde von g.r am 01. Aug. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
vevi61 Mitglied techn. Zeichner
Beiträge: 59 Registriert: 08.10.2003
|
erstellt am: 01. Aug. 2007 13:49 <-- editieren / zitieren --> Unities abgeben:
@g.r Danke für deinen Lösungsvorschlag, funktioniert prima und werde ich wohl auch so handhaben. Noch lieber wäre mir natürlich eine Lösung ohne xref, da die Handhabung und der Versand dadurch für mich vereinfacht würde. Gruß vevi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1356 Registriert: 11.01.2006 Win 10 ACAD 2022
|
erstellt am: 02. Aug. 2007 12:16 <-- editieren / zitieren --> Unities abgeben: Nur für vevi61
Hallo vevi, probier mal diese Lisp aus: (defun c:v002 () (defun v002_work (faktor basispunkt vp_sc / alt_data anzahl aus_txt bereich blk_data checkakt cmd_mem d dat data def_data def_wert dim_data dimlist_exd dimlist_txt dummy dummy_dat dummy_list ein_txt ent_data ent_name entsp_txt exdat faktor_alt filter flag frier_txt gruppe kennung_list lay layouts_data laystat mem_cvport mitte_alt n name namen_list neu_wert nicht_list ok satz schalter sperr_txt status stil_bez stil_data stil_list stil_name tauen_txt txt_name vp_nr xref_list ) (setq lay (tblnext "LAYER" t)) (setq status (cdr (assoc 70 lay))) (if (minusp (cdr (assoc 62 lay))) (setq status (- 0 status)) ) (setq laystat (list (strcat (cdr (assoc 2 lay)) "\\" (itoa status))) ) (while (setq lay (tblnext "LAYER")) (setq status (itoa (cdr (assoc 70 lay)))) (if (minusp (cdr (assoc 62 lay))) (setq status (strcat "-" status)) ) (setq laystat (cons (strcat (cdr (assoc 2 lay)) "\\" status) laystat) ) ) (command "-layer" "t" "*" "ent" "*" "ein" "*" "") ;Textstile korrigieren (setq stil_list (list)) (setq stil_data (tblnext "style" t)) (setq stil_list (cons (cdr (assoc 2 stil_data)) stil_list)) (while (setq stil_data (tblnext "style")) (setq stil_list (cons (cdr (assoc 2 stil_data)) stil_list)) ) (foreach stil_bez stil_list (setq stil_name (tblobjname "STYLE" stil_bez)) (setq stil_data (entget stil_name)) (setq stil_data (subst (cons 40 (* (cdr (assoc 40 stil_data)) faktor)) (assoc 40 stil_data) stil_data ) ) (entmod stil_data) ) ;Bemaßungen mit Benutzerspezifischer Textposition speichern ;Bemaßungen mit Stilüberschreibungen speichern (setq filter (list (cons 0 "DIMENSION"))) (setq satz (ssget "x" filter)) (if satz (progn (setq dimlist_txt (list)) (setq dimlist_exd (list)) (setq n (1- (sslength satz))) (repeat (sslength satz) (setq ent_name (ssname satz n)) (setq ent_data (entget ent_name (list "ACAD"))) (if (logand (cdr (assoc 70 ent_data)) 128) (setq dimlist_txt (cons ent_data dimlist_txt)) ) (if (assoc -3 ent_data) (progn (setq exdat (cdr (car (cdr (assoc -3 ent_data))))) (setq gruppe nil) (setq dummy_list (list)) (foreach dat exdat (if (= (car dat) 1070) (setq gruppe (cdr dat)) ) (if (= (car dat) 1040) (progn (cond ((= gruppe 144) (setq def_wert (cdr (assoc 144 (tblsearch "DIMSTYLE" (cdr (assoc 3 ent_data)) ) ) ) ) (setq neu_wert (/ (cdr dat) faktor)) (setq dummy (cons gruppe neu_wert)) ) ((= gruppe 140) (setq def_wert (cdr (assoc 140 (tblsearch "DIMSTYLE" (cdr (assoc 3 ent_data)) ) ) ) ) (setq neu_wert (* (cdr dat) faktor)) (setq dummy (cons gruppe neu_wert)) ) ((= gruppe 141) (setq def_wert (cdr (assoc 141 (tblsearch "DIMSTYLE" (cdr (assoc 3 ent_data)) ) ) ) ) (setq neu_wert (* (cdr dat) faktor)) (setq dummy (cons gruppe neu_wert)) ) ((= gruppe 41) (setq def_wert (cdr (assoc 41 (tblsearch "DIMSTYLE" (cdr (assoc 3 ent_data)) ) ) ) ) (setq neu_wert (* (cdr dat) faktor)) (setq dummy (cons gruppe neu_wert)) ) ((= gruppe 42) (setq def_wert (cdr (assoc 42 (tblsearch "DIMSTYLE" (cdr (assoc 3 ent_data)) ) ) ) ) (setq neu_wert (* (cdr dat) faktor)) (setq dummy (cons gruppe neu_wert)) ) ((= gruppe 147) (setq def_wert (cdr (assoc 147 (tblsearch "DIMSTYLE" (cdr (assoc 3 ent_data)) ) ) ) ) (setq neu_wert (* (cdr dat) faktor)) (setq dummy (cons gruppe neu_wert)) ) ((= gruppe 44) (setq def_wert (cdr (assoc 44 (tblsearch "DIMSTYLE" (cdr (assoc 3 ent_data)) ) ) ) ) (setq neu_wert (* (cdr dat) faktor)) (setq dummy (cons gruppe neu_wert)) ) ((= gruppe 46) (setq def_wert (cdr (assoc 46 (tblsearch "DIMSTYLE" (cdr (assoc 3 ent_data)) ) ) ) ) (setq neu_wert (* (cdr dat) faktor)) (setq dummy (cons gruppe neu_wert)) ) (t (setq dummy (cons gruppe (cdr dat))) ) ) (setq dummy_list (cons dummy dummy_list)) (setq dummy (list)) ) ) ) (setq dummy_list (cons ent_name dummy_list)) (setq dimlist_exd (cons dummy_list dimlist_exd)) ) ) (setq n (1- n)) ) ) ) ;externe Referenzen entfernen (setq xref_list (list)) (setq blk_data (tblnext "BLOCK" t)) (while blk_data (setq flag (cdr (assoc 70 blk_data))) (if (= (logand flag 4) 4) (progn (if (= (logand flag 32) 32) (progn (command "-xref" "ent" (cdr (assoc 2 blk_data))) (setq xref_list (cons (cdr (assoc 2 blk_data)) xref_list)) ) ) ) ) (setq blk_data (tblnext "BLOCK")) ) ;Zeichnung skalieren (command "_scale" (ssget "x") "" basispunkt faktor) (command "zoom" "g") ;Bemaßungsstile skalieren (print "Bemaßungsstile skalieren") (print) (setq dim_data (tblnext "dimstyle" t)) (while dim_data (if (and (/= (cdr (assoc 2 dim_data)) "") (not (equal (logand (cdr (assoc 70 dim_data)) 16) 16)) ) (progn (command "_dimstyle" "h" (cdr (assoc 2 dim_data))) (command "dimasz" (* (getvar "dimasz") faktor)) (command "dimexo" (* (getvar "dimexo") faktor)) (command "dimdli" (* (getvar "dimdli") faktor)) (command "dimexe" (* (getvar "dimexe") faktor)) (command "dimdle" (* (getvar "dimdle") faktor)) (command "dimtxt" (* (getvar "dimtxt") faktor)) (command "dimcen" (* (getvar "dimcen") faktor)) (command "dimlfac" (/ (getvar "dimlfac") faktor)) (command "dimtfac" (* (getvar "dimtfac") faktor)) (command "dimgap" (* (getvar "dimgap") faktor)) (command "_dimstyle" "si" (cdr (assoc 2 dim_data)) "j") (entmod dim_data) ) ) (setq dim_data (tblnext "dimstyle")) ) (setvar "regenmode" 0) ;Abweichende Bemaßungen bearbeiten (setq satz (ssget "x" '((0 . "DIMENSION")))) (if satz (progn (print "Abweichende Bemaßungen bearbeiten") (print) (setq kennung_list (list 41 42 43 44 46 140 141 144 146 147)) (setq n (1- (sslength satz))) (repeat (sslength satz) (princ (strcat "\r" (itoa n) " ")) (setq ent_name (ssname satz n)) (setq ent_data (entget ent_name '("ACAD"))) (setq def_data (tblsearch "DIMSTYLE" (cdr (assoc 3 ent_data))) ) (setq exdat (assoc -3 ent_data)) (setq exdat (cdr (car (cdr exdat)))) (if exdat (progn (setq dummy_dat (list)) (setq schalter nil) (foreach dat exdat (cond ((and (= (car dat) 1070) (null schalter)) (setq schalter t) (setq dummy_dat (cons dat dummy_dat)) (setq kennung (cdr dat)) ) (schalter (if (and (member kennung kennung_list) (/= (cons kennung (cdr dat)) (assoc kennung def_data) ) ) (setq dummy_dat (cons (cons (car dat) (* (cdr dat) faktor)) dummy_dat ) ) (setq dummy_dat (cons dat dummy_dat)) ) (setq schalter nil) ) (t (setq dummy_dat (cons dat dummy_dat)) ) ) ) (setq exdat (list -3 (cons "ACAD" (reverse dummy_dat)))) (setq ent_data (subst exdat (assoc -3 ent_data) ent_data)) (entmod ent_data) ) ) (setq n (1- n)) ) ) ) ;Bemaßungen mit Benutzerspezifischer Textposition korrigieren (print "Bemaßungen mit Benutzerspezifischer Textposition korrigieren" ) (print) (foreach alt_data dimlist_txt (setq ent_name (cdr (assoc -1 alt_data))) (setq ent_data (entget ent_name)) (setq p (cdr (assoc 11 alt_data))) (setq p (mapcar '* p (list faktor faktor faktor))) (setq ent_data (subst (cons 11 p) (assoc 11 ent_data) ent_data)) (entmod ent_data) ) ;Bemaßungen mit Stilüberschreibungen korrigieren (print "Bemaßungen mit Stilüberschreibungen korrigieren") (print) (foreach dat dimlist_exd (setq ent_name (nth 0 dat)) (setq dat (cdr dat)) (setq ent_data (entget ent_name (list "ACAD"))) (setq exdat (cdr (car (cdr (assoc -3 ent_data))))) (setq exdat (list (cons 1002 "}"))) (foreach d dat (setq exdat (cons (cons 1040 (cdr d)) exdat)) (setq exdat (cons (cons 1070 (car d)) exdat)) ) (setq exdat (cons (cons 1002 "{") exdat)) (setq exdat (cons (cons 1000 "DSTYLE") exdat)) (setq exdat (cons -3 (list (cons "ACAD" exdat)))) (setq ent_data (subst exdat (assoc -3 ent_data) ent_data)) (entmod ent_data) ) (print "Führungen mit Stilüberschreibungen korrigieren") (print) (setq satz (ssget "x" '((0 . "LEADER")))) (setvar "cmdecho" 0) (if satz (progn (setq nicht_list (list 147 272 343 344)) (setq n (1- (sslength satz))) (repeat (sslength satz) (setq ent_name (ssname satz n)) (setq ent_data (entget ent_name (list "ACAD"))) (setq exdat (assoc -3 ent_data)) (if exdat (progn (setq exdat (cdr (car (cdr exdat)))) (setq dummy_list (list)) (setq ok t) (foreach data exdat (if ok (progn (if (and (= (car data) 1070) (member (cdr data) nicht_list) ) (progn (setq ok nil) ) (setq dummy_list (cons data dummy_list)) ) ) (progn (setq ok t) ) ) ) (setq exdat (reverse dummy_list)) (setq exdat (cons -3 (list (cons "ACAD" exdat)))) (setq ent_data (subst exdat (assoc -3 ent_data) ent_data)) (entmod ent_data) (setq txt_name (cdr (assoc 340 ent_data))) ;;; (if txt_name ;;; (command "_move" txt_name "" "0,0" "0,0") ;;; ) ) ) (setq n (1- n)) ) ) ) ;externe Referenzen neu laden (print "Externe referenzen wieder einfügen") (print) (foreach name xref_list (command "-xref" "neu" name) ) (setvar "regenmode" 1) (command "zoom" "g") ;Ansichtsfenster im Papierbereich korrigieren (if (and (= vp_sc "Ja") (setq satz (ssget "x" '((0 . "VIEWPORT")))) ) (progn (if (> (sslength satz) 1) (progn (setq layouts_data (dictsearch (namedobjdict) "ACAD_LAYOUT") ) (setq namen_list (list)) (foreach dummy layouts_data (if (= (car dummy) 3) (setq namen_list (cons (cdr dummy) namen_list)) ) ) (foreach name namen_list (command "-layout" "se" name) (if (= (getvar "tilemode") 0) (progn (setq mem_cvport (getvar "cvport")) (setq filter (list (cons 0 "VIEWPORT") (cons 410 name)) ) (setq satz (ssget "x" filter)) (setq anzahl (sslength satz)) (setq n 0) (command "_mspace") (repeat anzahl (setq ent_name (ssname satz n)) (setq ent_data (entget ent_name)) (setq vp_nr (cdr (assoc 69 ent_data))) (setq bereich (cdr (assoc 410 ent_data))) (if (and (/= vp_nr 1) (equal bereich name) (> (cdr (assoc 68 ent_data)) 0) ) (progn (setvar "cvport" vp_nr) (setq mitte_alt (mapcar '+ basispunkt (mapcar '* (mapcar '- (getvar "viewctr") basispunkt ) (list faktor faktor faktor) ) ) ) (setq faktor_alt (* (getvar "viewsize") faktor)) (command "zoom" "m" mitte_alt faktor_alt) ) ) (setq n (1+ n)) ) ;end repeat anzahl (if (= mem_cvport 1) (command "_pspace") (setvar "cvport" mem_cvport) ) ) ) ) (setvar "tilemode" mem_tilemode) ) ) ) ) ;Layerstatus wiederherstellen (setq ein_txt "") (setq aus_txt "") (setq sperr_txt "") (setq entsp_txt "") (setq frier_txt "") (setq tauen_txt "") (setq checkakt nil) (foreach lay laystat (setq lay (zerlege_art lay "\\" "str")) (if (= (substr (nth 1 lay) 1 1) "-") (progn (setq aus_txt (strcat "," (nth 0 lay) aus_txt)) (if (equal (nth 0 lay) (getvar "clayer")) (setq checkakt t) ) ) (setq ein_txt (strcat "," (nth 0 lay) ein_txt)) ) (if (= (boole 1 (abs (atoi (nth 1 lay))) 1) 1) (setq frier_txt (strcat "," (nth 0 lay) frier_txt)) (setq tauen_txt (strcat "," (nth 0 lay) tauen_txt)) ) (if (= (boole 1 (abs (atoi (nth 1 lay))) 4) 4) (setq sperr_txt (strcat "," (nth 0 lay) sperr_txt)) (setq entsp_txt (strcat "," (nth 0 lay) entsp_txt)) ) ) (command "-layer") (setq cmd_mem (getvar "cmdactive")) (command "a" (substr aus_txt 2)) (if checkakt (command "j") ) (command "ei" (substr ein_txt 2)) (command "sp" (substr sperr_txt 2)) (command "ent" (substr entsp_txt 2)) (command "fr" (substr frier_txt 2)) (command "ta" (substr tauen_txt 2)) (while (= (getvar "cmdactive") cmd_mem) (command "")) ) ;Einstellungen speichern und verändern (command "zurück" "b") (setq mem_tilemode (getvar "tilemode")) (setvar "tilemode" 1) (setq mem_luprec (getvar "luprec")) (setvar "luprec" 8) (setvar "cmdecho" 0) (setq faktor nil) (while (null faktor) (initget 128) (while (null (setq dummy (getreal "Skalierfaktor <Bezug>: "))) (initget 128) ) (cond ((= (type dummy) 'STR) (if (= (strcase dummy) "B") (progn (setq p1 (getpoint "erster Punkt : ")) (setq p2 (getpoint p1 "zweiter Punkt : ")) (setq p3 (getpoint p1 "neue Länge : ")) (setq faktor (/ (distance p1 p3) (distance p1 p2))) ) ) ) ((= (type dummy) 'REAL) (setq faktor dummy) ) (t (setq dummy nil)) ) ) (setq basispunkt (getpoint "Basispunkt: ")) (initget "Ja Nein") (setq vp_sc (getkword "Layouts korrigieren (ja/nein): ")) (setvar "regenmode" 1) ;Layerstatus speichern, alles tauen und entsperren (v002_work faktor basispunkt vp_sc) (setvar "snapunit" (mapcar '* (list faktor faktor) (getvar "snapunit")) ) (setvar "luprec" mem_luprec) (setvar "regenmode" 1) (setvar "cmdecho" 0) (command "zurück" "e") ) Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
vevi61 Mitglied techn. Zeichner
Beiträge: 59 Registriert: 08.10.2003
|
erstellt am: 02. Aug. 2007 19:39 <-- editieren / zitieren --> Unities abgeben:
@andreas Danke für das tolle lisp-Programm. Es funktioniert auch teilweise, nur manchmal stoppt es während der Ausführung mit folgender Meldung. "Externe referenzen wieder einfügen" ; Fehler: no function definition: ZERLEGE_ART Wenn ich mir die Zeichnung dann ansehe, ist der Modelbereich skaliert, aber ein Teil der Ansichtsfensterinhalte ist leer. Weiß nicht woran es liegt. Vielleicht lässt sich da ja noch daran drehen? Gruß vevi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fusiCAD Mitglied Bauzeichner
Beiträge: 1 Registriert: 02.08.2007
|
erstellt am: 02. Aug. 2007 22:47 <-- editieren / zitieren --> Unities abgeben: Nur für vevi61
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1356 Registriert: 11.01.2006 Win 10 ACAD 2022
|
erstellt am: 03. Aug. 2007 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für vevi61
Hallo vevi61, dieses kleine Programm muß natürlich noch dazu (hab ich übersehen) (defun zerlege_art (zeile trenner art / liste pos laenge wert) ;Text in Liste mk_zerlegen (if (not (listp trenner)) (setq trenner (list trenner)) ) (if zeile (progn (setq liste (list)) (setq pos 0) (setq laenge 1) (repeat (strlen zeile) (if (member (substr zeile (+ pos laenge) 1) trenner) (progn (if (substr zeile (1+ pos) (1- laenge)) (progn (setq wert (substr zeile (1+ pos) (1- laenge))) (cond ((= art "real") (setq wert (atof wert)) ) ((= art "int") (setq wert (atoi wert)) ) ) (setq liste (cons wert liste)) ) ) (setq pos (+ pos laenge)) (setq laenge 1) ) (setq laenge (1+ laenge)) ) ) (setq wert (substr zeile (1+ pos))) (cond ((= art "real") (setq wert (atof wert)) ) ((= art "int") (setq wert (atoi wert)) ) ) (setq liste (cons wert liste)) (setq liste (reverse liste)) ) ) liste ) Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |