Vba suppr Chwiejny szkic wymiarów

Witam
Chcę usunąć chwiejne boki VBA części

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.

1 polubienie

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

Pozdrowienia.

1 polubienie

Naprawdę nie rozumiem twoich odpowiedzi na moje pytanie
Moje pytanie brzmi, jak usunąć wymiary i chwiejne wiązania części, szkicu

Podczas kopiowania funkcji z jednej części do drugiej wiązania i wymiary są tracone i chciałbym je usunąć

Nie chcę wybierać ograniczeń jeden po drugim, w moim utworze nie ma adnotacji i nie jest to też plan

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.


Pozdrowienia.

Witam
O ile się nie mylę, przykład API jest z jednej strony. Ocena jest traktowana przez SW jako adnotacja

1 polubienie

Witam

Oto kilka zrzutów ekranu


CAPTURE 000336

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.

1 polubienie

jeśli ktoś ma inny pomysł
Nie bardzo rozumiem sens makra Cyril.f , które zastępuje delete, ale dłużej

Witam

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.

Oto przykład
Celem makra powinno być usunięcie wszystkich chwiejnych wymiarów i ograniczeń
Pozycja1.SLDPRT (130.2 KB)

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ć)

1 polubienie