VBA-Skizze löscht Relation

Tag zusammen
Ich möchte ein VBA-Makro erstellen, das " Kante auf Kante " Skizzenbeziehungen und wackelige Abhängigkeiten entfernt , wie z. B. das Konvertieren von Elementen, unabhängig davon, ob es sich um ein externes Teil oder eine andere Skizze desselben Teils handelt

Ich bin in der Skizze, mit der man sich befassen soll
Ich führe das Makro aus, das jedes Element überprüfen sollte, um die Art der Einschränkung zu sehen, wenn es sich um ' on edge › delete handelt

Ich weiß nicht, wie ich jedes Element 1 zu 1 auswählen soll
Ich weiß nicht, wie ich überprüfen kann, ob es gleich " auf der Kante " oder wackelig ist
Ich weiß nicht, wie ich die zugehörige Einschränkung entfernen kann

Hier ist mein Makro-Start

Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSketchMgr As SldWorks.SketchManager
Dim swSketch As SldWorks.Sketch
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeat As SldWorks.Feature
Dim nSketchStatus As Long
Dim boolstatus As Boolean


Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swSketchMgr = swModel.SketchManager
Set swSketch = swSketchMgr.ActiveSketch


If swSketch Is Nothing Then
MsgBox "Éditer une esquisse et relancer la macro"
Exit Sub
End If

'For i = 1 To Count
'selectionner i element
'if relation existante =sgOFFSETEDGE
'boolstatus = Part.Extension.SelectByID2(xx,  , ,, , , )
'swModel.EditDelete
'swModel.SketchManager.SketchConstraintsDel 1, "sgOFFSETEDGE"
'swModel.SketchConstraintsDel i, "sgOFFSETEDGE"
'Next i

swModel.ClearSelection2 True
End Sub

Artikel1.SLDPRT (120.0 KB)

Hallo

Verwenden Sie stattdessen dieses API-Beispiel, und passen Sie es nach Bedarf an: Beispiel für Skizzenbeziehungen abrufen (VBA) - 2021 - SOLIDWORKS API-Hilfe

1 „Gefällt mir“

Ich habe ein bisschen Schwierigkeiten, klar zu sehen, ich bin nicht sehr gut in VBA, wenn jemand eine Idee hat

Hallo @Bob_2000
Erklären Sie stattdessen in dem von @Cyril.f bereitgestellten Code, worüber Sie sich aufregen, und dann können wir spezifischere Fragen beantworten.

Ich weiß nicht, wofür SkPoint-ID-Variablen sind, ich sehe nicht, wie ich die wackeligen Seiten finde

Die "SkPoint-ID" und die "SkSeg-ID" sind keine Variablen, sondern Volltext, um im Debug-Fenster die Punkt-ID der Skizze (sk → sketch) und SkSeg die ID des Segments anzuzeigen.

Sie können feststellen, dass sie zwischen " " stehen, aber vor allem, dass diese Wörter nicht deklariert sind (z. B. mit einem Dim), also keine Variablen sein können.

Ok, aber es sagt mir nicht, wie ich die Art der Einschränkung jedes ausgewählten Elements finden kann, um zu wissen, ob es wackelig ist

Hallo
Ich hatte keine Zeit zum Testen, aber es gibt Filterkriterien, was diesen Code scannen muss. Grundsätzlich ist es auf Alle eingestellt und je nach Ergebnis können Sie auf nicht identifizierte Fälle stoßen, bei denen es sich um wackelige Skizzen oder andere handeln kann.
Sie müssten den Filter auf die Elemente setzen, die wackelig sind, um eine bestimmte Schleife in diesem Status zu erstellen.
Ich habe zumindest bis Ende der Woche keinen Zugang zu SW.

Wenn jemand die Parameter für Quoten kennt
-Wackelig
-Äußerlich
-Kaputt

Für wackelige Rippen – Methode "IsDangling" (IAnnotation) - 2018 - SOLIDWORKS API-Hilfe
Weitere Informationen finden Sie in diesem Thema (nicht getestet):
https://r1132100503382-eu1-3dswym.3dexperience.3ds.com/?_gl=11jlxmvc_gaMjcxNTI5NDczLjE2NDAwNjkyNDQ._ga_XQJPQWHZHH*MTY3MDQxNDI5Ny42NS4xLjE2NzA0MTQzOTEuNTYuMC4w#community:yUw32GbYTEqKdgY7-jbZPg/iquestion:GjZHVgFpSo-VcVvyOZ1i9A
Testen Sie diesen Track und geben Sie uns, wenn möglich, Feedback.

Und für eine Skizze:
https://help.solidworks.com/2018/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ISketch~GetConstrainedStatus.html

Ich komme damit nicht durch, wenn jemand eine Idee für funktionierenden Code hat