Szkic VBA usuwa relację

Cześć wszystkim
Chcę utworzyć makro VBA, które usunie relacje szkicowania " krawędź na krawędzi " i chwiejne ograniczenia, takie jak konwertowanie elementów, niezależnie od tego, czy jest to część zewnętrzna, czy inny szkic tej samej części

Jestem w szkicu, z którym mam się uporać
Uruchamiam makro, które powinno sprawdzić każdy element, aby zobaczyć typ ograniczenia, jeśli jest to ' na krawędzi › usuń

Nie wiem, jak wybrać każdy element 1 po 1
Nie wiem, jak sprawdzić, czy jest równy ' na krawędzi ' czy chwiejny
Nie wiem, jak usunąć skojarzone ograniczenie

Oto mój początek makro

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

Pozycja1.SLDPRT (120.0 KB)

Witam

Zamiast tego należy użyć tego przykładowego interfejsu API i dostosować go zgodnie z potrzebami: Pobierz przykład relacji szkicu (VBA) - 2021 - Pomoc SOLIDWORKS API

1 polubienie

Mam trochę problemów z wyraźnym widzeniem, nie jestem zbyt dobry w vba, jeśli ktoś ma pomysł

Witam @Bob_2000
Zamiast tego wyjaśnij, co Cię denerwuje w kodzie dostarczonym przez @Cyril_f , a następnie możemy odpowiedzieć na bardziej szczegółowe pytania.

Nie wiem, do czego służą zmienne ID SkPoint, nie widzę, jak znaleźć chybotliwe boki

"SkPoint ID" i "SkSeg ID" nie są zmiennymi, ale pełnym tekstem, aby wyświetlić w oknie debugowania identyfikator punktu szkicu (sk → szkic), a SkSeg identyfikator segmentu.

Można zauważyć, że znajdują się one pomiędzy " ", ale przede wszystkim, że te słowa nie są zadeklarowane (na przykład z dim), więc nie mogą być zmiennymi.

ok, ale nie mówi mi, jak znaleźć typ ograniczenia każdego wybranego elementu, aby wiedzieć, czy jest chwiejny

Witam
Nie miałem czasu na testowanie, ale istnieją kryteria filtrowania, co musi zeskanować ten kod. Zasadniczo jest ustawiony na Wszystkie i w zależności od wyniku możesz natknąć się na niezidentyfikowane przypadki, które mogą być chwiejnymi szkicami lub innymi.
Musiałbyś ustawić filtr na elementach, które są chwiejne, aby utworzyć określoną pętlę na tym statusie.
Nie mam dostępu do SW przynajmniej do końca tygodnia.

Jeśli ktoś zna parametry kursów
-Chwiejny
-Zewnętrzny
-Złamane

Dla chwiejnych żeber IsDangling Method (IAnnotation) - 2018 - Pomoc SOLIDWORKS API
Zobacz ten temat (nie testowany):
https://r1132100503382-eu1-3dswym.3dexperience.3ds.com/?_gl=11jlxmvc_gaMjcxNTI5NDczLjE2NDAwNjkyNDQ._ga_XQJPQWHZHH*MTY3MDQxNDI5Ny42NS4xLjE2NzA0MTQzOTEuNTYuMC4w#community:yUw32GbYTEqKdgY7-jbZPg/iquestion:GjZHVgFpSo-VcVvyOZ1i9A
Przetestuj ten utwór i przekaż nam opinię, jeśli to możliwe.

A dla szkicu:
https://help.solidworks.com/2018/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ISketch~GetConstrainedStatus.html

Nie ujdzie mi to na sucho, jeśli ktoś ma pomysł na działający kod