jeśli skopiujesz funkcję z jednej części do drugiej, traci ona wiązania szkicu i nie wiem, jak usunąć te wiązania
Zacząłem od tego przykładu, ale nie mogę znaleźć sposobu na zidentyfikowanie ograniczeń lub stron problemu
Sub main()
'Sélectionner une esquisse
'
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeat As SldWorks.Feature
Dim swSketch As SldWorks.Sketch
Dim vSketchSeg As Variant
Dim vConstraint As Variant
Dim i As Long
Dim j As Long
Dim bRet As Boolean
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swFeat = swSelMgr.GetSelectedObject6(1, -1)
Set swSketch = swFeat.GetSpecificFeature2
Debug.Print "Sketch = " & swFeat.Name
Debug.Print ""
Debug.Print " SketchConstraintStatus fully constrained = " & swSketch.GetConstrainedStatus
Debug.Print ""
' Put sketch into edit mode to get access
' to constraint information for each segment
' in the sketch
swModel.EditSketch
vSketchSeg = swSketch.GetSketchSegments
For i = 0 To UBound(vSketchSeg)
vConstraint = vSketchSeg(i).GetConstraints
For j = 0 To UBound(vConstraint)
Debug.Print " SketchSegConstraint[" & i & "] = " & vConstraint(j)
Next j
Next i
' Exit edit mode and do not rebuild the model
swModel.InsertSketch2 True
End Sub
Witam Należy dodać kod na podstawie kodu w tym przykładzie: Pobierz typy elementów dołączonych do wybranego przykładu adnotacji (VBA) - 2022 - Pomoc SOLIDWORKS API Po prostu wymień, jeśli jesteś w 2022 roku, na vAttEntTypeArr = swAnn.GetAttachedEntityTypes2 vAttEntTypeArr = swAnn.GetAttachedEntityTypes. Jeśli w wyniku wydruku Type of attached entity(" & i & ") as defined in swSelectType_e = " & vAttEntTypeArr(i) debugowania znajduje się wartość sswSelectType_e = 0, oznacza to, że istnieje jeden z elementów złącznych wymiaru, który jest uszkodzony. Z tego, co testowałem, nie działa na bokach o średnicy, które miałyby tylko jedną linię mocowania.
Witam; Oto moje makro do usuwania chwiejnych kursów; Działa w Solidworks 2022 (nawet jeśli niektóre zmienne powinny zostać zaktualizowane...).
Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swDraw As DrawingDoc
Dim swSheet As Sheet
Dim swView As View
Dim boolstatus As Boolean
Dim swAnn As Annotation
Dim swDispDim As DisplayDimension
Dim vSheetNames As Variant
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel.GetType <> SwConst.swDocumentTypes_e.swDocDRAWING Then Exit Sub
Set swDraw = swModel
swModel.ClearSelection2 (True)
vSheetNames = swDraw.GetSheetNames
For i = 0 To UBound(vSheetNames)
swDraw.ActivateSheet vSheetNames(i)
Set swSheet = swDraw.Sheet(vSheetNames(i))
Set swView = swDraw.GetFirstView ' This is the drawing template
Do While Not swView Is Nothing
Set swAnn = swView.GetFirstAnnotation3
Do While Not swAnn Is Nothing
If swAnn.IsDangling Then
boolstatus = swAnn.Select3(True, Nothing)
End If
Set swAnn = swAnn.GetNext3
Loop
Set swView = swView.GetNextView
Loop
boolstatus = swModel.DeleteSelection(True)
swModel.ClearSelection2 (True)
Next i
swModel.ClearSelection2 (True)
End Sub
Podanie przykładu, zrzut ekranu przed skopiowaniem, a następnie oczyszczonego wyniku, byłby może jaśniejszy? Jeśli ludzie odpowiedzą obok, może to nie być dla nich wystarczająco jasne. W każdym razie nie wydaje się to takie proste.
Witam; @Bob_2000 rzeczywiście moja odpowiedź w ogóle nie odpowiada Twojej prośbie, dostarczone makro może być używane tylko na wymiarach na rysunkach. Przepraszam.
Makro Cyril.f zawiesza się na wierszu Set swAnn = swSelObj.GetAnnotation error 91 Niezależnie od tego, czy jestem na szkicu, czy go wybieram, jest tak samo
Witam Należy wybrać wymiar w szkicu, a nie sam szkic. Z drugiej strony na zrzucie ekranu wydaje się, że to punkty są błędne, a nie kursy, więc nie to samo żądanie.
Kod, który podałem jako przykład, nie powoduje żadnych usunięć. Czy możesz udostępnić swój plik? Jak wyjaśniono na pierwszy rzut oka, to nie kursy są winne.
Przyszły plik, jestem w 2022 roku. W przeciwnym razie mój pierwszy przykład działa na chybotliwych wymiarach (w przykładzie musisz wybrać dany wymiar ręcznie, w tym przypadku musisz tylko zautomatyzować). W przypadku chwiejnych ograniczeń nie widziałem jeszcze niczego w pomocy API. Kod pierwszego słupka pozwala wskazać, że szkic nie jest całkowicie ograniczony, ale nie wskazuje błędnego ograniczenia. Może poszukaj statusu ograniczeń (nie zdążyłem jeszcze na to spojrzeć)