Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Ebenen der Unterbauteile in Baugruppe ausblenden

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:  Ebenen der Unterbauteile in Baugruppe ausblenden (4046 mal gelesen)
KAME
Mitglied
techn. Angestellter


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

Beiträge: 152
Registriert: 21.06.2006

erstellt am: 26. Mai. 2014 14: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

Hallo zusammen,

kann sein das es diese Frage schon einmal gegeben hat, hab sie jedoch nicht mit der Suche gefunden. Falls es so ist, dann wärs nett wenn mich wer dahin verlinken könnte.  

Mein Problem:

Ein Macro welches alle Ebenen der Unterbauteile einer Baugruppe zuerst ausblendet und beim wiederbetätigen des Buttons einblendet.

Mein Fortschritt:

Ich als Greenhorn und "Trial and Error" Hobby-umprogrammierer   habe mir in diesem Forum ein Macro rausgesucht welches Skizzen in den Unterbauteilen einer Baugruppe ein und wieder ausblenden kann. (http://ww3.cad.de/foren/ubb/Forum258/HTML/001104.shtml#000000)

Dieses Macro hab ich dann soweit umschreiben können, dass es alle Ebenen der Unterbauteile einer Baugruppe ein und ausblenden kann, jedoch kann es keine Ebenen ausblenden welche "manuell" (Rechtsklick auf Ebene & Sichtbarkeit) eingeblendet sind. Weiter blendet mein Macro zuerst die Ebenen ein und nicht zuerst aus.

Mein bisheriger Code:

Code:

Option Explicit

Public Sub Ebenen_switch()

Dim oWorkplane As WorkPlane
Dim v As Boolean


If ThisApplication.ActiveDocument.DocumentType = kAssemblyDocumentObject Then

    Dim oAss As AssemblyDocument
    Set oAss = ThisApplication.ActiveDocument
    Dim oRefedDoc As Document

    For Each oRefedDoc In oAss.AllReferencedDocuments
        If oRefedDoc.DocumentType = kPartDocumentObject Then
            If oRefedDoc.ComponentDefinition.WorkPlanes.item(1).Visible Then
                v = 0
            Else
                v = 1
            End If
            For Each oWorkplane In oRefedDoc.ComponentDefinition.WorkPlanes
                oWorkplane.Visible = v

            Next
        End If
    Next

End If

ThisApplication.ActiveView.Update

End Sub


Ich hoffe, dass ich mein Problem verständlich rübergebracht habe und hoffe jemand kann mir helfen  

MfG,
Kame

------------------
mfg Ronald

[Diese Nachricht wurde von KAME am 28. Mai. 2014 editiert.]

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

KAME
Mitglied
techn. Angestellter


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

Beiträge: 152
Registriert: 21.06.2006

erstellt am: 26. Mai. 2014 15: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

Kurzes Update:

hab es mit einem anderen Macro als Vorlage versucht (welches auch zum Skizzen ein-/ausblenden ist).

Ein kleiner Fortschritt ist, dass es bei diesem Macro funktioniert die "manuell" eingeblendeten Ebenen wieder auszublenden (jedoch nur die Ursprungsebenen!)
Weiters ist mir aufgefallen, dass es die Ebenen eines Trägers im Gestellgenerator nicht anspricht, was ebenfalls gelöst werden sollte.

Hier der Code mit anderer "Herangehensweise":

Code:

Option Explicit

Public Sub Ebenen_switch()

Dim oWorkplane As WorkPlane
Dim v As Boolean


If ThisApplication.ActiveDocument.DocumentType = kAssemblyDocumentObject Then

    Dim oAss As AssemblyDocument
    Set oAss = ThisApplication.ActiveDocument
    Dim oRefedDoc As Document
    Dim aus As Integer

For Each oRefedDoc In oAss.AllReferencedDocuments
If oRefedDoc.DocumentType = kPartDocumentObject Then
    aus = 0
    For Each oWorkplane In oRefedDoc.ComponentDefinition.WorkPlanes
        If oWorkplane.Visible = 0 Then aus = aus + 1
    Next
   
    If oRefedDoc.ComponentDefinition.WorkPlanes.Count / 2 < aus Then
    v = 1
    Else
    v = 0
    End If
   
    For Each oWorkplane In oRefedDoc.ComponentDefinition.WorkPlanes
        oWorkplane.Visible = v
    Next
End If
Next

For Each oWorkplane In oAss.ComponentDefinition.WorkPlanes
oWorkplane.Visible = v
Next

End If

ThisApplication.ActiveView.Update

End Sub


MfG
Kame

------------------
mfg Ronald

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: 26. Mai. 2014 18:59    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 KAME 10 Unities + Antwort hilfreich

Hallo

Wozu benötigst du das An-/Abschalten der Arbeitselemente? Nur für einen schnellen Blick zwischendurch? Dann wäre es vielleicht einfacher und schneller die Objektsichtbarkeit zu nutzen. Damit bleibt der ursprüngliche Zustand der Sichtbarkeit erhalten, wird aber temporär überschrieben. Vorteil, die Objektsichtbarkeit wird nicht gespeichert.

Code:
Private Sub ObjectVisibility()

Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.ActiveDocument

If oAssDoc.ObjectVisibility.AllWorkFeatures = True Then
    oAssDoc.ObjectVisibility.AllWorkFeatures = False
Else
    oAssDoc.ObjectVisibility.AllWorkFeatures = True
End If

End Sub


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

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

KAME
Mitglied
techn. Angestellter


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

Beiträge: 152
Registriert: 21.06.2006

erstellt am: 28. Mai. 2014 08:57    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 rkauskh,

erstmal Danke für deine Antwort. 
Das Macro ist nicht für einen kurzen Blick zwischendurch, sondern soll die Ebenen dauerhaft im Bauteil/Unterbaugruppe ausblenden (und natürlich auch so gespeichert werden, damit, wenn die Baugruppe erneut irgendwo eingebaut wird, die Ebenen nicht wieder sichtbar sind)

Die Sache ist die, dass wir mit Baugruppen bis zu 120.000 Teilen arbeiten und wenn da in irgendeiner Unterbaugruppe versteckt eine oder mehrere Ebenen eingeblendet sind, dann fängt die Suche danach an.
Angenommen ein Mitarbeiter vergisst mehrere Ebenen in einer Unterbaugruppe auszublenden und wenn dann diese Unterbaugruppe mit sichtbaren Ebenen noch mehrmals verbaut ist, dann überfordert das den Rechner schon fast.

Deshalb wäre so ein Macro ziemlich fein 

MfG,
Kame

------------------
mfg Ronald

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 28. Mai. 2014 09:43    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 KAME 10 Unities + Antwort hilfreich

Hallo,

Code:

' Macro hides work planes
' recursive for all assembly components
' FX64, Igor Zupevc, 28.05.2014
Sub HideWorkPlanesRecursive()
    If ThisApplication.Documents.Count = 0 Then
        MsgBox "Die Baugruppe öffnen.", vbExclamation, "Keine Baugruppe"
        Exit Sub
    End If
   
    If ThisApplication.ActiveDocumentType <> kAssemblyDocumentObject Then
        MsgBox "Die Baugruppe öffnen.", vbExclamation, "Keine Baugruppe"
        Exit Sub
    End If
   
    Dim oAsm As AssemblyDocument
    Set oAsm = ThisApplication.ActiveDocument
   
    SwitchWorkPlanes oAsm.ComponentDefinition, False
    ForAllComponents oAsm.ComponentDefinition.Occurrences, False
   
    oAsm.Update
End Sub

' Macro displays work planes
' recursive for all assembly components
' FX64, Igor Zupevc, 28.05.2014
Sub ShowWorkPlanesRecursive()
    If ThisApplication.Documents.Count = 0 Then
        MsgBox "Die Baugruppe öffnen.", vbExclamation, "Keine Baugruppe"
        Exit Sub
    End If
   
    If ThisApplication.ActiveDocumentType <> kAssemblyDocumentObject Then
        MsgBox "Die Baugruppe öffnen.", vbExclamation, "Keine Baugruppe"
        Exit Sub
    End If
   
    Dim oAsm As AssemblyDocument
    Set oAsm = ThisApplication.ActiveDocument
   
    SwitchWorkPlanes oAsm.ComponentDefinition, True
    ForAllComponents oAsm.ComponentDefinition.Occurrences, True
   
    oAsm.Update
End Sub

Sub ForAllComponents(oOccs As ComponentOccurrences, bVisible As Boolean)
    Dim oOcc As ComponentOccurrence
    For Each oOcc In oOccs
        On Error Resume Next       
        SwitchWorkPlanes oOcc.Definition, bVisible
       
        ForAllComponents oOcc.SubOccurrences, bVisible
    Next
End Sub

Sub SwitchWorkPlanes(oDoc As Inventor.ComponentDefinition, bVisible As Boolean)
        On Error Resume Next
        Dim oWorkPlane As WorkPlane
        For Each oWorkPlane In oDoc.WorkPlanes
            oWorkPlane.Visible = bVisible
        Next
        ThisApplication.StatusBarText = oDoc.Document.DisplayName
End Sub


?

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools
FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor

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

KAME
Mitglied
techn. Angestellter


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

Beiträge: 152
Registriert: 21.06.2006

erstellt am: 28. Mai. 2014 12:14    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 daywa1k3r,

leider funktioniert das Macro von Igor nur in Baugruppen bestehend aus Bauteilen und nicht in Baugruppen mit Unterbaugruppen.

Hab mich jetzt nochmal gespielt und würde jetzt nur noch den Code zum aktualisieren der Ansichtsdarstellung aller Bauteile und Unterbaugruppen benötigen.
Gibt es einen Befehl der nicht die Ansichtsdarstellung ändert sondern nur aktualisiert?

MfG,
Kame

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 28. Mai. 2014 12:30    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 KAME 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von KAME:
Hallo daywa1k3r,

leider funktioniert das Macro von Igor nur in Baugruppen bestehend aus Bauteilen und nicht in Baugruppen mit Unterbaugruppen.


Und wie kommst du darauf?   Das Makro läuft alle Unterbaugruppen und Unterkomponenten durch.  

BTW: daywa1k3r = Igor

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools
FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor

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

KAME
Mitglied
techn. Angestellter


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

Beiträge: 152
Registriert: 21.06.2006

erstellt am: 28. Mai. 2014 12:48    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


1.JPG


2.JPG

 
Komisch; bei mir kommt immer eine Fehlermeldung (siehe Anhang)

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

KAME
Mitglied
techn. Angestellter


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

Beiträge: 152
Registriert: 21.06.2006

erstellt am: 28. Mai. 2014 12:52    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

Hab den Fehler anscheinend gefunden.
In der Baugruppe waren 2 Unterbaugruppen unterdrückt und darum hat es nicht funktioniert. 

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 28. Mai. 2014 12:59    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 KAME 10 Unities + Antwort hilfreich

Ah, das kann sein. Einfach mal ein "On Error Resume Next" hinzufügen. Habe die Codes oben aktualisiert.

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools
FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor

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

KAME
Mitglied
techn. Angestellter


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

Beiträge: 152
Registriert: 21.06.2006

erstellt am: 04. Sep. 2014 10:22    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 Igor,

danke nochmal für das super Macro. Es tut seinen Dienst ohne Probleme.

Aber: Gibt es eine Möglichkeit, das Macro so umzuschreiben, dass es, wenn eine Unterbaugruppe bzw. ein Unterbauteil markiert ist nur die Ebenen von diesem ein-bzw. ausblendet.

Hintergedanke ist, dass wenn man eine Baugruppe mit 1000 Teilen und aufwärts offen hat, lange Wartezeiten entstehen.

MfG,
Kame

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