Forum:SolidWorks
Thema:Alle Verknüpfungen über Makro löschen
Möchten Sie sich registrieren?
Wer darf antworten? Registrierte Benutzer können Beiträge verfassen.
Hinweise zur Registrierung Sie müssen registriert sein, um Beiträge oder Antworten auf Beiträge schreiben zu können.
Ihr Benutzername:
Ihr Kennwort:   Kennwort vergessen?
Anhang:    Datei(en) anhängen  <?>   Anhänge verwalten  <?>
Grafik für den Beitrag:                                                
                                                       
Ihre Antwort:

Fachbegriff
URL
Email
Fett
Kursiv
Durchgestr.
Liste
*
Bild
Zitat
Code

*HTML ist AUS
*UBB-Code ist AN
Smilies Legende
Netiquette

10 20 40

Optionen Smilies in diesem Beitrag deaktivieren.
Signatur anfügen: die Sie bei den Voreinstellungen angegeben haben.

Wenn Sie bereits registriert sind, aber Ihr Kennwort vergessen haben, klicken Sie bitte hier.

Bitte drücken Sie nicht mehrfach auf "Antwort speichern".

*Ist HTML- und/oder UBB-Code aktiviert, dann können Sie HTML und/oder UBB Code in Ihrem Beitrag verwenden.

T H E M A     A N S E H E N
socke112

Beiträge: 9 / 0

Solidworks 2019, SP 2

Hallo,

von einem Lieferanten habe ich eine Baugruppe mit viele Baugruppen (hunderte), in denen die Verknüpfungen fehlerhaft sind.
Da die Baugruppen nur bei uns ins PDM-System eingepflegt werden müssen, ohne auf weitere Bearbeitung zu achten, schreibe ich gerade an einem Makro mit folgenden Funktionen:
- Alle Verknüpfungen pro Baugruppe löschen
- Alle Teile pro Baugruppe fixieren (das geht schon mal)

Wie kann ich alle Teile pro Baugruppe per Makro löschen?

Grüße, Socke

ConZept

Beiträge: 15 / 0

SolidWorks 2018 / SP 4.0
Win7x64 /HP Z440

Hallo Socke,

die Verknüpfungen für eine Komponente bekommst du über GetMates von IComponent2.
Um die Verknüpfung zu löschen, musst du diese vorher Selektieren SelectByID2 von IModelExtension (hierfür brauchst du den Namen der Verknüpfung, daher im ersten Schritt den Namen der Verknüpfung auslesen) und anschließend mit EditDelete die Verknüpfung löschen.

Hier ist ein Beitrag im Englischsprachigen Forum. Vielleicht hilft dir das etwas weiter 

------------------
Gruß ConZept

[Diese Nachricht wurde von ConZept am 08. Jul. 2019 editiert.]

bk.sc

Beiträge: 2184 / 68

-Solid Works 2019 SP2
-Pro Engineer WF 3

Hallo Socke,

evtl. hilft dir das Beispiel aus der API Hilfe auch weiter Get Mates and Mate Entities Example (VBA).

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

socke112

Beiträge: 9 / 0

Solidworks 2019, SP 2

Hallo,

vielen Dank für die Antworten! Ich werde mal ein bisschen probieren....

Grüße, Socke 

socke112

Beiträge: 9 / 0

Solidworks 2019, SP 2

Hallo,
meine Versuche enden leider damit, dass ich immer einzeln das Löschen bestätigen muss. Drücke ich "nein", versucht das Makro die nächste Verknüpfung zu löschen, drücke ich "ja" dann endet das Makro.

Kann jemand helfen?

Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeat As SldWorks.Feature
Dim swMateFeat As SldWorks.Feature
Dim swSubFeat As SldWorks.Feature
Dim swMate As SldWorks.Mate2
Dim swComp As SldWorks.Component2
Dim swMateEnt(2) As SldWorks.MateEntity2
Dim fileName As String
Dim errors As Long
Dim warnings As Long
Dim i As Long
Dim boolstatus As Boolean
Dim counter As Integer

Sub main()
   
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    counter = 0
    'Get the first feature in the assembly
    Set swFeat = swModel.FirstFeature
    'Iterate over features in FeatureManager design tree
    Do While Not swFeat Is Nothing
        If "MateGroup" = swFeat.GetTypeName Then
            Set swMateFeat = swFeat
            Exit Do
        End If
        Set swFeat = swFeat.GetNextFeature
    Loop
     
    'Get first mate, which is a subfeature
    Set swSubFeat = swMateFeat.GetFirstSubFeature
    Do While Not swSubFeat Is Nothing
     
      Set swMate = swSubFeat.GetSpecificFeature2
     
        If Not swMate Is Nothing Then
            boolstatus = swSubFeat.Select2(True, 0) 'Markiere Verknüpfung
            swModel.EditDelete
        End If
        ' Get the next mate in MateGroup
        Set swSubFeat = swSubFeat.GetNextSubFeature
        counter = counter + 1
    Loop
    MsgBox counter
End Sub

bk.sc

Beiträge: 2184 / 68

-Solid Works 2019 SP2
-Pro Engineer WF 3

Hallo socke,

quick and dirty swModel.EditDelete erst nach dem Loop ausführen, also wenn bereits alles markiert ist, da wenn du es im Loop machst nach Set swSubFeat = swSubFeat.GetNextSubFeature swSubFeat = Nothing wird, könnte evtl. daran liegen das du das Object swSubFeat von dem du GetNextSubFeature holen willst schon eleminiert hast.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

ConZept

Beiträge: 15 / 0

SolidWorks 2018 / SP 4.0
Win7x64 /HP Z440

Hallo Socke,

grade mal einen Blick auf die Methode EditDelete geworfen -> in den Remarks wird auf die Methode DeleteSelection2 verwiesen, wenn keine Aufforderung gewünscht ist.

------------------
Gruß ConZept

bk.sc

Beiträge: 2184 / 68

-Solid Works 2019 SP2
-Pro Engineer WF 3

Hallo,

bei mir kommt keine Abfrage wenn ich EditDelete verwende, und habe hierzu auch keine Meldung in den Systemsteuerungen ausgeblendet.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

socke112

Beiträge: 9 / 0

Solidworks 2019, SP 2

Hallo,

jetzt funktioniert's auch bei mir  Vielen Dank!

(Sobald ich den Code bereinigt habe, stelle ihn vor.... )

Eine Frage hätte ich noch.
Der Lieferant hat offenbar ständig mit irgendwelchen Dummies gearbeitet, die aber wohl in einem anderen Ordner lagen und nicht mitgeliefert worden sind. SolidWorks unterdrückt Dateien, die nicht gefunden werden. Beim Laden ins PDM-System wird dann ein Fehler ausgegeben und ich muss alle Baugruppen händisch durchgehen   

Wie kann ich prüfen, ob die (ggf. unterdrückte) Datei existiert und diese dann löschen?

Danke!

Grüße, Socke

bk.sc

Beiträge: 2184 / 68

-Solid Works 2019 SP2
-Pro Engineer WF 3

Hallo,

Zitat:
Wie kann ich prüfen, ob die (ggf. unterdrückte) Datei existiert und diese dann löschen?

du könntest analaog wie schon oben durch die Komponenten Traversieren und deren Status mit GetSuppression2 Method (IComponent2) abfragen.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 11. Jul. 2019 editiert.]