Vba suppr Wobbly afmetingen schets

Hallo
Ik ben op zoek naar het verwijderen van de wiebelige VBA-zijkanten van een onderdeel

als je een functie van het ene deel naar het andere kopieert, verliest het de beperkingen van de schets en ik weet niet hoe ik deze beperkingen kan verwijderen

Ik ben van dit voorbeeld uitgegaan, maar ik kan niet vinden hoe ik de beperkingen of probleemkanten kan identificeren

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

Hallo
U moet code toevoegen op basis van de code in dit voorbeeld: Typen entiteiten ophalen die zijn gekoppeld aan geselecteerd annotatievoorbeeld (VBA) - 2022 - SOLIDWORKS API Help
Vervang gewoon als je op 2022 de vAttEntTypeArr = swAnn.GetAttachedEntityTypes2 met vAttEntTypeArr = swAnn.GetAttachedEntityTypes.
Als er in het resultaat van de foutopsporingsafdruk Type of attached entity(" & i & ") as defined in swSelectType_e = " & vAttEntTypeArr(i) de waarde sswSelectType_e = 0 is, geeft dit aan dat er een van de bevestigingsmiddelen van de dimensie is die is gebroken.
Van wat ik heb getest, werkt het niet op diameterzijden die slechts één bevestigingslijn zouden hebben.

1 like

Hallo;
Hier is mijn macro voor het verwijderen van wiebelige kansen;
Werkt onder Solidworks 2022 (zelfs als sommige variabelen moeten worden bijgewerkt...).

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

Vriendelijke groeten.

1 like

Ik begrijp je antwoorden op mijn vraag niet echt
Mijn vraag is hoe je de afmetingen en wiebelige beperkingen van een onderdeel, van een schets kunt verwijderen

Bij het kopiëren van een functie van het ene onderdeel naar het andere, gaan beperkingen en afmetingen verloren en die wil ik graag verwijderen

Ik wil de beperkingen niet één voor één selecteren, er zit geen annotatie in mijn stuk en het is ook geen plan

Het geven van een voorbeeld, een screenshot voor het kopiëren en daarna van het opgeschoonde resultaat, zou misschien duidelijker zijn geweest?
Als mensen ernaast antwoorden, is het misschien niet duidelijk genoeg voor hen.
Het lijkt in ieder geval niet heel eenvoudig.

Hallo;
@Bob_2000 mijn antwoord inderdaad helemaal niet overeenkomt met uw verzoek, kan de verstrekte macro alleen worden gebruikt op de afmeting in de tekeningen. Sorry.


Vriendelijke groeten.

Hallo
Tenzij ik me vergis, is het voorbeeld van de API op een deel. Een beoordeling wordt door SW beschouwd als een annotatie

1 like

Hallo

Hier zijn enkele screenshots


CAPTURE 000336

De macro van Cyril.f blijft hangen op de regel Set swAnn = swSelObj.GetAnnotation-fout 91
Of ik nu in de schets zit of hem selecteer, het is hetzelfde

Hallo
U moet de afmeting in de schets selecteren en niet de schets zelf.
In de schermafbeelding daarentegen lijken het de punten te zijn die fout zijn en niet de kansen, dus niet hetzelfde verzoek.

1 like

Als iemand een ander idee heeft
Ik begrijp niet echt het punt van de macro van Cyril.f, die de delete-toets vervangt, maar langer

Hallo

De code die ik als voorbeeld heb gegeven, doet geen verwijderingen.
Mogelijkheid om uw bestand te delen? Zoals op het eerste gezicht wordt uitgelegd, zijn het niet de kansen die de schuld zijn.

Hier is een voorbeeld
Het doel van de macro zou moeten zijn om alle wankele dimensies en beperkingen te verwijderen
Item1.SLDPRT (130.2 KB)

Toekomstig bestand, ik ben in 2022.
Voor de rest werkt mijn eerste voorbeeld met wiebelige dimensies (in het voorbeeld moet je de betreffende dimensie met de hand selecteren, je hoeft alleen maar te automatiseren voor dit geval).
Voor wiebelige beperkingen heb ik nog niets gezien in de API-help. De code van het eerste bericht stelt u in staat om aan te geven dat de schets niet volledig beperkt is, maar wijst niet ten onrechte op de beperking.
Misschien op zoek naar de status van beperkingen (ik heb nog geen tijd gehad om ernaar te kijken)

1 like