Moin Moin,
wie kann mann den Select Befehl in Zeichnungen verwenden?. Das folgende Codebeispiel aus der Inventor Hilfe funktioniert nur bei Assemblys.
This sample demonstrates using the selection events to select a face.
Selection is dependent on events and VB only supports events within a class module. To use the sample copy the "TestSelection" sub into a code module. Create a new class module called "clsSelect" and copy all of the rest of the code into it.
To run the sample, have a part document open that contains some geometry and run the "TestSelection" sub. Select a face and it will display its area.
Public Sub TestSelection()
' Create a new clsSelect object.
Dim oSelect As New clsSelect
' Call the pick method of the clsSelect object and set
' the filter to pick any face.
Dim oFace As Face
Set oFace = oSelect.Pick(kPartFaceFilter)
' Check to make sure an object was selected.
If Not oFace Is Nothing Then
' Display the area of the selected face.
MsgBox "Face area: " & oFace.Evaluator.Area & " cm^2"
End If
End Sub
'*************************************************************
' The declarations and functions below need to be copied into
' a class module whose name is "clsSelect". The name can be
' changed but you'll need to change the declaration in the
' calling function "TestSelection" to use the new name.
' 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
' Initialize flag.
bStillSelecting = True
' Create an InteractionEvents object.
Set oInteractEvents = ThisApplication.CommandManager.CreateInteractionEvents
' Define that we want select events rather than mouse events.
oInteractEvents.SelectionActive = True
' Set a reference to the select events.
Set oSelectEvents = oInteractEvents.SelectEvents
' Set the filter using the value passed in.
oSelectEvents.AddSelectionFilter filter
' Start the InteractionEvents object.
oInteractEvents.Start
' Loop until a selection is made.
Do While bStillSelecting
DoEvents
Loop
' Get the selected item. If more than one thing was selected,
' just get the first item and ignore the rest.
Dim oSelectedEnts As ObjectsEnumerator
Set oSelectedEnts = oSelectEvents.SelectedEntities
If oSelectedEnts.Count > 0 Then
Set Pick = oSelectedEnts.Item(1)
Else
Set Pick = Nothing
End If
' Stop the InteractionEvents object.
oInteractEvents.Stop
' Clean up.
Set oSelectEvents = Nothing
Set oInteractEvents = 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)
' Set the flag to indicate we're done.
bStillSelecting = False
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP