Mostra nascondi componenti

Davimont

Utente Standard
Professione: Disegnatore meccanico Fai da te.
Software: Solid Edge ST10
Regione: Lombardia
#1
Capita spesso di nascondere momentaneamente dei componenti per una veloce verifica e poi di doverne rimostrare solo alcuni.
Dall'area grafica non è più possibile individuarli e nell'albero è difficile trovare quello giusto.
Secondo voi è complicato creare una macro che semplicemente inverte lo stato di visualizzazione? Tutto quello che è visibile lo nasconde e quello nascosto lo visualizza.
In questo modo sarebbe un'attimo rimettere il flag al particolare da rimostrare.

Nel cugino SolidWorks è presente questo comando ed è comodissimo.
Grazie a chi vorrà aiutarmi.
 

MdpMdp

Utente Junior
Professione: Progettista
Software: ThinkDesign/SolidEdge
Regione: Friuli
#3
Forte ... fa il cosidetto mostra/nascondi componente.
Purtroppo su un assieme da 100 componenti al primo avvio risulta essere lentissimo.
Peccato che in SE non ci sia in maniera nativa....
Usavamo in azienda dove lavoro T3 e questo comando è presente da moltissimi anni.
Provate, se avete occasione, questo comando in T3 (Thinkdesign), è davvero "Super".
Abbiamo già inoltrato richiesta per integrarlo nativamente (già dalla ST3) ma ancora nulla.

Be_on_edge, è possibile avere il sorgente della macro??

Ciao
 

Be_on_edge

Moderatore
Staff Forum
Professione: Progettazione
Software: Solid Edge
Regione: Emilia Romagna
#4
Codice:
Dim objApp As SolidEdgeFramework.Application
Dim objAsm As SolidEdgeAssembly.AssemblyDocument

Dim occ_visible As New Collection
Dim occ_hidden As New Collection

Sub Main()
    
    Set objApp = GetObject(, "SolidEdge.Application")
    Set objAsm = objApp.ActiveDocument
    
    Call RevertView
    
End Sub

Sub RevertView()
    
    objApp.ScreenUpdating = False
    objApp.DelayCompute = True
    
    objAsm.SelectSet.SuspendDisplay
    
    Call collect_Occurrences(objAsm)   
    
    Call objApp.StartCommand(33072) ' ex 33094
    
    objAsm.SelectSet.RemoveAll
    
    For Each Item In occ_hidden
        
        objAsm.SelectSet.Add Item
        
    Next Item
    
    objApp.ScreenUpdating = True
    objApp.DelayCompute = False
    
    Call objApp.StartCommand(33093)
    
    objAsm.SelectSet.RemoveAll
    
    objAsm.SelectSet.ResumeDisplay
    
    Set objAsm = Nothing
    Set objApp = Nothing
    
    End

End Sub

Sub collect_Occurrences(asmRef As SolidEdgeAssembly.AssemblyDocument)
    
    For Each Item In asmRef.Occurrences
        
        If Item.Type <> igSubAssembly Then
        
            If Item.Visible = True Then
                occ_visible.Add Item
            Else
                occ_hidden.Add Item
            End If
            
        Else
            
            Call collect_subOccurrences(Item.SubOccurrences)
            
        End If
        
    Next Item
    
End Sub

Sub collect_subOccurrences(asmSub As SolidEdgeAssembly.SubOccurrences)
    
    For Each Item In asmSub
        
        If Item.SubOccurrenceDocument.Type <> igAssemblyDocument Then
        
            If Item.Visible = True Then
                occ_visible.Add Item.Reference
            Else
                occ_hidden.Add Item.Reference
            End If
            
        Else
            
            Call collect_subOccurrences(Item.SubOccurrences)
            
        End If
        
    Next Item
    
End Sub
 

MdpMdp

Utente Junior
Professione: Progettista
Software: ThinkDesign/SolidEdge
Regione: Friuli
#5
Grande, grazie.
Vediamo se si riesce a renderlo più veloce
 

Davimont

Utente Standard
Professione: Disegnatore meccanico Fai da te.
Software: Solid Edge ST10
Regione: Lombardia
#7
Be_on_edge ti ringrazio infinitamente. E' proprio quello che cercavo.:smile:
 

Davimont

Utente Standard
Professione: Disegnatore meccanico Fai da te.
Software: Solid Edge ST10
Regione: Lombardia
#8
Segnalo un'errore che esce usando la macro.
L'ho usata già su altri assiemi senza nessun problema ma oggi con un nuovo assieme mi dice

errore.png
Uso SE ST7 MP11.

Chiuso l'errore mi si blocca l'area grafica. E' possibile cliccare sui comandi e anche muovere l'orbita 3D ma non si vede muovere niente.
Posso solo chiudure e riaprire il programma.
 

Be_on_edge

Moderatore
Staff Forum
Professione: Progettazione
Software: Solid Edge
Regione: Emilia Romagna
#9
Segnalo un'errore che esce usando la macro.
L'ho usata già su altri assiemi senza nessun problema ma oggi con un nuovo assieme mi dice

View attachment 43573
Uso SE ST7 MP11.

Chiuso l'errore mi si blocca l'area grafica. E' possibile cliccare sui comandi e anche muovere l'orbita 3D ma non si vede muovere niente.
Posso solo chiudure e riaprire il programma.
La macro disabilita l'area grafica per accellerare le prestazioni; se come a te va in crash nessuno poi la riabilita.
Se lanci nuovamente la macro ed arriva fino in fondo te la dovrebbe riabilitare.
Occorre insere una routine di controllo errore che nel caso riabilita l'area grafica.

Sarebbe poi interessante come riprodurre questo crash