Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Drawing browserselect visible

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:  Drawing browserselect visible (552 / mal gelesen)
BernoAn
Mitglied



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

Beiträge: 164
Registriert: 16.01.2014

erstellt am: 13. Apr. 2022 08:16    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,

ich habe ein Drawing mit mehreren Ansichten auf einem Blatt.

Nun habe ich über vba mit Node,"Doselect" ein Bauteil/Baugruppe im Browser selektiert.

Das Problem ist:
Auf manchen Ansichten ist in dem Bauteil im Browser die "Sichtbarkeit" aus.

Gibt es eine möglichkeit herauszufinden ob das Browser selektierte Bauteil "Sichtbarkeit" an oder aus ist ?

Das hier ist ein Beispielcode,,,,,,


Code:

Sub GetSelectedItemsInBrowser()
    Dim doc As Document
    Set doc = ThisApplication.ActiveDocument

    If Not TypeOf doc Is DrawingDocument Then
        MsgBox "Open a drawing document first"
        Exit Sub
    End If

    Dim bp As BrowserPane
    Set bp = doc.BrowserPanes("DlHierarchy")
   
    Dim items As String
    items = GetSelectedItems(bp.TopNode.Browsernodes)
   
   
' hier möchte ich wissen, ist am selektierteten Browser Bauteil die "Sichtbarkeit" an/aus?

   
    MsgBox items
   
   
End Sub

Function GetSelectedItems(nodes As BrowserNodesEnumerator) As String
    Dim node As BrowserNode
    For Each node In nodes
        If node.Selected Then
            GetSelectedItems = GetSelectedItems _
                + vbCrLf + node.BrowserNodeDefinition.Label
        End If
       
        GetSelectedItems = GetSelectedItems _
            + GetSelectedItems(node.Browsernodes)
    Next
End Function


Lg
Berno

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 15. Apr. 2022 11:36    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 BernoAn 10 Unities + Antwort hilfreich

Hallo

Die Sichtbarkeit kann man über die GetVisibility Methode des DrawingViews ermitteln. Kannst du sagen was mit den ermittelten Nodes passieren soll?

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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

BernoAn
Mitglied



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

Beiträge: 164
Registriert: 16.01.2014

erstellt am: 19. Apr. 2022 15:21    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

Es wird im Grunde ein Bauteil aus der Stückliste gesucht und im Browser über Browsernodes und Doselect im Drawingview selektiert, damit ich eine Positionsnummer anhängen kann.
Wenn das Bauteil unsichtbar ist soll weitergesucht werden bis das Bauteil in einer anderen Anicht gefunden wird.


GetVisibility habe ich schon probiert aber ich bekomme den Bezug zum richtigen Dwawingview nicht hin.

Gruß
Berno

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 19. Apr. 2022 17:25    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 BernoAn 10 Unities + Antwort hilfreich

Hallo

Mach das vielleicht besser über DrawingView.DrawingCurves([ModelObject] As Variant) As DrawingCurvesEnumerator Methode. In einer Schleife durch alle DrawingViews laufen und mit der Methode alle DrawingCurves holen. Ist die zurückgegebene Menge Null, kannst gleich mit der nächsten Ansicht weitermachen. Unabhängig von der Sichtbarkeit im Browser, könnte das Bauteil ja auch komplett verdeckt sein. Wenn was zurückkommt, hast du gleich die DrawingCurves zusammen, die für die PosNr. in Frage kommen.

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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

BernoAn
Mitglied



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

Beiträge: 164
Registriert: 16.01.2014

erstellt am: 20. Apr. 2022 15:29    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,


Ich hab heute probiert, aber ich komme nicht weiter.

Danke für deine Hilfe!

Gruß
Berno

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 21. Apr. 2022 10:04    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 BernoAn 10 Unities + Antwort hilfreich

Hallo

Ich vermute du willst fehlende Positionsnummern ergänzen? Dazu soll das entsprechende Bauteil selektiert werden, damit es in allen Ansichten hervorgehoben wird? Das wird nicht 100% deinen Anforderungen entsprechen, sollte aber einige Hinweise geben wie man es umsetzen könnte.

Code:

Option Explicit

Private Sub SelectUnposed()

Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.ActiveDocument

Dim oSheet As Sheet
Set oSheet = oDrawDoc.ActiveSheet

If Not oSheet.DrawingViews(1).ReferencedDocumentDescriptor.ReferencedDocumentType = kAssemblyDocumentObject Then
    Exit Sub
End If

Dim oAssDoc As AssemblyDocument
Set oAssDoc = oSheet.DrawingViews(1).ReferencedDocumentDescriptor.ReferencedDocument

Dim oBOM As DrawingBOM
Set oBOM = oDrawDoc.DrawingBOMs.Item(1)

Dim oCompDef As ComponentDefinition
Dim oBOMDoc As Document
Dim oBOMRow As DrawingBOMRow
Dim oDrawCurves As DrawingCurvesEnumerator
Dim oView As DrawingView
Dim oDrawCurve As DrawingCurve
Dim oDrawCurveSeg As DrawingCurveSegment
Dim oOcc As ComponentOccurrence
Dim oOccs As ComponentOccurrencesEnumerator

Dim oHLSet As HighlightSet
Set oHLSet = oDrawDoc.CreateHighlightSet


oHLSet.color = ThisApplication.TransientObjects.CreateColor(255, 128, 255)

For Each oBOMRow In oBOM.DrawingBOMRows
  If oBOMRow.Ballooned = False Then
    For Each oCompDef In oBOMRow.BOMRow.ComponentDefinitions
        Set oBOMDoc = oCompDef.Document
        Set oOccs = oAssDoc.ComponentDefinition.Occurrences.AllReferencedOccurrences(oBOMDoc)
        For Each oView In oSheet.DrawingViews
            For Each oOcc In oOccs
                Set oDrawCurves = oView.DrawingCurves(oOcc)
                If oDrawCurves.Count > 0 Then
                    For Each oDrawCurve In oDrawCurves
                        For Each oDrawCurveSeg In oDrawCurve.Segments
                            If oDrawCurveSeg.HiddenLine = False Then
                                Call oHLSet.AddItem(oDrawCurveSeg)
                            End If
                        Next
                    Next
                End If
                Set oDrawCurves = Nothing
            Next
        Next
    Next
       
    Dim oTargetCurveSeg As DrawingCurveSegment
    Set oTargetCurveSeg = ThisApplication.CommandManager.Pick(kDrawingCurveSegmentFilter, "Wählen Sie eine Kante für die Bemaßung aus...")
   
    If Not oTargetCurveSeg Is Nothing Then
        Call CreateBalloon(oDrawDoc, oSheet, oTargetCurveSeg)
    End If
   
    Call oHLSet.Clear
  End If
Next


End Sub

Private Sub CreateBalloon(ByVal oDrawDoc As DrawingDocument, ByVal oActiveSheet As Sheet, ByVal oDrawingCurveSegment As DrawingCurveSegment)

    ' Set a reference to the drawing curve.
    Dim oDrawingCurve As DrawingCurve
    Set oDrawingCurve = oDrawingCurveSegment.Parent

    ' Get the mid point of the selected curve
    ' assuming that the selection curve is linear
    Dim oMidPoint As Point2d
    Set oMidPoint = oDrawingCurve.MidPoint

    ' Set a reference to the TransientGeometry object.
    Dim oTG As TransientGeometry
    Set oTG = ThisApplication.TransientGeometry

    Dim oLeaderPoints As ObjectCollection
    Set oLeaderPoints = ThisApplication.TransientObjects.CreateObjectCollection

    ' Create a leader point.
    Call oLeaderPoints.Add(oTG.CreatePoint2d(oMidPoint.X + 1, oMidPoint.y - 1))
       
    ' Add the GeometryIntent to the leader points collection.
    ' This is the geometry that the balloon will attach to.
    Dim oGeometryIntent As GeometryIntent
    Set oGeometryIntent = oActiveSheet.CreateGeometryIntent(oDrawingCurve, oMidPoint)
    Call oLeaderPoints.Add(oGeometryIntent)

    Dim oBalloon As Balloon
    Set oBalloon = oDrawDoc.ActiveSheet.Balloons.Add(oLeaderPoints)
End Sub


------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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

BernoAn
Mitglied



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

Beiträge: 164
Registriert: 16.01.2014

erstellt am: 21. Apr. 2022 12:51    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,

Vielen Dank für den Code und die Arbeit die du dir gemacht hast.
Aus dem Code werde ich einiges übernehmen!

Echt toll, danke!

Gruß
Berno

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