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