Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Insert block durch knopf drück

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von dw an!   Senden Sie eine Private Message an dw  Schreiben Sie einen Gästebucheintrag für dw

Beiträge: 45
Registriert: 29.06.2007

erstellt am: 07. Dez. 2007 15:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Wer kann mch helfen,

Ich muchte auf einem button drucken und ein block würd importiert.

ThisDrawing.SendCommand ("-_insert" & vbCr & "D:\Autocad\glass" & vbCr)

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für dw 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von dw an!   Senden Sie eine Private Message an dw  Schreiben Sie einen Gästebucheintrag für dw

Beiträge: 45
Registriert: 29.06.2007

erstellt am: 09. Dez. 2007 20:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Carsten1210 an!   Senden Sie eine Private Message an Carsten1210  Schreiben Sie einen Gästebucheintrag für Carsten1210

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für dw 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für dw 10 Unities + Antwort hilfreich

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 String

KorText = 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


Sehen Sie sich das Profil von dw an!   Senden Sie eine Private Message an dw  Schreiben Sie einen Gästebucheintrag für dw

Beiträge: 45
Registriert: 29.06.2007

erstellt am: 11. Dez. 2007 13:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Carsten1210 an!   Senden Sie eine Private Message an Carsten1210  Schreiben Sie einen Gästebucheintrag für Carsten1210

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für dw 10 Unities + Antwort hilfreich

Hi dw,

die drei 1# stehen für den Skalierfaktor der X-, Y- und Z-Achsen des Blocks.

Was meinst du mit

Zitat:
was muss ich da ändern das ich selbst die Ecke bestimmen kann?

 

Gruß, Carsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

dw
Mitglied
cad


Sehen Sie sich das Profil von dw an!   Senden Sie eine Private Message an dw  Schreiben Sie einen Gästebucheintrag für dw

Beiträge: 45
Registriert: 29.06.2007

erstellt am: 11. Dez. 2007 15:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

ich meinte drehen. das will ich selbst bestimmen im Zeichnung drin.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



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 ansehenElektrotechnik, Elektronik
Carsten1210
Mitglied
staatl. geprüfter Holztechniker


Sehen Sie sich das Profil von Carsten1210 an!   Senden Sie eine Private Message an Carsten1210  Schreiben Sie einen Gästebucheintrag für Carsten1210

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für dw 10 Unities + Antwort hilfreich

Hi dw,

Ich gehe mal davon aus, das du den Block sichtbar am Cursor drehen willst.
Dann wirst du nicht um eine kombinierte VBA/Lisp-Lösung drum herum kommen. Ein Beispiel dazu findest du in diesem Beitrag.

Gruß, Carsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz