Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Pick-Methode in idw für ein Bauteil

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:  Pick-Methode in idw für ein Bauteil (2749 mal gelesen)
M.Philipp
Mitglied
Konstruktionsingenieur


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

Beiträge: 14
Registriert: 18.09.2014

erstellt am: 05. Mrz. 2015 08:42    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 möchte gerne den user in einer idw mittels Pick Methode ein Bauteil aus einer Baugruppenansicht in der gleichen idw wählen lassen. Doch leider find ich kein passenden Filter kDrawing....

Wir haben oft die Einzelteile auf dem gleichen Zeichnungsblatt wie die dazugehörige Baugruppe.
Ziel ist es, dass der User die Baugruppe platziert und in dieser Baugruppe dann das Teil anklickt, von dem er als nächstes eine Erstansicht erzeugen will.

User wählt Teil - Pfad abfragen - Erstansicht erzeugen.

Bitte um Hilfe.

Gruß Mario

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

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


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

Beiträge: 575
Registriert: 23.04.2013

Inventor 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 05. Mrz. 2015 09:45    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 M.Philipp 10 Unities + Antwort hilfreich

Hallo Mario,

nen kDrawing-Filter finde ich auch nicht. Aber versuchs doch mal mit dem kPartDefaultFilter oder dem kPartBodyFilter.
Damit sollte es eigentlich klappen.

------------------
MFG

Chris

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

M.Philipp
Mitglied
Konstruktionsingenieur


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

Beiträge: 14
Registriert: 18.09.2014

erstellt am: 05. Mrz. 2015 09:54    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 Chris,

leider funktionieren beide Filter nicht. Ich Vermute kPart... kann man auch nur in *.ipt nehmen. Ich kann nähmlich nichts auswählen.

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

CADboogie
Mitglied
Dipl.-Ing. Konstrukteur für Luftführungssysteme


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

Beiträge: 241
Registriert: 05.08.2009

Intel Xeon@ 3,07 GHz
NVIDIA Quadro 2000
Windows 7, SP1, 64Bit
Inventor 2012 (SP2), 2014 (SP2)

erstellt am: 05. Mrz. 2015 12:40    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 M.Philipp 10 Unities + Antwort hilfreich

Hallo Mario,

ich behelfe mir in diesem Fall so, dass ich das Bauteil erst öffne.
Mit "Shift+RMT" kannst Du den Auswahlfilter auf "Bauteil" stellen und somit das Bauteil auch recht schnell öffnen..

HTH

------------------
Gruß aus Aachen,
Walter

*** Man kann nicht alles gleichzeitig machen, aber man kann alles gleichzeitig sein lassen ***

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

M.Philipp
Mitglied
Konstruktionsingenieur


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

Beiträge: 14
Registriert: 18.09.2014

erstellt am: 05. Mrz. 2015 12: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

Hallo Walter,

genau so wird das bei uns ja gemacht. Aber ich will denoch diesen Arbeitsschritt automatisieren. Danke für deine Antwort.

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 Prof.
Intel Core i7-8700K
3,70GHz, 16GB Ram
Inventor Prof. 2018 64-Bit
Visual Studio 2015 Express

erstellt am: 27. Sep. 2015 17:07    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 M.Philipp 10 Unities + Antwort hilfreich

Hallo Mario,

meines Wissens gibt es so einen Filter nicht. Meine Überlegung ist es über die in der .idw ausgewählte Kante eine Referenz zum Modell (.ipt) herzustellen, dann alle Modellkanten (in der .idw) einzublenden und dass alles in den OnPreSelect-Ereigniss zu packen, sodass nich nur eine, sondern alle Modellkanten beim OnPreSelect bzw. Drüberfahren mit dem Mauszeiger eingeblendet werden.
Es ist zwar nicht ganz so elegant, funktioniert aber in den meisten Fällen ganz gut.

Hier ist die Umsetzung:

Eine Klasse namens "clsModellAusIDW" erstellen und folgendes einfügen:

Code:

Option Explicit

    Private WithEvents eI As Inventor.InteractionEvents
    Private WithEvents eS As Inventor.SelectEvents
    Private AuswahlAktiv As Boolean
    Private occ As Inventor.ComponentOccurrence

    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
       
        Set MorePreSelectEntities = ThisApplication.TransientObjects.CreateObjectCollection
       
        '' Referenz zur Kante.
        Dim zKante As Inventor.DrawingCurve
        Set zKante = PreSelectEntity.Parent
       
        '' auf zugehörige Modellkante bzw. Modelfläche zugreifen.
        Dim mGeom As Object ' As Inventor.EdgeProxy ODER Inventor.FaceProxy
        Set 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.
            Set occ = mGeom.ContainingOccurrence
        Else: Exit Sub
        End If
       
        '' Referenz zur Ansicht.
        Dim aktAnsicht As Inventor.DrawingView
        Set aktAnsicht = zKante.Parent
       
        '' Alle Modellkanten abrufen.
        Dim zKantEnum As Inventor.DrawingCurvesEnumerator
        Set 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.
        Set eI = ThisApplication.CommandManager.CreateInteractionEvents
        '' Interaction aktivieren.
        eI.InteractionDisabled = False
       
        'eI.SelectionActive = True
       
        '' Referenz zum SelectEvent.
        Set eS = eI.SelectEvents
       
        '' Filter setzen
        eS.AddSelectionFilter (Inventor.SelectionFilterEnum.kDrawingCurveSegmentFilter)
       
        ToolTipAnzeigen
       
        '' InteractionEvents starten.
        eI.Start

        '' Schleife erzeugen: bis Auswahlvorgang beendet ist.
        Do While AuswahlAktiv
            ThisApplication.UserInterfaceManager.DoEvents
        Loop

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

    Private Sub Class_Initialize()
       AuswahlAktiv = True
    End Sub
   
    Private Sub Class_Terminate()
        '' Aufräumen
        eI.Stop
        Set eS = Nothing
        Set eI = Nothing
    End Sub

    Private Sub ToolTipAnzeigen()
        ThisApplication.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

    '' ESC-Taste wird gedruckt:
    Private Sub eI_OnTerminate()
        '' Schleife beenden.
        AuswahlAktiv = False
    End Sub



Das gehört in ein Modul (hiermit wird die Funktion aufgerufen):

Code:

Option Explicit

Public Sub ModellAusIDW()
    '' Referenzu zur Zeichnung.
    Dim zDok As DrawingDocument
    Set zDok = ThisApplication.ActiveDocument

    '' Alternative zur Pick-Methode.
    Dim ModellAusIDW As New clsModellAusIDW
    Dim Bauteil As ComponentOccurrence
    Set Bauteil = ModellAusIDW.SucheTeil
   
    '' .ipt öffnen.
    Dim tDok As PartDocument
    Set tDok = ThisApplication.Documents.Open(Bauteil.Definition.Document.FullDocumentName, True)

    '' Zeichnung wieder aktiviern.
    zDok.Activate
     
    '' Ansicht platzieren.
    ThisApplication.CommandManager.ControlDefinitions.Item("DrawingBaseViewCmd").Execute

    '' Warten, bis Ansicht platziert wird, dann .ipt schließen
    Dim AnsichtIstPlatziert As Boolean
    AnsichtIstPlatziert = False
    Do Until AnsichtIstPlatziert
        ThisApplication.UserInterfaceManager.DoEvents
        If Not ThisApplication.CommandManager.ActiveCommand = "DrawingBaseViewCmd" Then
            AnsichtIstPlatziert = True
        Else
            tDok.Close (True)
        End If
    Loop
End Sub



Einfach eine Baugruppenzeichnung öffnen und Sub ausführen.

Letzter Codeabschnitt (Schleife nach Platzierung der Ansicht) funktioniert zwar, aber wahrscheinlich gibt es dafür eine bessere Lösung.


------------------
alexander

[Diese Nachricht wurde von metalgod am 18. Feb. 2016 editiert.]

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

xerxses
Mitglied
Laufbursche


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

Beiträge: 130
Registriert: 06.09.2011

IV2019
ACDM2019

erstellt am: 09. Feb. 2016 05:35    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 M.Philipp 10 Unities + Antwort hilfreich

moin zusammen,

Ich teste gerade dieses Makro und finde es auch sehr nützlich. Eine Sache stört mich, wenn man die Auswahl mit Esc unterbricht wird das Makro nicht beendet. Es bleibt im Hintergrund noch Aktiv. gibt es eine Möglichkeit das zu ändern?

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 Prof.
Intel Core i7-8700K
3,70GHz, 16GB Ram
Inventor Prof. 2018 64-Bit
Visual Studio 2015 Express

erstellt am: 18. Feb. 2016 13:13    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 M.Philipp 10 Unities + Antwort hilfreich

Hallo xerxses,

ja, das ist möglich, wenn man Klassenmodul um diesen Sub noch erweitert (habe ich auch oben geändert):

Code:

    Private Sub eI_OnTerminate()
        AuswahlAktiv = False
    End Sub


------------------
alexander

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

xerxses
Mitglied
Laufbursche


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

Beiträge: 130
Registriert: 06.09.2011

IV2019
ACDM2019

erstellt am: 21. Feb. 2016 11: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 M.Philipp 10 Unities + Antwort hilfreich

Vielen Dank, funktioniert einwandfrei

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