| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: block einfugen mit nummereingabe (793 mal gelesen)
|
MonikaB Mitglied Metallbauzeichnerin
Beiträge: 198 Registriert: 28.04.2006 Windows XP (Englisch) AutoCAD 2007 (Englisch) SOLID WORKS 2006
|
erstellt am: 08. Mai. 2006 16:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich habee mir bereits mehrere knöpfe gemacht um meine alltäglichen blöcke einzufügen. Makro sieht so aus(^C^C^P-insert;"*P:/Bibliotekt/Load/block";\;; Kann man das Makro auch so ändern das ich nur noch den knopf drücken muss dann der blockname eingeben kann und es importiert mir den block??? Meine blöcke liegen alle in P:/Bibliotekt/Load sollte doch möglich sein oder? Gruss ------------------ Moni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 08. Mai. 2006 16:21 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
^C^C^P_-insert;"P:/Bibliotekt/Load/block/nummer.dwg";\;; ..folge doch einfach mal dem händisch in der Befehlszeile eingegebenen "_-insert" Befehl.. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 08. Mai. 2006 16:35 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Hi, oder pack das hier in dein Makro: Code: (if (setq blkname (findfile (strcat (getstring "\nBlockname: ") ".dwg"))) (command "_.insert" (strcat "*" blkname) pause "1" "0") (princ "\nBlock nicht gefunden.") )
Gruß CADchup
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MonikaB Mitglied Metallbauzeichnerin
Beiträge: 198 Registriert: 28.04.2006 Windows XP (Englisch) AutoCAD 2007 (Englisch) SOLID WORKS 2006
|
erstellt am: 08. Mai. 2006 16:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Cadmium Das habe ich schon gemacht aber ich will ja nicht jedesmall den ganzen pfad eingeben sondern nur der blockname. Hallo CADchup danke für dein code aber ich verstehe so gut wie gar nicht vom programieren. sprich wie ich dein code in etwas integrieren kann. eine lsp datei kann ich noch machen uns sie laden aber das ist es dann schon Gruss ------------------ Moni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cimex Mitglied CAD-Trainer
Beiträge: 38 Registriert: 28.03.2006
|
erstellt am: 08. Mai. 2006 21:38 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Wie wärs mit folgendem Makro als Alternative? Code: ^C^C_adcenter;_adcnavigate;P:/Bibliotekt/Load;
Es macht folgendes: 1)Start von AutoCAD Design Center 2)Anzeigen des Ordners P:\Bibliotekt\Load im AutoCAD Design Center Von da aus solltest Du Deine Blöcke ganz einfach in die Zeichnung ziehen können (Drag&Drop). Versuchs mal! Liebe Grüße, Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 09. Mai. 2006 00:00 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Musst gar keine Lisp-Datei erstellen und laden. Pack es einfach in dein Makro. Der Code ist noch kurz genug dafür. Wenn ich nicht total daneben liege, kann man bis zu 250 Zeichen in ein Makro packen. Ich habe noch ein paar Steuerzeichen rausgeschmissen, damit es im Makro läuft: ^C^C^P(if (setq blkname (findfile (strcat (getstring "Blockname: ") ".dwg")))(command "_.insert" (strcat "*" blkname) pause "1" "0")(princ "Block nicht gefunden.")); Gruß CADchup
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MonikaB Mitglied Metallbauzeichnerin
Beiträge: 198 Registriert: 28.04.2006 Windows XP (Englisch) AutoCAD 2007 (Englisch) SOLID WORKS 2006
|
erstellt am: 09. Mai. 2006 08:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Cadchup Danke für dein Makro ist super. Noch ne frage: Wenn ich den block mit dem makro einfüge, hängt der block nicht wie beim normalen befehl am fadenkreuz sonder ich muss zuerst den einfügepunkt wählen bevor ich den block sehe. Das hatte ich auch schon bei meinem Makro (^C^C^P-insert;"*P:/Bibliotekt/Load/block";\; Kann man das einstellen das ich den block zuerst am fadenkreuz sehe bevor ich den einfügepunkt definiere??? Gruss ------------------ Moni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 09. Mai. 2006 08:46 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Hi, das hängt IMHO am aufgelösten Einfügen, dass du mit dem "*" erzwingst. Ohne geht's. Deshalb hier nochmal ein Makro, das die Blockeinfügung nachträglich auflöst. Jetzt kommen wir schon langsam in den Bereich, wo man eigentlich eher separate Lisp-Dateien nutzen würde:
Code: ^C^C^P(progn(if (setq blkname (findfile (strcat (getstring "Blockname: ") ".dwg")))(progn(command "_.insert" blkname pause "1" "1" "0")(command "_explode" (entlast)))(princ "Block nicht gefunden."))(princ));
Gruß CADchup
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MonikaB Mitglied Metallbauzeichnerin
Beiträge: 198 Registriert: 28.04.2006 Windows XP (Englisch) AutoCAD 2007 (Englisch) SOLID WORKS 2006
|
erstellt am: 09. Mai. 2006 08:59 <-- editieren / zitieren --> Unities abgeben:
Hi Super nun gehts (habe das _Explode noch aus dem befehl gelöscht dann beibt der block erhalten) Wie mann ich meinen befehl so ändern das der block auch am fadenkreuz hängt?? (^C^C^P-insert;"*P:/Bibliotekt/Load/block";\ dieser befehl fügt einen bestimmten block ein. Gruss ------------------ Moni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 09. Mai. 2006 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Ach, du willst die Blöcke gar nicht aufgelöst einfügen? Woher hast denn dann das "*"? Auszug aus der Hilfe: Zitat: Aufgelöste Blöcke einfügen: Wenn Sie ein Sternchen (*) zu Beginn des Blocknamens eingeben, wird der Block aufgelöst, und die einzelnen Teile des Blocks werden eingefügt. In diesem Fall wird die Blockdefinition nicht zur Zeichnung hinzugefügt.
Also Sternchen weg und gut is. Gruß CADchup
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MonikaB Mitglied Metallbauzeichnerin
Beiträge: 198 Registriert: 28.04.2006 Windows XP (Englisch) AutoCAD 2007 (Englisch) SOLID WORKS 2006
|
erstellt am: 09. Mai. 2006 09:59 <-- editieren / zitieren --> Unities abgeben:
Hi Das habe ich von einem anderen befehl kopiert. wenn ich das "*" wegnehme kann es den block nickt mehr einfügen funkt dann nur wenn der block schon in der zeichnung ist. und der block wurde bei mir nie gesprengt ob ich nun das "*" habe oder nicht. Bist du sicher das das zeichen "*" definiert ob der block beim einfügen gesprengt wird??? ------------------ Moni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 09. Mai. 2006 12:06 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Hi, Zitat: Original erstellt von MonikaB: wenn ich das "*" wegnehme kann es den block nickt mehr einfügen funkt dann nur wenn der block schon in der zeichnung ist.
Kann nicht einfügen? Eine für meinen Geschmack etwas vage formulierte Fehlermeldung. Acad ist doch sonst nicht so schweigsam. Zitat: Original erstellt von MonikaB: und der block wurde bei mir nie gesprengt ob ich nun das "*" habe oder nicht. Bist du sicher das das zeichen "*" definiert ob der block beim einfügen gesprengt wird???
Bin ich. Die Acad-Onlinehilfe ist zwar nicht das BGB, aber da stimmt sie 100pro. Und das schon seit vielen Versionen! Meiner Meinung nach fügst du verschachtelte Blöcke ein, soll heißen, du hast eine DWG "Block1.dwg" und in dieser DWG gibt es einen Block namens "Block1". Fügst du das ganze in eine Zeichnung ein hast du einen Block "Block1", der den Block Block1 enthält. Beim Einfügen mit deinem Sternchen löst AutoCAD die oberste Blockeinfügung, also sozusagen "Block1.DWG" auf und übrig bleibt der verschachtelte "Block1". Acad meldet in diesem Fall allerdings in der Befehlszeile: Doppelte Definition ... ignoriert! Wenn man hier nicht die Befehlszeile liest, bekommt man davon nix mit und glaubt, die Einfügung wurde nicht aufgelöst. Richtiger wäre, deine Block-Zeichnungen enthalten nur die Geometrie, denn beim Einfügen in eine Zeichnung werden sie autom. zu Blöcken, so denn nicht mit dem Sternchen gearbeitet wird. Alle Klarheiten beseitigt? CADchup
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MonikaB Mitglied Metallbauzeichnerin
Beiträge: 198 Registriert: 28.04.2006 Windows XP (Englisch) AutoCAD 2007 (Englisch) SOLID WORKS 2006
|
erstellt am: 09. Mai. 2006 12:29 <-- editieren / zitieren --> Unities abgeben:
Hi Cadchup Ok die fehlermeldung ist "block references itself" nanach "*Invalid*" sorry für meine formulierung Zitat: Beim Einfügen mit deinem Sternchen löst AutoCAD die oberste Blockeinfügung, also sozusagen "Block1.DWG" auf und übrig bleibt der verschachtelte "Block1". Acad meldet in diesem Fall allerdings in der Befehlszeile: Doppelte Definition ... ignoriert! Wenn man hier nicht die Befehlszeile liest, bekommt man davon nix mit und glaubt, die Einfügung wurde nicht aufgelöst.
Ich füge nicht normale blöcke ein sondern dynamische das ist wahrscheinlich die ursache. Zitat: Alle Klarheiten beseitigt?
Ja/Nein. verstehe das mit dem "*" aber wie ich es hinkreige das ich den block am fadenkreuz sehe bevor ich in absetzte ist mir noch nicht klar. Also mit deinem Befehl klapt es (blockname eingeben) aber wie mus ich das makro ändern wenn ich mit einem knopf einen bestimmten block einfügen will. z.B ich will den dynamischen block "FUGE.dwg" einfügen bisher habe ich es mit (^C^C^P-insert;"*P:/Bibliotekt/Load/fuge";\) gemacht aber da sehe ich wie gesagt den block nicht am fadenkreuz. Gruss ------------------ Moni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 09. Mai. 2006 13:03 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Zitat: Original erstellt von MonikaB: Ich füge nicht normale blöcke ein sondern dynamische das ist wahrscheinlich die ursache.
Richtig, es liegt an den dyn. Blöcken. Sie müssen Block sein um dynamisch sein zu können. Ok, hier der Code für bestimmte Blöcke. Obacht: Die Endung DWG nicht vergessen:
Code: ^C^C^P(progn(if(setq blkname (findfile "P:/Bibliotekt/Load/fuge.dwg"))(progn(command "_.insert" blkname pause "1" "1" "0")(command "_explode" (entlast)))(princ "Block nicht gefunden."))(princ));
Gruß CADchup
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MonikaB Mitglied Metallbauzeichnerin
Beiträge: 198 Registriert: 28.04.2006 Windows XP (Englisch) AutoCAD 2007 (Englisch) SOLID WORKS 2006
|
erstellt am: 09. Mai. 2006 13:36 <-- editieren / zitieren --> Unities abgeben:
|
MonikaB Mitglied Metallbauzeichnerin
Beiträge: 198 Registriert: 28.04.2006 Windows XP (Englisch) AutoCAD 2007 (Englisch) SOLID WORKS 2006
|
erstellt am: 27. Jun. 2006 12:24 <-- editieren / zitieren --> Unities abgeben:
Hallo CADchup Du hast mir mal einen super macro gegeben um einen bestimmten block aus einem pfad einzufügen. Zitat: ^C^C^P(progn(if(setq blkname (findfile "P:/Bibliotekt/Load/fuge.dwg"))(progn(command "_.insert" blkname pause "1" "1" "0")(command "_explode" (entlast)))(princ "Block nicht gefunden."))(princ));
Habe versucht noch den gewünschten Layer auf den block zu übertagen. Code:
-layer;se;Schraube;^C^C^P(progn(if(setq blkname (findfile "P:/Bibliotekt/Load/Blechschraube.dwg"))(progn(command "_.insert" blkname pause "1" "1" "0")(command "_explode" (entlast)))(princ "Block nicht gefunden."))(princ));
Dabei wird zwar der Layer Schraube am Anfang gewählt und wenn der Block am Fadenkreuz hängt stimmt auch der Layer doch nach dem absetzten hat der block wieder Layer "0" (block ist auf layer "0" gezeichnet) Wiso?? Weiss jemand den grund? Gruss
------------------ Moni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2012
|
erstellt am: 27. Jun. 2006 13:20 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
-layer;se;Schraube;^C^C^P(progn(if(setq blkname (findfile "P:/Bibliotekt/Load/Blechschraube.dwg"))(progn(command "_.insert" blkname pause "1" "1" "0")(command " _explode" (entlast)))(princ "Block nicht gefunden."))(princ));[/code] das ist kein Block mehr Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 27. Jun. 2006 13:42 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Hi, dein Makro führt den -layer-Befehl nicht zu Ende und ^C^C bricht ihn ab. Eigentlich fehlt also nur noch ein ; nach "Schraube". Hätte aber noch ein paar Anmerkungen zum Makro: - Besser die internationale Schreibweise (engl. Befehle und Optionen und Unterstriche davor) benutzen. So können's auch User mit kambodschanischem AutoCAD verwenden: _-layer;_s - die Option se kann den Layer nur setzen, wenn er auch da ist. Nimm _m und der Layer wird erzeugt, wenn er fehlt: _-layer;_m - ^C^C brauchst du bei diesem Makro ganz am Anfang und nicht mittendrin. - ^P unterdrückt die Rückgaben von AutoCAD, und kann mit ^C^C nach vorne rücken. Zum Testen des Makros kannst du's aber auch erst mal weglassen. Gruß CADchup
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 und 2017 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM ATI FirePro V (FireGL V) Graphics Adapter Treiberversion: 15.201.1151.1008
|
erstellt am: 27. Jun. 2006 15:01 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Zitat: Original erstellt von CADchup: Richtig, es liegt an den dyn. Blöcken. Sie müssen Block sein um dynamisch sein zu können.
?? Meine dyn. Blöcke sind eine DWG OHNE Blockdefinition und funktionieren. Durch das Einfügen wird es doch zum Block. Verstehe ich etwas an Deiner Aussage falsch? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 27. Jun. 2006 17:12 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Hi, @cad4fun nein, du hast recht, es geht auch ohne dass der Block in der DWG definiert ist. Oben ging's eher um die Frage, warum dieses Sternchen unbedingt drin sein musste. Gruß CADchup
------------------ CADmaro.de [Diese Nachricht wurde von CADchup am 27. Jun. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MonikaB Mitglied Metallbauzeichnerin
Beiträge: 198 Registriert: 28.04.2006 Windows XP (Englisch) AutoCAD 2007 (Englisch) SOLID WORKS 2006
|
erstellt am: 27. Jun. 2006 22:04 <-- editieren / zitieren --> Unities abgeben:
Hallo AsSchu Ich füge dynamische blocke in die Zeichnung ein. Deshalb brauche ich _explode damit es wieder ein dynamischer block wird. Deshalb geht es wohl nicht, den ein normaler block klappt. Besten Dank CADchup für deine ausführlichen erklärungen. Komme wohl nicht herum meine dynamischen blöcke schon den richtigen layer zu geben. Gruss ------------------ Moni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 27. Jun. 2006 22:11 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
|
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 und 2017 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM ATI FirePro V (FireGL V) Graphics Adapter Treiberversion: 15.201.1151.1008
|
erstellt am: 28. Jun. 2006 07:31 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
hallo Moni, irgendwas läuft mit Deinen Blöcken nicht richtig. Mach doch mal eine leere DWg auf, setz BLOCKEDITLOCK=0, dann den Befehl BBEARB und markiere "Aktuelle Zeichnung" Dann Linie zeichnen und ein Ende mit einer Streckung versehen Abschließend den Befehl _BCLOSE" und BLOCKEDITLOCK=1 setzen Regenerieren, Zoom Grenzen und Du hast eine ganz normale Linie am Bildschirm, aber keinen Block. Zeichnung speichern und diese Zeichnung in eine neue leere DWG einfügen. Jetzt hast einen dyn. Block eingefügt und das ohne EXPLODE oder Sternchen, wenn über Makro. Würdest jetzt nämlich das Sternchen verwenden, ginge der dyn. Block flöten(eh klar) lG [Diese Nachricht wurde von cad4fun am 28. Jun. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |