Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Selection

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:  Selection (2628 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: 18. Nov. 2014 12: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

Hallo Community,

ich probier gerade das API Help Example "ShowSurfaceArea2" unter "User Interaction" zum laufen zu kriegen. 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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 19. Nov. 2014 00: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 Nur für Colli123 10 Unities + Antwort hilfreich

Hallo

Dein Code sieht irgendwie anders aus als das Beispiel. Ich hab's probiert, das Beispiel funktioniert. Versuchst du die Funktionalität zu ändern oder warum weicht dein Code vom Beispiel ab?

------------------
MfG
Ralf

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 09:12    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 Ralf,

Danke für deine Antwort!
ich programmiere ja in VB.net und musste deswegen das funktionierende VBA Beispiel umschreiben.
Jetzt hab ich grad gegoogelt und gesehen das es auf cad.de, ein vb.net forum gibt. Ich bin mit der cad.de foren übersicht bisher nicht so zurecht gekommen und hab das .net forum übersehen.
Da werde ich meine Fragen Zukunft posten.

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

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



CAD-Designer

Sie suchen neue Herausforderungen in einem zukunftsorientierten und wachsenden Unternehmen?

Sie hatten schon immer eine Affinität zu 3D-Druck und der dazugehörigen Produktion?


Dann werden Sie Teil unseres Teams!

Wir sind ein innovativer Medizintechnikhersteller und haben uns auf das Design und die Herstellung von individuellen Patientenlösungen mittels 3D-Druck-Verfahren spezialisiert....

Anzeige ansehenKonstruktion, Visualisierung
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: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

Ich hab probiert den Thread zu löschen da VB.net in diesem Forum keine interessieren dürfte, geht aber nicht.

Hab ein bisschen rumprobiert, Code funktioniert jetzt. Lag warsch an VBA -> VB.net Schwierigkeiten.
Wenns jmd trotz vb.net Sprache interessiert:

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


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