Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Select in Zeichnungen

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:  Select in Zeichnungen (2132 mal gelesen)
THPET
Mitglied
Dipl Ing Schiffbau Meerestechnik


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

Beiträge: 31
Registriert: 01.03.2004

INVENTOR Professionell 2010
Windows XP 64
Office 2007
Visal Basic Express 2005

erstellt am: 21. Jun. 2004 20:09    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

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

PaulSchuepbach
Moderator
Programmierer




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

Beiträge: 1005
Registriert: 01.10.2003

erstellt am: 22. Jun. 2004 09:06    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 THPET 10 Unities + Antwort hilfreich

Hallo Thorsten,

Selektion in Zeichnungen ist z.Z. nicht moeglich - die APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) fuer Drawing-Dokumente ist generell noch etwas schwach auf der Brust... da kommt erst in I9 etwas mehr rein.

Gruesse,

Paul

www.morecam.ch/cad.htm

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

Heijo
Mitglied
Maschinenbauingenieur


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

Beiträge: 15
Registriert: 22.12.2004

P4P800SE
3,2GHz
1GB RAM
TFT 19"
Radeon X800 256
200GB Seagate HDD
Win XP

erstellt am: 22. Dez. 2004 08:47    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 THPET 10 Unities + Antwort hilfreich

Hallo,

Habe boch eine Möglichkeit gefunden, die gehört aber noch ausgereift:
*****************
Sub SelectFace()

    Dim oSelect As New cls1Select
    Dim oStartHLSet As HighlightSet
    Set oStartHLSet = ThisApplication.ActiveDocument.HighlightSets.Add
    Call oStartHLSet.SetColor(0, 255, 0)

    ' Call the Pick method of the clsSelect object and set
    ' the filter to pick any face.
    Dim oFace As Face
    'Referenz darauf setzen
    Set oFace = oSelect.Pick("Select a face.", kPartFaceFilter)
   
    Set oSelectSet.Type = oFace
   
    oStartHLSet.AddItem oFace

    If Not oFace Is Nothing Then
        ' Display the area of the selected face.
        Erzeugen
        MsgBox "Surface area: " & oFace.Evaluator.Area & " cm^2"
    End If
   
    oInteraction.Stop
    Set oSelect = Nothing
    Set oInteraction = Nothing
End Sub
*****************

Dazu braucht man aber die Klassendeklaration cls1Select:
-----------------
Option Explicit

' Declare the event objects
Private WithEvents oInteraction As InteractionEvents
Private WithEvents oSelect As SelectEvents

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

Public Function Pick(Prompt As String, Filter As SelectionFilterEnum) As Object
    ' Initialize flag.
    bStillSelecting = True
   
    ' Create an InteractionEvents object.
    Set oInteraction = ThisApplication.CommandManager.CreateInteractionEvents
   
    ' Define the prompt string.
    oInteraction.StatusBarText = Prompt
   
    ' Set a reference to the select events.
    Set oSelect = oInteraction.SelectEvents
   
    ' Set the filter using the value passed in.
    oSelect.AddSelectionFilter Filter
   
    ' The InteractionEvents object.
    oInteraction.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 = oSelect.SelectedEntities
    If oSelectedEnts.Count > 0 Then
        Set Pick = oSelectedEnts.Item(1)
    Else
        Set Pick = Nothing
    End If
   
    ' Stop the InteractionEvents object.
    oInteraction.Stop
   
    ' Clean up.
    'Set oSelect = Nothing
    'Set oInteraction = Nothing
End Function


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


Private Sub oSelect_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
-----------------

------------------
P4P800SE
3,2GHz
1GB RAM
TFT 19"
Radeon X800 256
200GB Seagate HDD
Win XP

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