Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Face Selection aus API Help

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:  Face Selection aus API Help (1701 mal gelesen)
Colli123
Mitglied
Maschinenbau Student


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

Beiträge: 32
Registriert: 18.10.2014

Inventor 2013
Visual Studio 2010

erstellt am: 19. Nov. 2014 09: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

Hallo zusammen!

Mir gehts gerade darum herauszufinden, wie man über den End User eine Fläche auswählen lässt und dann die ausgewählte Fläche im Sketch Modus startet.
Ich probier deswegen gerade das API Help Example "ShowSurfaceArea2" unter "User Interaction" zum laufen zu kriegen. Die API Help Beispiele sind ja für VBA ausgelegt, deswegen kann es gut sein das ich typisches VBA zu VB.net Fehler gemacht habe. Es gibt über google schon einige Threads zu finden die sich mit dem Thema beschäftigen, aber ich konnte keine funktionierende Lösung finden.
Momentan sieht mein Code so aus:


 

Code:
Declare the event objects
        Private WithEvents oInteractEvents As InteractionEvents
        Private WithEvents oSelectEvents As SelectEvents

        ' Declare a flag that's used to determine when selection stops.
        Private bStillSelecting As Boolean

        Public Function Pick(filter As SelectionFilterEnum) As Object
            Dim mApp As Inventor.Application
            mApp = Marshal.GetActiveObject("Inventor.Application")

            bStillSelecting = True

            ' Create an InteractionEvents object.
            oInteractEvents = mApp.CommandManager.CreateInteractionEvents

            ' Ensure interaction is enabled.
            oInteractEvents.InteractionDisabled = False

            ' Define that we want select events
            oInteractEvents.SelectionActive = True

            ' Set a reference to the select events.
            oSelectEvents = oInteractEvents.SelectEvents

            ' Set the filter using the value passed in.
            oSelectEvents.AddSelectionFilter(filter)

            ' Start the InteractionEvents object.
            'Hier ändert sich der Mauszeiger zum Auswahl Cursor
            'es lässt sich aber keine Fläche auswählen
            oInteractEvents.Start()

            'MsgBox("Select the face you want to measure")
            'Mit  Pick lässt sich eine Fläche auswählen, aber
            'ich weiß nicht wie man sie einem OBjekt zuweist, um
            'die Fläche weiter verwenden zu können
            'mApp.CommandManager.Pick(Inventor.SelectionFilterEnum.kAllPlanarEntities, "Pick planar")

            ' Loop until a selection is made.
            Do While bStillSelecting
                'Was macht DoEvents()?
                mApp.CommandManager.Pick(Inventor.SelectionFilterEnum.kAllPlanarEntities, "Pick planar")
                'System.Windows.Forms.Application.DoEvents()
                'mApp.UserInterfaceManager.DoEvents()
            Loop

            ' Get the selected item. If more than one thing was selected,
            'get the first item and ignore the rest.
            Dim oSelectedEnts As ObjectsEnumerator

            oSelectedEnts = oSelectEvents.SelectedEntities
            If oSelectedEnts.Count > 1 Then
                Pick = oSelectedEnts.Item(1)
            Else
                Pick = Nothing
            End If

            ' Stop the InteractionEvents object.
            oInteractEvents.Stop()

            ' Clean up.
            oSelectEvents = Nothing
            oInteractEvents = Nothing
        End Function


1.Ab oInteractEvents.Start() Änder sich der Mauszeiter in Inventor zu dem Auswahl Cursor, es lässt sich aber nichts auswählen.
2.Mit der ausgeklammerten Pick Methode lässt sich eine Fläche auswählen, aber ich weiß nicht wie man die ausgewählte Fläche einem Objekt zuweisen kann, um sie weiterzuverwenden.
3.Die Do While Schleife wiederholt endet nicht.

Ich freu mich über jede Idee!

Schöne Grüße
Colli

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

