| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Insert block durch knopf drück (2641 mal gelesen)
|
dw Mitglied cad
Beiträge: 45 Registriert: 29.06.2007
|
erstellt am: 07. Dez. 2007 15:10 <-- editieren / zitieren --> Unities abgeben:
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 07. Dez. 2007 21:33 <-- editieren / zitieren --> Unities abgeben: Nur für dw
Hallo dw, warum willst Du mit SendCommand den Umweg über die Befehlszeile machen. Probiers mal mit der InsertBlock Methode: Dim insertionPnt(0 To 2) As Double Dim blockRefObj As AcadBlockReference insertionPnt(0) = 2#: insertionPnt(1) = 2#: insertionPnt(2) = 0 Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "D:\Autocad\glass.dwg", 1#, 1#, 1#, 0) Natürlich müßtest Du vorher abfragen wohin der Punkt gesetzt werden soll und evtl. Maßstäbe festlegen. Grüße, Klaus PS: Füll doch mal Dein Profil aus (SystemInfo), bei manchen Anfragen kann das ganz hilfreich sein. Außerdem kann Korrekturlesen den anderen Forumslesern vielleicht helfen Deine Anfrage schneller zu verstehen (Stichwort: Tippfehler) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dw Mitglied cad
Beiträge: 45 Registriert: 29.06.2007
|
erstellt am: 09. Dez. 2007 20:50 <-- editieren / zitieren --> Unities abgeben:
Danke für dein antword, habe es jetzt zo gemacht aber es wurde mir sehr intresieren wie ich das alles inerhab VBA behalten kann. und type feller kommen vor weil ich Hollander bin sorry... Dim startPnt As Variant 'Het startpunt van dat object, nodig om hoek te bepalen. Dim basePnt As Variant 'Het aanwijspunt van dat object. frmtrusstype.Hide ThisDrawing.Layers.Add ("Eurotruss_FD_31") ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item("Eurotruss_FD_31") basePnt = ThisDrawing.Utility.GetPoint(, "Basis punkt angeben:") '(, "" & vbCr & "Basis punkt angeben:") MsgBox "nu komt de rest" ThisDrawing.SendCommand ("_-insert" & vbCr) ThisDrawing.SendCommand ("D:\support\glass.dwg " & vbCr & "basePnt" & vbCr & vbCr & vbCr)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
Beiträge: 1357 Registriert: 24.07.2002 AutoCAD ACA 2018 Solidworks 2016 Sp5 Enterprise PDM 2016 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell T3620 Intel Core i7-7700K 16 GB Arbeitsspeicher 2x Samsung S24C650 Dell M4800
|
erstellt am: 10. Dez. 2007 08:01 <-- editieren / zitieren --> Unities abgeben: Nur für dw
Hi dw, Wie Klaus es schon geschrieben hat, musst du folgendes machen: Anstatt:
Code: ThisDrawing.SendCommand ("_-insert" & vbCr) ThisDrawing.SendCommand ("D:\support\glass.dwg " & vbCr & "basePnt" & vbCr & vbCr & vbCr)
musst du das nehmen:
Code: Dim blockRefObj As AcadBlockReference Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "D:\Autocad\glass.dwg", 1#, 1#, 1#, 0)
Gruß, Carsten Edit: Ein Holländer aus der Schweiz?!
[Diese Nachricht wurde von Carsten1210 am 10. Dez. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 10. Dez. 2007 12:29 <-- editieren / zitieren --> Unities abgeben: Nur für dw
Hallo dw, hab Dir den Code noch mal zusammengestellt: Code: Dim startPnt As Variant 'Het startpunt van dat object, nodig om hoek te bepalen. Dim basePnt As Variant 'Het aanwijspunt van dat object. Dim blockRefObj As AcadBlockReference frmtrusstype.Hide
ThisDrawing.Layers.Add ("Eurotruss_FD_31") ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item("Eurotruss_FD_31") basePnt = ThisDrawing.Utility.GetPoint(, "Basis punkt angeben:") MsgBox "nu komt de rest" ' Diese Zeilen sind nicht nötig,
' ThisDrawing.SendCommand ("_-insert" & vbCr) ' ThisDrawing.SendCommand ("D:\support\glass.dwg " & vbCr & "basePnt" & vbCr & vbCr & vbCr) ' dafür: Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(basePnt, "D:\Autocad\glass.dwg", 1#, 1#, 1#, 0) 'sofortiges zeichnen des Blockes blockRefObj.update
Nachteil dieser Methode ist aber dass Attribute nicht abgefragt werden sondern nur der Block gezeichnet wird. Das heißt: Du müßtest die Attribute in Deinem Formular vorher abfragen und dann diese ergänzen. Alternativ könntest Du natürlich auch einen String definieren mit den x,y - Koordinaten und diesen dem SendCommand mitgeben.
Code:
Dim KorText as String Dim SendString as StringKorText = Trim(Str(basePnt(0))) + "," + Trim(Str(basePnt(1))) ThisDrawing.SendCommand ("D:\support\glass.dwg " & vbCr & KorText & vbCr & vbCr & vbCr & vbCr)
Grüße in die Schweiz, Klaus [Diese Nachricht wurde von KlaK am 10. Dez. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dw Mitglied cad
Beiträge: 45 Registriert: 29.06.2007
|
erstellt am: 11. Dez. 2007 13:28 <-- editieren / zitieren --> Unities abgeben:
Es funktioniert wunderbar aber wie kann ich jetzt sagen das ich selbst eine grade einfugen will. Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(basePnt, "D:\Autocad\glass.dwg", 1#, 1#, 1#, 0) was wird gemeint mit 1#, und was muss ich da ändern das ich selbst die Ecke bestimmen kann?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
Beiträge: 1357 Registriert: 24.07.2002 AutoCAD ACA 2018 Solidworks 2016 Sp5 Enterprise PDM 2016 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell T3620 Intel Core i7-7700K 16 GB Arbeitsspeicher 2x Samsung S24C650 Dell M4800
|
erstellt am: 11. Dez. 2007 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für dw
|
dw Mitglied cad
Beiträge: 45 Registriert: 29.06.2007
|
erstellt am: 11. Dez. 2007 15:33 <-- editieren / zitieren --> Unities abgeben:
|
| Werkstudent (w/m/d) Planung und Simulation von elektro- und kommunikationstechnischen Anlagen | Seit der Gründung der Gesellschaft im Jahre 1988 etabliert sich das Planungsbüro für alle elektrotechnischen Belange und mit dem Fokus auf Baumaßnahmen und Großprojekte in Deutschland. Planungsqualität, Termintreue und Kompetenz in den unterschiedlichen Bereichen kennzeichnen das Ingenieurbüro und sein derzeit 15-köpfiges Team. Wir sind Mitglied der Hamburgischen Ingenieurkammer Bau und zertifiziert nach DIN 14675 und DIN EN ISO 9001:2015.... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
Carsten1210 Mitglied staatl. geprüfter Holztechniker
Beiträge: 1357 Registriert: 24.07.2002 AutoCAD ACA 2018 Solidworks 2016 Sp5 Enterprise PDM 2016 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell T3620 Intel Core i7-7700K 16 GB Arbeitsspeicher 2x Samsung S24C650 Dell M4800
|
erstellt am: 11. Dez. 2007 19:50 <-- editieren / zitieren --> Unities abgeben: Nur für dw
|