Mettre une contrainte en état supprimé API

Bonjour,

Déjà jolie amélioration du forum, je vois que ca évolue dans le bon sens ici !

J’ai une demande d’un collègue qui veux que j’améliore ma macro qui me permet d’insérer un composant, le ‹ libéré › mettre une coïncidence origine/point et le fixé.

Problème dans certain cas nous avons des repositionnements a faire, donc pour nous facilité la vie et gagner quelques ‹ clic › il me demande de mettre en état supprimer la contrainte avant de fixé ma pièce.

J’ai fais pas mal de recherche et d’enregistrement auto de macro mais rien ne ressort. Je n’arrive pas a sélectionner ma contrainte, ni a mettre une contrainte en état supprimé

'suppression du "Fixe" sur la première pièce
boolstatus = swModel.Extension.SelectByID2(CompInsert, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
swModel.UnfixComponent

'Selection du composant et ajout contrainte coincident origine/origine
swModel.ClearSelection2 True
boolstatus = swModel.Extension.SelectByID2(FirstSelection, "EXTSKETCHPOINT", 0, 0, 0, False, 1, Nothing, 0)
boolstatus = swModel.Extension.SelectByID2(SecondSelection, "COORDSYS", 0, 0, 0, True, 1, Nothing, 0)
Set swMate = swModel.AddMate5(20, -1, False, 0, 0.001, 0.001, 0.001, 0.001, 0.5235987755983, 0.5235987755983, 0.5235987755983, False, False, 0, longstatus)

'Remettre la pièce "Fixe"
boolstatus = swModel.Extension.SelectByID2(CompInsert, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
swModel.FixComponent
swModel.ClearSelection2 True

En attendant vos réponse je vous souhaite bonne fêtes a tous et a toutes.

Bonjour @mandragore
Je pense qu’il va falloir parcourir l’arborescence et récupérer le Feature correspondant

Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swAssembly As AssemblyDoc
Dim swswSelmgr As SelectionMgr
Dim swFeature As Feature
Dim swMate As Mate2
Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swAssembly = swModel
Set swSelmgr = swModel.SelectionManager
Dim swError As Long
Set swMate = swAssembly.AddMate5(swMateType_e.swMateCOINCIDENT, swMateAlign_e.swAlignNONE, False, 0, 0, 0, 0, 0, 0, 0, 0, False, False, 0, swError)
swModel.ForceRebuild3 True
Set swFeature = GET_MATE_FEATURE()
swFeature.SetSuppression2 swFeatureSuppressionAction_e.swSuppressFeature, swInConfigurationOpts_e.swThisConfiguration, Nothing
End Sub

Function GET_MATE_FEATURE() As Feature
    Dim curentFeature As Feature
    Set curentFeature = swModel.FirstFeature
    Dim lastFeature As Feature
    Do While Not curentFeature Is Nothing
    If curentFeature.GetTypeName2() = "MateGroup" Then
        Dim subFeature As Feature
        Set subFeature = curentFeature.GetFirstSubFeature
        Set lastFeature = subFeature
        Do While Not subFeature Is Nothing
            Set lastFeature = subFeature
            Set subFeature = subFeature.GetNextSubFeature
        Loop
        Exit Do
    End If
    Set curentFeature = curentFeature.GetNextFeature()
    Loop
    Set GET_MATE_FEATURE = lastFeature
End Function

2 « J'aime »

A partir de la version 2019, la fonction Createmate permet de faire aussi les contraintes standards et renvoie le feature directement,

2 « J'aime »