Automatyczne ograniczenie makr

Witam

Czy możliwe jest utworzenie makra dla następującej funkcji:

Chciałbym, aby wybierając część "A" lub zespół "B" w zespole "C", górna płaszczyzna "A" lub "B" była ograniczona równolegle do górnej płaszczyzny "C".

Dziękuję

Jaki jest cel programu ???

Już na początku, jeśli początki były nadal dobrze umiejscowione 

To by ogromnie pomogło w montażu

@+

 

Nie pracujemy według miejsca docelowego z pochodzeniem. Ale podczas naszych projektów upewniamy się, że w większości przypadków szanujemy fakt, że górna płaszczyzna jest pozioma na wszystkich naszych częściach i zespołach.

2 rozwiązania do zbadania:

1- Ograniczenia magnetyczne (w szczególności ograniczenie "uziemienia", które w Twoim przypadku będzie ograniczeniem "powyżej")

Zobacz tutaj, o czym rozmawialiśmy jakiś czas temu: https://www.lynkoa.com/forum/solidworks/contrainte-magn%C3%A9tique-sw?page=0#answer-1027848

2 - lub narzędzie "Odniesienie do ograniczeń", którego używam do dociskania elementów biblioteki do ścian.

1 polubienie

Właśnie próbowałem z odwołaniami do ograniczeń, które wydają się nie działać.

I przyznam, że nie znam się zbytnio na ograniczeniach magnetycznych. Ale jeśli wymaga to pracy na wcześniejszym etapie, "przeniesiemy" pracę.

O tak, nie powiedziałem, że odniesienie do ograniczeń działa w trybie zestawu. (do potwierdzenia)

Witam. Spróbuj tego:

Uwaga: W razie potrzeby zastąp nazwy rysunków zespołów i komponentów

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 polubienia

Witam

Groźny! Dziękuję JeromeP. Dokładnie tak.