| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Benutzerinteraktion -> Programmablauf anhalten um Linie zeichnen zu lassen (1090 mal gelesen)
|
sebastian. Mitglied
Beiträge: 90 Registriert: 03.09.2009 Windows XP Prof. SP3 AutoCAD 2010 Visual Studio 2008 / 2010 Prof.
|
erstellt am: 27. Nov. 2009 11:28 <-- editieren / zitieren --> Unities abgeben:
Hallo mal wieder! Es gibt ja die Möglichkeit über Methoden des Editor Objekts, wie ed.GetPoint(), seinen Programmablauf kurz anzuhalten und Benutzerinteraktion zu ermöglichen. Gibt es auch eine Möglichkeit, den Programmablauf kurz zu unterbrechen, bis der Benutzer eine Linie gezeichnet hat? Danke und Grüße, Sebastian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 27. Nov. 2009 11:33 <-- editieren / zitieren -->
Hi, >> Gibt es auch eine Möglichkeit, den Programmablauf kurz zu unterbrechen, >> bis der Benutzer eine Linie gezeichnet hat Im wahrsten Sinne des Wortes 'kurz unterbrechen' ==> NEIN Du kannst Deinen Code aufteilen in: a) eine SUB/FUNCTION: alles machen vor dem Start Linie zeichnen + Start des Linienzeichnens über SendCommand b) in obiger Sub erzeugst Du einen EventHandler, der auf COMMANDENDED hört ---dann wartet dein Programm (der EventHandler), bis der Anwender den Linienbefehl beendet hat c) und aus dem EventHandler heraus kann Dein Programm dann gezielt weiterarbeiten HTH, - alfred - ------------------ www.hollaus.at |
sebastian. Mitglied
Beiträge: 90 Registriert: 03.09.2009 Windows XP Prof. SP3 AutoCAD 2010 Visual Studio 2008 / 2010 Prof.
|
erstellt am: 27. Nov. 2009 11:53 <-- editieren / zitieren --> Unities abgeben:
Hi Alfred, schade, dass es nicht so komfortabel geht, wie bei GetPoint() z.B. Zitat: Start des Linienzeichnens über SendCommand
Wie mache ich das? Der Rest ist dann eigentlich klar. Viele Grüße, Sebastian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 27. Nov. 2009 12:07 <-- editieren / zitieren -->
Hi, wenn's wirklich um eine Linie geht, kannst Du aber auch den User nach 2 Punkten fragen und dann selbst die Linie zeichnen? Wäre zumindest mein Ansatz, ausser es geht auch noch um andere Zeichnungsfunktionen.
>> Start des Linienzeichnens über SendCommand ... Wie mache ich das? entweder so (gilt für 32bit, die 64bit Einsprungadressen sind andere)
Code: <DllImport("acad.exe", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Unicode, EntryPoint:="?acedPostCommand@@YAHPB_W@Z")> _ Public Function acedPostCommand32(ByVal CommandStr As String) As Integer End Function .... Call acedPostCommand32("_.LINE" & vbCr)
oder über COM, da geht's ja nicht um Geschwindigkeit, da der Computer dann eh auf den Anwender wartet (der Prozessor dann intern Solitär spielt;) )
Code: Dim tAcadDoc as ApplicationServices.Document tAcadDoc = ApplicationServices.Application.DocumentManager.MdiActiveDocument Dim tAcadDocCOM as Interop.IAcadDocument tAcadDocCOM = cType(tAcadDoc.AcadDocument, Interop.IAcadDocument) Call tAcadDocCOM.SendCommand("_.LINE" & vbCr)
HTH, - alfred - ------------------ www.hollaus.at |
sebastian. Mitglied
Beiträge: 90 Registriert: 03.09.2009 Windows XP Prof. SP3 AutoCAD 2010 Visual Studio 2008 / 2010 Prof.
|
erstellt am: 27. Nov. 2009 12:26 <-- editieren / zitieren --> Unities abgeben:
Hi, Im Moment geht es wirklich nur um eine Linie. Vielleicht ist an dieser Stelle daher der Ansatz mit den 2 Punkten ausreichend. Später kann ich die SendCommand Methode, v.a. die COM Version aber sicher noch brauchen ! Vielen Dank nochmal für die Infos! Grüße und einen schönen Tag, Sebastian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|