Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Klasse von VB => VB.Net

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:  Klasse von VB => VB.Net (1278 mal gelesen)
GeorgK
Mitglied



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

Beiträge: 619
Registriert: 06.06.2001

Inventor 2017
Siemens NX 8.5 - 12.0
Autocad Mechanical 2017
Catia V5R19
3,4 GHz; 64 GB RAM
Windows 10
openSUSE Leap 42.3
Visual Studio 2010 - 2017
Windows 2012 R2
Vault 2017

erstellt am: 30. Sep. 2015 14: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,

ich versuche gerade die Klasse nach VB.Net zu konvertieren.

http://ww3.cad.de/foren/ubb/Forum258/HTML/001618.shtml

Leider funktioniert sie bei mir nicht. An was könnte das liegen

Option Explicit On

Imports Inventor

Public Class clsModellAusIDW


    Private WithEvents eI As ApplicationEvents
    Private WithEvents eS As SelectEvents
    Private AuswahlAktiv As Boolean
    Private occ As ComponentOccurrence
    Private m_inventorApplication As Application

    Private Sub eS_OnPreSelect(ByRef PreSelectEntity As Object, ByRef DoHighlight As Boolean, _
                              ByRef MorePreSelectEntities As Inventor.ObjectCollection, ByVal SelectionDevice As Inventor.SelectionDeviceEnum, _
                              ByVal ModelPosition As Inventor.Point, ByVal ViewPosition As Inventor.Point2d, ByVal View As Inventor.View)
        DoHighlight = False

        MorePreSelectEntities = m_inventorApplication.TransientObjects.CreateObjectCollection

        '' Referenz zur Kante.
        Dim zKante As Inventor.DrawingCurve
        zKante = PreSelectEntity.Parent

        '' auf zugehörige Modellkante bzw. Modelfläche zugreifen.
        Dim mGeom As Object ' As Inventor.EdgeProxy ODER Inventor.FaceProxy
        mGeom = zKante.ModelGeometry

        '' trotz des kDrawingCurveSegmentFilter - Filters können auch Linien von Skizzen
        '' (die Ansichtbezogen erstellt wurden wie z.B.: Schnittverlauf)
        '' selektiert werden, deswegen folgende If-Then-Else-Bediengung.
        If mGeom.Type = Inventor.ObjectTypeEnum.kFaceProxyObject Or mGeom.Type = Inventor.ObjectTypeEnum.kEdgeProxyObject Then
            '' Bezug auf referenziertes Modell festlegen.
            occ = mGeom.ContainingOccurrence
        Else
            Exit Sub
        End If

        '' Referenz zur Ansicht.
        Dim aktAnsicht As Inventor.DrawingView
        aktAnsicht = zKante.Parent

        '' Alle Modellkanten abrufen.
        Dim zKantEnum As Inventor.DrawingCurvesEnumerator
        zKantEnum = aktAnsicht.DrawingCurves(occ)

        '' Alle Modellkanten "PreSelectieren" bzw. hervorheben.
        Dim Kante As Inventor.DrawingCurve
        For Each Kante In zKantEnum
            Call MorePreSelectEntities.Add(Kante.Segments(1))
        Next
        DoHighlight = True
    End Sub

    Public Function SucheTeil() As ComponentOccurrence
        '' neues InteractionEvents-Object erzeugen.
        eI = m_inventorApplication.CommandManager.CreateInteractionEvents
        '' Interaction aktivieren.
        eI.InteractionDisabled = False

        'eI.SelectionActive = True

        '' Referenz zum SelectEvent.
        eS = eI.SelectEvents

        '' Filter setzen
        eS.AddSelectionFilter(Inventor.SelectionFilterEnum.kDrawingCurveSegmentFilter)

        ToolTipAnzeigen()

        '' InteractionEvents starten.
        eI.Start()

        '' Schleife erzeugen: bis Auswahlvorgang beendet ist.
        Do While AuswahlAktiv
            m_inventorApplication.UserInterfaceManager.DoEvents()
        Loop

        '' Bauteil zurückgeben.
        If eS.SelectedEntities.Count > 0 Then
            SucheTeil = occ
        Else
            SucheTeil = Nothing
        End If
    End Function

    'Private Sub Class_Initialize()
    Public Sub New()
        AuswahlAktiv = True
    End Sub

    'Private Sub Class_Terminate()
    Private Sub Dispose()
        '' Aufräumen
        eI.Stop()
        eS = Nothing
        eI = Nothing
    End Sub

    Private Sub ToolTipAnzeigen()
        m_inventorApplication.GeneralOptions.ShowCommandPromptTooltips = True
        eI.StatusBarText = "Bauteil wählen."
    End Sub

    Private Sub eS_OnSelect(ByVal JustSelectedEntities As ObjectsEnumerator, ByVal SelectionDevice As SelectionDeviceEnum, _
                            ByVal ModelPosition As Point, ByVal ViewPosition As Point2d, ByVal View As View)
        '' Schleife beenden.
        AuswahlAktiv = False
    End Sub


End Class

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

metalgod
Mitglied
Technischer Zeichner, Mädchen für alles


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

Beiträge: 32
Registriert: 23.09.2015

Win10x64
Intel Core i7-8700k, 3.70GHz
16GB Ram
Inventor Prof. 2016 SP2 64-Bit
Visual Studio 2015 Express

