| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | Effiziente Reinraumlösungen effizienter entwickeln - Ortner Reinraumtechnik GmbH, ein Anwenderbericht
|
Autor
|
Thema: 453 Blöcke überarbeiten (1999 mal gelesen)
|
Gargarot Mitglied Student MSc Civil Engineering ETHZ, Dipl Bauzeichner
 
 Beiträge: 316 Registriert: 25.06.2008 HP 8560w, Win7 SP1 64bit, i7 2760QM 2.4GHz, AMD FirePro M5950, 8GB RAM; AutoCAD 2013 Edu
|
erstellt am: 12. Aug. 2008 00:13 <-- editieren / zitieren --> Unities abgeben:         
Hellou liebe Leute Bin gerade dabei die Blockbibliothek zu erneuern/überarbeiten. 1. Kann man einen Block anwählen und mit einem Befehl einen Neuen Namen für den Block eingeben? Man kann ja über Format/umbenennen;block aus einer Liste einen Block auswählen. Da aber die bestehenden Namen wild durcheinender sind, müsste man zuerst jeweils gucken wie der zu ändernde Block heisst, und dann erst in der Liste suchen usw.. Und ich hab da 450 Blöcke  2. Kann man einen Skalierten Block mit einem Befehlsmakro so bearbeiten, dass dann X, Y und Z-Faktor = 1 sind? Im CAD sollte sich allerdings die grösse nicht ändern. Eigentlich wie Block sprengen und neudefinieren. Wird warscheinlich schwierig. Hab auch über die Suche nichts gefunden... Die ursprüngliche Idee ist diese katastrofalen Blöcke alle neu zu bennenen, Alles auf 1/1/1 skaliert und im Block Layer auf 0, Ltypt, Farbe ect auf vonBlock... Letzteres habe ich bereits mit einem Macro geschafft (^C^C_-bedit;_ai_selall;eigändr;f;vonblock;la;0;lty;vonblock;ls;vonblock;;_BCLOSE; ..ist aber irgendwie alles Hobbymässig. [ich weiss, da sind englische und deutsche Befehle bunt gemischt xD ] Warscheinlich sollte ich mich mal mit Lisp vertraut machen... Wenn ihr mir bei Problem 1 helfen könntet wären immerhin etwa die Hälfte der Blöcke in Ordnung. Sonst mach ich das halt wie früher.. Sprengen und dann schön nöi definieren. Jup. Besten Dank für eure Bemühungen und gute Nacht Grüsse Christoph ------------------ 3 kleine Weisheiten -Man kann ein Problem nicht mit den gleichen Denkstrukturen lösen, die zu seiner Entstehung beigetragen haben. -Die exzessive Akkumulation von Fremdwörtern suggeriert pseudointellektuelle Kompetenz -Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
   
 Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 12. Aug. 2008 08:27 <-- editieren / zitieren --> Unities abgeben:          Nur für Gargarot
Hallo Christoph, zu 1: (command "_rename" "_b" (cdr (assoc 2 (entget (car (entsel))))) (getstring "Neuer Blockname : ")) zu 2: (defun c:blk_neudef () (command "_undo" "_be") (if (setq satz (ssget '((0 . "INSERT")))) (progn (setq n (1- (sslength satz))) (repeat (sslength satz) (setq ent_data (entget (setq ent_name (ssname satz n)))) (setq p (cdr (assoc 10 ent_data))) (setq name (cdr (assoc 2 ent_data))) (command "_explode" ent_name) (if (setq satz_v (ssget "_p")) (progn (command "_block" name "_y" p satz_v "") (command "_insert" name p 1 1 0) ) ) (setq n (1- n)) ) ) ) (command "_undo" "_e") (princ) ) Da ist jetzt aber noch nicht die Änderung der Farben, Linietypen, usw. der Blockelemente dabei, aber da hab ich jetzt leider keine Zeit dafür. Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gargarot Mitglied Student MSc Civil Engineering ETHZ, Dipl Bauzeichner
 
 Beiträge: 316 Registriert: 25.06.2008
|
erstellt am: 12. Aug. 2008 11:09 <-- editieren / zitieren --> Unities abgeben:         
Wow! Besten Dank! Habs gleich mal ausprobiert mit AutoCAD 2009 Makro 1 funktioniert tiptop. Bei 2 habe ich allerdings Probleme. Man sollte doch grundsätzlich diesen Code über Rechtsklick - Anpassen - Neuer Befehl -> dann unter Makro einfügen können. Allerdings passiert folgendes,wenn ich den Befehl verwenden möchte: Befehl: (defun c:blk_neudef () (_> (command "_undo" "_be") (_> (if (setq satz (ssget '((0 . "INSERT")))) ((_> (progn (((_> (setq n (1- (sslength satz))) (((_> (repeat (sslength satz) ((((_> (setq ent_data (entget (setq ent_name (ssname satz n)))) ((((_> (setq p (cdr (assoc 10 ent_data))) ((((_> (setq name (cdr (assoc 2 ent_data))) ((((_> (command "_explode" ent_name) ((((_> (if (setq satz_v (ssget "_p")) (((((_> (progn ((((((_> (command "_block" name "_y" p satz_v "") ((((((_> (command "_insert" name p 1 1 0) ((((((_> ) (((((_> ) ((((_> (setq n (1- n)) ((((_> ) (((_> ) ((_> ) (_> (command "_undo" "_e") (_> (princ)
in der Befehlszeile steht dann (_> ), drück ich Enter wird dann noch C:blk_neudef hingeschrieben, dann ist allerdings fertig und es erscheint wieder Befehl: Nächster Versuch war ein bisschen recherchieren und da bin ich auf folgende Seite gekommen: http://autocad.cad.de/modules.php?name=FAQ&myfaq=yes&id_cat=4&categories=VBA Bin schön Schritt für Schritt durchgegangen, allerdings erscheint dann unter Makro/Makros... kein Makro . Ich nehme an, da sollte was aufgelistet werden und dann muss man das Ausführen. Irgendwie hab ich dann den Code noch gespeichert und dann nochmal in Makros... beim Rollbalken die Datei xxx.dvb angeklickt und irgendwie in der Befehlszeile blk_neudef eingegeben. Auf jeden Fall hab ich es geschafft 2 Blöcke richtig zu skalieren. Es funktioniert also. Gut. Dann CAD beendet und .dvb in Richtige Ordner kopiert ect. Dann versucht das Makro zu laden. Ging aber nicht mehr. Ich kann machen was ich will, ich kann das Ding nicht mehr ausführen. Sogar als ich von vorne angefangen hab, gings nicht mehr. Nun brauch ich eure Hilfe. Liegt es an meinem 2009? Am Code liegts nicht. Warscheinlich liegt es an mir Hat jemand einen besseren Link der mir erklärt, wie ich einen solchen Code ins CAD integrieren kann? Oder warum das Makro nicht angewählt werden kann. Also nochmal ein Danke an Andreas für die schnelle Antwort. Ich brauch jetzt mal eine Pause :P Gruss Christoph ------------------ 3 kleine Weisheiten -Man kann ein Problem nicht mit den gleichen Denkstrukturen lösen, die zu seiner Entstehung beigetragen haben. -Die exzessive Akkumulation von Fremdwörtern suggeriert pseudointellektuelle Kompetenz -Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
       

 Beiträge: 8086 Registriert: 09.03.2006 Kinder, kauft Kämme! Es kommen lausige Zeiten.
|
erstellt am: 12. Aug. 2008 11:13 <-- editieren / zitieren --> Unities abgeben:          Nur für Gargarot
|
Gargarot Mitglied Student MSc Civil Engineering ETHZ, Dipl Bauzeichner
 
 Beiträge: 316 Registriert: 25.06.2008
|
erstellt am: 12. Aug. 2008 11:36 <-- editieren / zitieren --> Unities abgeben:         
Okke Hab mal wieder unter dem Falschen Begriff gesucht. Es könnte ja so einfach sein Jetzt klappt alles Tiptop! Das Lisp hat allerdings Mühe Blöcke mit kuriosen Namen wie www.xxx.block.00001.dwg zu bearbeiten. Ich kanns ihm (dem Lisp) nicht verübeln . Ich ändere sowieso erst alle Namen. Also Problem gelöst, Christoph ist zufrieden und verteilt jetzt Unities. Liebe Grüsse Christoph ------------------ 3 kleine Weisheiten -Man kann ein Problem nicht mit den gleichen Denkstrukturen lösen, die zu seiner Entstehung beigetragen haben. -Die exzessive Akkumulation von Fremdwörtern suggeriert pseudointellektuelle Kompetenz -Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Andreas Kraus Mitglied Elektrotechniker
   
 Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 12. Aug. 2008 22:55 <-- editieren / zitieren --> Unities abgeben:          Nur für Gargarot
Hallo Christoph, na dann viel Spass damit. Und wenn was nicht klappt, kann ja mal vorkommen daß ein Block einen ungewöhnlichen Namen hat, gib einfach Bescheid denn "geht nicht - gibts nicht". @runkelruebe danke für die freundliche Unterstützung wärend meinem "Timeout" Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |