Automatische macrobeperking

Hallo

Is het mogelijk om een macro te maken voor de volgende functie:

Ik zou graag willen dat door het selecteren van een onderdeel "A" of een assemblage "B" in een assemblage "C", het bovenste vlak van "A" of "B" wordt beperkt parallel aan het bovenste vlak van "C".

Bedankt

Wat is het doel van de regeling ???

Al in het begin als de oorsprong nog goed geplaatst was

Het zou enorm helpen bij de montage

@+

 

Wij werken niet op basis van plaatsing met oorsprongen. Maar tijdens onze ontwerpen zorgen we ervoor dat we meestal het feit respecteren dat het bovenste vlak horizontaal is op al onze onderdelen en assemblages.

2 oplossingen om te verkennen:

1- Magnetische beperkingen (in het bijzonder de "grond"-beperking, die in uw geval de "boven"-beperking zal zijn)

Zie hier waar we het kort geleden over hadden: https://www.lynkoa.com/forum/solidworks/contrainte-magn%C3%A9tique-sw?page=0#answer-1027848

2 - of de "Constraint Reference"-tool die ik gebruik om mijn bibliotheekstukken tegen de muren te drukken.

1 like

Ik heb het net geprobeerd met de beperkingsverwijzingen die niet lijken te werken.

En ik geef toe dat ik niet al te veel weet over magnetische beperkingen. Maar als het werk stroomopwaarts vereist, zullen we het werk "verplaatsen".

Oh ja, er wordt niet gezegd dat de beperkingsreferentie werkt in de montagemodus. (nog te bevestigen)

Hallo. Probeer het volgende:

Opmerking: Vervang indien nodig de namen van de assemblage en componenttekeningen

Option Explicit
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swSelMgr As SldWorks.SelectionMgr
    Dim swComp As SldWorks.Component2
    Dim boolstatus As Boolean
    Dim swMate As Mate2
    Dim longstatus As Long
    Dim NomPlanAssy As String
    Dim NomPlanComp As String
    NomPlanAssy = "Plan de dessus"
    NomPlanComp = "Plan de dessus"
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swComp = swSelMgr.GetSelectedObjectsComponent3(1, 0)
    If swComp Is Nothing Then
        MsgBox "Sélectionner une pièce"
        Exit Sub
    End If
    NomPlanComp = NomPlanComp & "@" & swComp.Name2 & "@" & swModel.GetTitle
    If InStr(LCase(swModel.GetTitle), ".sldasm") > 0 Then
        NomPlanComp = Left(NomPlanComp, Len(NomPlanComp) - 7)
    End If
    boolstatus = swModel.Extension.SelectByID2(NomPlanComp, "PLANE", 0, 0, 0, False, 0, Nothing, 0)
    boolstatus = swModel.Extension.SelectByID2(NomPlanAssy, "PLANE", 0, 0, 0, True, 0, Nothing, 0)
    Set swMate = swModel.AddMate5(swMateType_e.swMatePARALLEL, swMateAlign_e.swMateAlignALIGNED, False, 0, 0, 0, 0, 0, 0, 0, 0, False, False, 0, longstatus)
    swModel.EditRebuild3
    swModel.ClearSelection2 True
End Sub

 

2 likes

Hallo

Formidabel! Dank je wel JeromeP. Dat is het precies.