erstellt am: 27. Mai. 2016 19:24    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 GeorgK 10 Unities + Antwort hilfreich

Hallo,

falls noch Interesse besteht, hier ist die Umsetzung:

Code:
Option Explicit On
Option Strict On

Public Class clsModellAusIDW
    Private WithEvents iE As IV.InteractionEvents
    Private WithEvents sE As IV.SelectEvents
    Private bStillSelecting As Boolean = True
    Private TeilInIDW As IV.ComponentOccurrence

    Private dwgCrwSeg As IV.DrawingCurveSegment = Nothing
    Private dwgCrw As IV.DrawingCurve = Nothing
    Private aktView As IV.DrawingView = Nothing
    Private dwgCurvEnum As IV.DrawingCurvesEnumerator = Nothing

    Private Sub sE_OnPreSelect(ByRef PreSelectEntity As Object, ByRef DoHighlight As Boolean, ByRef MorePreSelectEntities As IV.ObjectCollection, ByVal SelectionDevice As IV.SelectionDeviceEnum, ByVal ModelPosition As IV.Point, ByVal ViewPosition As IV.Point2d, ByVal View As IV.View) Handles sE.OnPreSelect
        DoHighlight = False

        MorePreSelectEntities = invApp.TransientObjects.CreateObjectCollection
        'If PreSelectEntity.type = IV.ObjectTypeEnum.kDrawingCurveSegmentObject Then
        dwgCrwSeg = DirectCast(PreSelectEntity, IV.DrawingCurveSegment)
        dwgCrw = dwgCrwSeg.Parent

        If TypeOf dwgCrw.ModelGeometry Is IV.EdgeProxy Then
            TeilInIDW = DirectCast(dwgCrw.ModelGeometry, IV.EdgeProxy).ContainingOccurrence
        ElseIf TypeOf dwgCrw.ModelGeometry Is IV.FaceProxy Then
            TeilInIDW = DirectCast(dwgCrw.ModelGeometry, IV.FaceProxy).ContainingOccurrence
        Else : Exit Sub
        End If

        If Not TeilInIDW Is Nothing Then
            '' Schweissteile als Baugruppe und nicht einzeln auswählen:
            If TeilInIDW.Type = IV.ObjectTypeEnum.kComponentOccurrenceProxyObject _
                And TeilInIDW.BOMStructure = IV.BOMStructureEnum.kPhantomBOMStructure Then
                Dim BG As IV.ComponentOccurrence = DirectCast(TeilInIDW, IV.ComponentOccurrenceProxy).ContainingOccurrence
                TeilInIDW = BG
            End If

            aktView = DirectCast(dwgCrw.Parent, IV.DrawingView)
            dwgCurvEnum = aktView.DrawingCurves(TeilInIDW) 'View.DrawingCurves(occ)
            For Each TeilKurve As IV.DrawingCurve In dwgCurvEnum
                MorePreSelectEntities.Add(TeilKurve.Segments(1))
            Next
            DoHighlight = True
        End If
    End Sub


    Public Function SucheTeil() As Object
        iE = invApp.CommandManager.CreateInteractionEvents
        iE.InteractionDisabled = False
        iE.SelectionActive = True
        sE = iE.SelectEvents
        sE.AddSelectionFilter(IV.SelectionFilterEnum.kDrawingCurveSegmentFilter)
        ToolTipAnzeigen()
        iE.Start()

        Do While bStillSelecting
            invApp.UserInterfaceManager.DoEvents() 'System.Windows.Forms.Application.DoEvents()
        Loop

        Dim AusgewaehlteObjekte As IV.ObjectsEnumerator = sE.SelectedEntities
        If AusgewaehlteObjekte.Count > 0 Then
            SucheTeil = TeilInIDW
        Else : SucheTeil = Nothing
        End If

        iE.Stop()
        sE = Nothing
        iE = Nothing

        TeilInIDW = Nothing
    End Function

    Private Sub intEvent_OnTerminate() Handles iE.OnTerminate
        bStillSelecting = False
    End Sub

    Private Sub selEvent_OnSelect(ByVal JustSelectedEntities As IV.ObjectsEnumerator, ByVal SelectionDevice As IV.SelectionDeviceEnum, ByVal ModelPosition As IV.Point, ByVal ViewPosition As IV.Point2d, ByVal View As IV.View) Handles sE.OnSelect
        bStillSelecting = False
    End Sub

    Private Sub ToolTipAnzeigen()
        Dim bTooltipEnabled As Boolean = invApp.GeneralOptions.ShowCommandPromptTooltips
        invApp.GeneralOptions.ShowCommandPromptTooltips = True
        iE.StatusBarText = "Teil wählen"
    End Sub

    Public Sub Beenden()
        Finalize()
    End Sub
    Protected Overrides Sub Finalize()
        MyBase.Finalize()
    End Sub
End Class



Hiermit wird Klasse aufgerufen:

Code:
Dim oModellAusIDW As New clsModellAusIDW
Dim oModell As IV.ComponentOccurrence = DirectCast(oModellAusIDW.SucheTeil, IV.ComponentOccurrence)
oModellAusIDW.Beenden()
If oModellAusIDW IsNot Nothing Then oModellAusIDW = Nothing

------------------
alex

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