Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  ACAD-Befehl abwarten, dann VBA fortführen

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
  
NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
Autor Thema:  ACAD-Befehl abwarten, dann VBA fortführen (1782 mal gelesen)
sarotti
Mitglied
Bauingenieur


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

Beiträge: 74
Registriert: 14.07.2005

AutoCad 2022 64Bit
Windows 10-64Bit mit 32 GByte

erstellt am: 27. Feb. 2012 16:45    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

Hallo liebe Leute im Forum,

ich hab da wohl ein kleines Verständnisproblem bei Ablauf von AutoCAD und VBA.
Ein Programm soll Koordinaten von Polylinien einlesen. Es kann vorkommen das eine Linie keine Polylinie ist sondern vom Anwender vom Typ Linie erstellt wurde. Also im Programm den Befehl "pedit" einbauen damit das VBA-Programm nicht erst beendet werden muss um den Befehl auszuführen. Nur leider funktioniert dieses nicht so wie unten dargestellt. Das Programm läuft weiter ohne den Befehl abzuwarten. Was muss ich hier anderes machen?

  frm_Hauptform.Hide
      ThisDrawing.SendCommand ("_pedit" + Chr(13))
  frm_Hauptform.Show

im voraus Danke für Eure Hilfe

Sarotti

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

ManfredPS
Mitglied



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

Beiträge: 118
Registriert: 23.08.2011

..

erstellt am: 27. Feb. 2012 17:43    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 sarotti 10 Unities + Antwort hilfreich

Zitat:
Das Programm läuft weiter ohne den Befehl abzuwarten
Das Programm hat seine Pflicht erfüllt, du hast es angewiesen, dass es PEDIT und ENTER in die Befehlszeile schickt, und das hat es getan.
Verwende beispielsweise diesen Event (im nachfolgenden Code), damit du deine Form dann wieder aktivierst. Der startet an, wenn der Anwender den PEDIT-Befehl beendet hat (ob per ENTER oder ESC). In jedem Fall musst du aber prüfen, ob es richtig abgelaufen ist, nur SendCommand schicken und dann anzunehmen, dass es passt, kann schon mal zu viel Vertrauen sein. ;)
Code:
Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
    frm_Hauptform.Show
End Sub

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

sarotti
Mitglied
Bauingenieur


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

Beiträge: 74
Registriert: 14.07.2005

AutoCad 2022 64Bit
Windows 10-64Bit mit 32 GByte

erstellt am: 28. Feb. 2012 16:46    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

Hallo Manfred,

ich komm mit Deiner Lösung nicht richtig weiter.
Wenn ich es so mache funktioniert es nicht.

sub xxx
    frm_Hauptform.hide
    acaddocument_endcommand()
end sub

Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
  ThisDrawing.SendCommand ("_pedit" + Chr(13))
  frm_Hauptform.Show
End Sub

Kannst Du mir bitte auf die Sprünge helfen.

Danke

Gruß

Sarotti

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

reltro
Mitglied
student


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

Beiträge: 125
Registriert: 08.11.2009

Acad 2012 - VBA,Lisp
Revit 2012
3dsMax 2012
Rhino 5 - GH,Pyhton,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3

erstellt am: 28. Feb. 2012 18:51    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 sarotti 10 Unities + Antwort hilfreich

Um in ManfredPs's Überlegung zu bleiben:

Code:

sub xxx()
  frm_hauptform.hide
  thisDrawing.sendcommand ("_pedit" & vbcr)
end sub
'--------------------------------------------------------------------
Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
      If StrComp(CommandName, "pedit", vbTextCompare) = 0 _
        Then
          frm_Hauptform.Show
      end if
End Sub


Die Sub "AcadDocument_EndCommand" ist ein Event bezogen auf das aktive Document und benötigt keinen Aufruf, sondern wird jedes mal ausgeführt wenn ein Command beendet wird. Desswegen braucht das Ding auch eine überprüfung welcher Befehl gerade beendet wurde. Debugge das konstrukt schrittweise (F8) und schau dir an welche CommandName's dort auftauchen.

lg reltro

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

reltro
Mitglied
student


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

Beiträge: 125
Registriert: 08.11.2009

Acad 2012 - VBA,Lisp
Revit 2012
3dsMax 2012
Rhino 5 - GH,Pyhton,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3

erstellt am: 28. Feb. 2012 18:59    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 sarotti 10 Unities + Antwort hilfreich

Allerdings würde ich überprüfen ob das gewählte bzw. der zur Bearbeitung übergebene Element eine PolyLinie ist oder eben nicht.

If ... then ... else

oder auch

Code:

Dim obj as acadobject

Select Case obj.objectName
  Case "AcDbPolyline"
    ....
  Case "AcDbLine"
 
end Select


du kannst nähmlich auch die Koordinaten von Linien auslesen 


lg reltro

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

reltro
Mitglied
student


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

Beiträge: 125
Registriert: 08.11.2009

Acad 2012 - VBA,Lisp
Revit 2012
3dsMax 2012
Rhino 5 - GH,Pyhton,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3

erstellt am: 28. Feb. 2012 19:04    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 sarotti 10 Unities + Antwort hilfreich

ähm, das überprüfen machst du sowieso, sonst könntest das "_pedit" ja nicht im richtigen moment ansetzen

naja. lies doch einfach die koordinaten der Linie ein/aus. Dabei ist zu beachten welche KoordinatenStruktur dabei zurückkommt.
u know
  LWPolyline: XY / kein Z
  Line: XYZ

hope it help
lg reltro

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

sarotti
Mitglied
Bauingenieur


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

Beiträge: 74
Registriert: 14.07.2005

AutoCad 2022 64Bit
Windows 10-64Bit mit 32 GByte

erstellt am: 28. Feb. 2012 19:37    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 reltro,

jetzt habe ich verstanden wie Manfred das meinte. Es funktioniert so wie es sollte.
Das mit dem pedit im Programm ist eine Notlösung. Wenn es nur immer eine Linie wäre, dann würde ich auch die Koordinaten auslesen und umstellen. Aber einige Anwender die eine Polylinie zeichnen wollen zeichnen nicht eine Polylinie sondern mehrere Linien hintereinander. Das sieht zwar genauso aus, das Programm kann aber nicht erkennen wieviel Linien zusammen gehören und dann wird es kompliziert.

Vielen Dank für eure Hilfe!

Gruß

Sarotti

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)2025 CAD.de | Impressum | Datenschutz