Colli123
Mitglied
Maschinenbau Student


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

Beiträge: 32
Registriert: 18.10.2014

Inventor 2013
Visual Studio 2010

erstellt am: 19. Nov. 2014 10: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

Hab ein bisschen rumprobiert, Code funktioniert jetzt. Warum weiß ich auch nicht 
Lag warsch an VBA -> VB.net Schwierigkeiten.

   

Code:
Option Explicit On
    Imports Inventor
    Imports System.Runtime.InteropServices
    Imports Microsoft.Win32

    Class ClsSelect

        ' Declare the event objects
        Private WithEvents oInteractEv As InteractionEvents
        Private WithEvents oSelectEv As SelectEvents

        ' Declare a flag that's used to determine when selection stops.
        Private bStillSelecting As Boolean

        'VB.net Vorschlag aus cad.de -vb.net
        'Public Function Pick(ByVal filter As SelectionFilterEnum, ByVal oAppOselect As Application) As Object
        Public Function Pick(filter As SelectionFilterEnum) As Object

            Dim mApp As Inventor.Application
            mApp = Marshal.GetActiveObject("Inventor.Application")

            bStillSelecting = True

            'Laut cad.de über oAppOSelect
            ' Create an InteractionEvents object.
            'oInteractEv = mApp.CommandManager.CreateInteractionEvents
            oInteractEv = mApp.CommandManager.CreateInteractionEvents

            ' Ensure interaction is enabled.
            oInteractEv.InteractionDisabled = False

            ' Define that we want select events
            oInteractEv.SelectionActive = True

            ' Set a reference to the select events.
            oSelectEv = oInteractEv.SelectEvents

            ' Set the filter using the value passed in.
            oSelectEv.AddSelectionFilter(filter)

            ' Start the InteractionEvents object.
            'Hier ändert sich der Mauszeiger zum Auswahl Cursor
            'es lässt sich aber keine Fläche auswählen
            oInteractEv.Start()

            'MsgBox("Select the face you want to measure")
            'Mit  Pick lässt sich eine Fläche auswählen, aber
            'ich weiß nicht wie man sie einem OBjekt zuweist, um
            'die Fläche weiter verwenden zu können
            'mApp.CommandManager.Pick(Inventor.SelectionFilterEnum.kAllPlanarEntities, "Pick planar")

            ' Loop until a selection is made.
            Do While bStillSelecting
                'Was macht DoEvents()?
                Try
                    'mApp.CommandManager.Pick(Inventor.SelectionFilterEnum.kAllPlanarEntities, "Pick planar")
                    System.Windows.Forms.Application.DoEvents()
                    'mApp.UserInterfaceManager.DoEvents()
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try


            Loop

            ' Get the selected item. If more than one thing was selected,
            'get the first item and ignore the rest.
            Dim oSelectedEnts As ObjectsEnumerator

            oSelectedEnts = oSelectEv.SelectedEntities
            If oSelectedEnts.Count > 0 Then
                Pick = oSelectedEnts.Item(1)
            Else
                Pick = Nothing
            End If

            ' Stop the InteractionEvents object.
            oInteractEv.Stop()

            ' Clean up.
            oSelectEv = Nothing
            oInteractEv = Nothing
        End Function

        Private Sub oInteractEvents_OnTerminate()
            ' Set the flag to indicate we're done.
            bStillSelecting = False
        End Sub

        Private Sub oSelectEvents_OnSelect(ByVal JustSelectedEntities As ObjectsEnumerator, ByVal SelectionDevice As SelectionDeviceEnum, ByVal ModelPosition As Point, ByVal ViewPosition As Point2d, ByVal View As View) Handles oSelectEv.OnSelect
            ' Set the flag to indicate we're done.
            bStillSelecting = False
        End Sub

    End Class


[Diese Nachricht wurde von Colli123 am 19. Nov. 2014 editiert.]

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