Baugruppenverschiebung Geänderte Teile anzeigen

Hallo ihr alle

Ich arbeite gerade in einer Baugruppe, in der die Abmessungen der Teile über den Notizblock verwaltet werden.

Dies ist sehr praktisch, da Sie damit eine einzelne Dimension ändern können und die Software sich um die Aktualisierung der verknüpften Elemente kümmert.

Ich möchte jedoch, dass die Teile hervorgehoben werden, die vor dem Update geändert werden, da ich viele Teile miteinander in Beziehung habe und ich keine in der Planaktualisierung vergessen möchte.

Weiß jemand, ob dies in Solidworks möglich ist?

 

1 „Gefällt mir“

Wie wird die Verbindung zwischen Notepad und SolidWorks hergestellt? Direkt oder Makro? 

Die Verknüpfung erfolgt live über das Menü Gleichungen

Leider weiß ich nicht, ich werde mir ansehen, wie es funktioniert

 

EDIT Ok, ich habe gerade etwas gelernt:) Trotzdem sehe ich nicht, wie man einen Alarm oder irgendetwas setzt :/

 

 

Hallo

Ich weiß nicht, kannst du ein Beispiel posten?

Möge die Macht mit dir sein

Ich habe es generiert, um zu entdecken,


maj_dassemblage_montrer_ieces_modifiees.zip

Hier ist ein Beispiel.

Beachten Sie, dass, wenn ich einen der Parameter in meinem Editor ändere, dies Auswirkungen auf die beiden Teile in meiner Baugruppe hat, sobald ich auf Neu erstellen klicke

Bei einer Baugruppe mit mehreren Teilen kann es für SOLIDWORKS interessant sein, die Teile, die von dieser Änderung betroffen sind, vor dem Neuaufbau rot zu setzen.

Egal wie sehr ich suche, ich finde nicht, wie ich es machen soll. Ich fange an zu denken, dass dies mit Solidworks nicht möglich ist:(


exemple.zip

Hallo

Ich konnte Ihre Dateien wegen unterschiedlicher SW-Versionen nicht öffnen, aber ich denke, Ihre beiden Teile können von derselben Notepad-Datei bearbeitet werden. Eine Möglichkeit wäre, in Ihrer Baugruppe alle Teile zu überprüfen, von denen eine der Gleichungen diese Notepad-Datei erfordert.

Hier ist bereits der Anfang des Codes eines Makros, das es ermöglicht, die untergeordneten Elemente aufzulisten, wenn eine Baugruppe geladen wird, oder zu sehen, welche Datei eine Gleichung aufruft, wenn es sich um ein Teil handelt, das geladen wird:

Option Explizit

Dimmen swApp als Objekt

Teil als Objekt dimmen
Dim boolstatus als boolescher Wert
Dim longstatus As Long, longwarnings As Long
Dim swEqnMgr As SldWorks.EquationMgr
Dim eqnLinked As Boolean
Sonne i So lang
Dim nCount So lange

Sub main()

Legen Sie swApp = Application.SldWorks fest
Set Part = swApp.ActiveDoc

TraverseAssemly

Set swEqnMgr = Part.GetEquationMgr
nCount = swEqnMgr.GetCount
Für i = 0 bis nCount - 1
    eqnLinked = swEqnMgr.LinkToFile
    Wenn eqnLinked dann
         swEqnMgr.UpdateValuesFromExternalEquationFile

        MsgBox "Pfad der Gleichungsdatei: " & swEqnMgr.FilePath
    Ende, wenn
Weiter i

Ende Sub

Sub TraverseComponent(swComp als SldWorks.Component2)
    Dim vChildComp als Variante
    Dim swChildComp als SldWorks.Component2
    Sonne i So lang
    
    vChildComp = swComp.GetChildren
    
    Für i = 0 TB UBound(vChildComp)
        Legen Sie swChildComp = vChildComp(i) fest.
        MsgBox "Söhne:" & swChildComp.Name
    Weiter i
Ende Sub

Öffentliche Funktion TraverseAssemly()
    Dim swConfMgr As SldWorks.ConfigurationManager
    Dim swConf als SldWorks.Configuration
    Dim swRootComp als SldWorks.Component2
    
    Set Part = swApp.ActiveDoc
    Wenn Teil nichts ist, dann Funktion beenden
    Wenn Part.GetType() swDocASSEMBLY <>, dann Funktion beenden

    Legen Sie swConfMgr = Teil.ConfigurationManager fest
    Legen Sie swConf = swConfMgr.ActiveConfiguration fest
    Set swRootComp = swConf.GetRootComponent3(True)
    
    Aufrufen von TraverseComponent(swRootComp)
Ende-Funktion

Herzliche Grüße

1 „Gefällt mir“

Danke für die Demos, ich werde später darauf zurückkommen  (keine Zeit).

Möge die Macht mit dir sein

2 „Gefällt mir“

D.Roger, danke für den Makro-Teil. Das werde ich testen.

Wenn ich verstanden habe, wie es funktioniert, werden möglicherweise alle Komponenten meiner Assembly aufgelistet, da sie alle dieselbe Editor-Datei verwenden.

Auf jeden Fall ist es ein Anfang :) Ich werde versuchen, das Makro ein wenig zu verbessern, um zu sehen, ob ich es bitten kann, nur die Elemente aufzulisten, die eine bestimmte Gleichung verwenden

 

 

Hallo

Das folgende Makro ermöglicht es einer in SW geladenen Baugruppe, alle Gleichungen aller Teile der ersten Ebene aufzulisten, aber Sie müssen diese Gleichungen mit der gesuchten vergleichen, um nur die gewünschten Teile zu behalten. Wenn die Analyse der Teile auf mehreren Ebenen erfolgen muss, muss die Funktion TraverseComponent geändert werden, um sie in eine rekursive Version zu ändern.

Option Explizit

Dimmen swApp als Objekt

Teil als Objekt dimmen
SwModel als Objekt dimmen
Dim boolstatus als boolescher Wert
Dim longstatus As Long, longwarnings As Long
Dim swEqnMgr As SldWorks.EquationMgr
Dim eqnLinked As Boolean
Sonne i So lang
Sonne j So lang
Dim nCount So lange
Dim Son Als Saite

Sub main()

    Legen Sie swApp = Application.SldWorks fest
    Set Part = swApp.ActiveDoc

    Traversen-Baugruppe 1

Ende Sub

Sub TraverseComponent(swComp als SldWorks.Component2)
    Dim vChildComp als Variante
    Dim swChildComp als SldWorks.Component2
    Sonne i So lang
    
    vChildComp = swComp.GetChildren
    
    Für i = 0 TB UBound(vChildComp)
        Legen Sie swChildComp = vChildComp(i) fest.
        Söhne = swChildComp.GetPathName
        Wenn UCase(Sons) wie "*. SLDPRT*" Dann
            Set SwModel = swApp.OpenDoc(Threads, 1)
            Festlegen von swEqnMgr = SwModel.GetEquationMgr
            nCount = swEqnMgr.GetCount
            Für j = 0 bis nCount - 1
                MsgBox swChildComp.Name2 & " - Gleichung: " & swEqnMgr.Gleichung(j)
            Weiter j
        Ende, wenn
    Weiter i
Ende Sub

Öffentliche Funktion TraverseAssemly(trie As Long)
    Dim swConfMgr As SldWorks.ConfigurationManager
    Dim swConf als SldWorks.Configuration
    Dim swRootComp als SldWorks.Component2
    
    Set Part = swApp.ActiveDoc
    Wenn Teil nichts ist, dann Funktion beenden
    Wenn Part.GetType() swDocASSEMBLY <>, dann Funktion beenden

    Legen Sie swConfMgr = Teil.ConfigurationManager fest
    Legen Sie swConf = swConfMgr.ActiveConfiguration fest
    Set swRootComp = swConf.GetRootComponent3(True)
    
    Aufrufen von TraverseComponent(swRootComp)
Ende-Funktion

Herzliche Grüße

1 „Gefällt mir“

Entschuldigung für den Exkurs, aber wie erstellen Sie die Verbindung zwischen der txt-Datei und den Quoten?
Funktioniert es auch, eine Komponente in einem ASM zu aktivieren/löschen?

Stefbeno

Wenn ich mich nicht irre, machen Sie einfach Ihre Gleichung und exportieren Sie sie, dort wird der schickere Text mit der Gleichung erstellt und dann in einem neuen Teil oder einer neuen Baugruppe importiert.

1 „Gefällt mir“

Einfach.

Danke, dass du mich das entdecken lässt.

Hallo

 

Es tut mir leid, dass ich mir die Zeit genommen habe, zu antworten, ich war :) in den Urlaub gefahren.

@d.roger: Ich habe versucht, das Makro zu starten, aber es passiert nichts.

Wenn ich es über den Debugger starte, wird mir ein Syntaxfehler in der Zeile Set swApp = Application.SldWorks angezeigt

 

 

Hallo

Haben Sie die Zeile Dim swApp As Object am Anfang des Makros?

Überprüfen Sie die Referenzen auch in Tools/Referenzen!

Herzliche Grüße