| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Problem beim Blockinsert (1759 mal gelesen)
|
Heiko76 Mitglied Applikationsingenieur
Beiträge: 589 Registriert: 21.03.2002
|
erstellt am: 16. Feb. 2004 10:09 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe ein Problem beim einfügen von Blöcken mit folgendem Code: Dim einfüge(0 To 2) As Double Dim xyz As Double Dim acadapp As Object Dim acaddoc As Object Dim acadutil As Object Dim Dateiname As String Set acadapp = GetObject(, "AutoCAD.Application") Set acaddoc = acadapp.ActiveDocument Set acadutil = acaddoc.Utility Dateiname = "/Risupport/Rahmen/Pruefung.dwg" xyz = 1# einfüge(0) = 0: einfüge(1) = 0: einfüge(2) = 0 Set blockref = ThisDrawing.ModelSpace.InsertBlock(einfüge, Dateiname, xyz, xyz, xyz, 0) kommt folgende Fehlermeldung: Laufzeitfehler '-2145386445 (80200033)': Dateifehler Im AutoCAD-Filer-Vorgang ist ein Fehler aufgetreten.
Was ist hier schief gelaufen? ------------------ cu Heiko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
Beiträge: 124 Registriert: 19.08.2003 Revit 2019, ACMep2019, F360
|
erstellt am: 16. Feb. 2004 10:42 <-- editieren / zitieren --> Unities abgeben: Nur für Heiko76
|
Heiko76 Mitglied Applikationsingenieur
Beiträge: 589 Registriert: 21.03.2002
|
erstellt am: 16. Feb. 2004 10:50 <-- editieren / zitieren --> Unities abgeben:
Hab ich auch schon versucht. Der Pfad ist in den Options von AutoCAD definiert als R:/ und darunter ist der rest des Pfades. Ich habe es aber auch schon mit R:/ probiert. Das geht auch nicht. ------------------ cu Heiko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
Beiträge: 124 Registriert: 19.08.2003 Revit 2019, ACMep2019, F360
|
erstellt am: 16. Feb. 2004 11:10 <-- editieren / zitieren --> Unities abgeben: Nur für Heiko76
hast Du es mal mit nem Backslash (\) probiert? "/" ist eher was für die Lisp'ler. Soweit ich weiss MUSS der Pfad komplett sein, Suchpfade werden hier nicht refernziert. Ausser Du gibst vieleicht nur den Blocknamen an. Ich glaub bei 2K gabs da nen Problem. Wenn Du den Block dann eingefügt bekommst, ändere mal die Blockdefinition innerhalb Deiner Zeichnung und führ den Code nochmal aus. Normalerweise sollte zumindest ein Fehler auftreten wegen überschreiben und so. Ich meine VBA nimmt dann trotz Pfad die in der Zeichnung enthaltene Blockdefinition, ist nicht immer gewünscht. Gruss, Harry Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Heiko76 Mitglied Applikationsingenieur
Beiträge: 589 Registriert: 21.03.2002
|
erstellt am: 16. Feb. 2004 11:25 <-- editieren / zitieren --> Unities abgeben:
Hi harryk, es klappt, ich glaubs ja nicht. Es lag tatsächlich an dem backslash. Danke für den Tipp. Hatte wohl mal wieder Lisp und VBA etwas durcheinander geschmissen.
------------------ cu Heiko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kiltswitch Mitglied
Beiträge: 189 Registriert: 27.10.2004 Windows 98 (Version 4.10.1998) AutoCAD 2000i
|
erstellt am: 03. Nov. 2004 15:20 <-- editieren / zitieren --> Unities abgeben: Nur für Heiko76
Hallo, ich habe ein ähnliches "Problem" wie dieses hier. Ich muß mehrere Blöcke gleichzeitig über ein VBA-Programm in die dwg einfügen - und zwar an ganz bestimmten Einfügepunkten. Nun habe ich den Code hier genommen und mit einem Block funktioniert es auch. Ich dachte mir nun, ich brauch im VBA-Editor diesen Code bloß mehrmals hinschreiben und entsprechend abändern, dass er meinetwegen 3 oder 4x da steht - also 3 oder 4 Blöcke an unterschiedlichen Einfügepunkten platziert werden. Aber irgendwas funktioniert da nicht? Was könnte falsch sein? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kiltswitch Mitglied
Beiträge: 189 Registriert: 27.10.2004 Windows 98 (Version 4.10.1998) AutoCAD 2000i
|
erstellt am: 03. Nov. 2004 15:41 <-- editieren / zitieren --> Unities abgeben: Nur für Heiko76
Ich habe den Fehler gefunden - nun klappt es auch mit mehreren Blöcken.:-) Interessant für mich wäre aber nun noch folgendes: wie kann ich einen Code schreiben, bei dem der erste Block an einem beliebigen Punkt eingefügt wird, aber der zweite Block am BASISPUNKT des ersten Blockes bzw. in BEZUG zu diesem BASISPUNKT eingefügt wird? K Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Headcase Mitglied Dipl.-Ing. (FH) --> Maschinenbau
Beiträge: 141 Registriert: 14.10.2004 WinXP Prof., SP3 AutoCAD Mechanical 2010 (2008) Inventor 2010 (2008)
|
erstellt am: 04. Nov. 2004 08:58 <-- editieren / zitieren --> Unities abgeben: Nur für Heiko76
Moin! Also Einfügen an beliebigen Punkt geht so: Nutzer wählt Punkt aus: -> pkt = ThisDrawing.Utility.GetPoint(, "Einfügepunkt wählen") Nun Block einfügen wie oben, mit pkt als Einfügepunkt. Der Basispunkt ist ja in der Blockdefinition festgelegt und somit ist nach Einfügen des Blocks Einfügepunkt=Basispunkt=pkt Für die weiteren Blöcke nun Pkt unverändert als Einfügepunkt nutzen oder die x/y/z Werte varieren, z.B. Verschiebung um 100 in positive x-Richtung -> pkt(0)=pkt(0)+100 Hoffe das hilft dir weiter... Grüße! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kiltswitch Mitglied
Beiträge: 189 Registriert: 27.10.2004 Windows 98 (Version 4.10.1998) AutoCAD 2000i
|
erstellt am: 04. Nov. 2004 09:07 <-- editieren / zitieren --> Unities abgeben: Nur für Heiko76
Zunächst mal Danke für Deinen Tipp. Bloß ist es so, dass ich nicht will, dass der Benutzer den Einfügepunkt eingibt, sondern das soll alles automatisiert ablaufen. Der erste Block wird eingefügt und es folgen alle anderen Blöcke, welche an bestimmten Punkten des ersten Blockes und in einer bestimmten Drehung angefügt werden sollen - ohne Eingabe des Bentzers. K Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Headcase Mitglied Dipl.-Ing. (FH) --> Maschinenbau
Beiträge: 141 Registriert: 14.10.2004 WinXP Prof., SP3 AutoCAD Mechanical 2010 (2008) Inventor 2010 (2008)
|
erstellt am: 04. Nov. 2004 09:27 <-- editieren / zitieren --> Unities abgeben: Nur für Heiko76
Nun, in diesem Fall musst du halt den ersten Punkt festlegen und vor jedem weiteren Einfügevorgang den Einfügepunkt relativ zum ersten neu berechnen bzw. festlegen. Das Drehen des Blockes erreicht du, in dem du für den letzten Parameter statt 0 den Drehwinkel angibst. [Diese Nachricht wurde von Headcase am 04. Nov. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kiltswitch Mitglied
Beiträge: 189 Registriert: 27.10.2004 Windows 98 (Version 4.10.1998) AutoCAD 2000i
|
erstellt am: 04. Nov. 2004 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für Heiko76
He, das klappt ja wirklich. So einfach ist das. Man muß eben bloß wissen, wie und wo man das im Code berücksichtigen muß. Und das fällt mir noch schwer, weil ich mit VBA noch nie gearbeitet habe. Danke! Bekommst auch 10 Unities dafür :-) K Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |