Szukam makra, które może ponownie edytować wszystkie funkcje biblioteki w części jednocześnie, aby odświeżyć zmiany w tej bibliotece w SOLIDWORKS

witam, szukam makra zdolnego do ponownej edycji wszystkich funkcji biblioteki w pokoju jednocześnie w celu zaktualizowania zmian w tej bibliotece (w większości przypadków pole "link do części bibliotecznej" jest wyszarzone 

 Często zdarza się, że tworzę funkcje biblioteczne , aby działały szybciej, ale problem polega na tym, że często jest ich sto na część i gdy muszę dokonać zmiany np. średnicy wiercenia, którą trzeba zawęzić lub powiększyć  , albo dodać fazę, Muszę ponownie wydrukować wszystkie funkcje biblioteki jeden po drugim, aby zaktualizować tę zmianę w całym pomieszczeniu  , co może zająć wiele godzin 

Niestety nie wiem, jak pisać makro, więc zwracam się na to forum, aby znaleźć życzliwą duszę, która mogłaby mi wyjaśnić, jak to zrobić lub napisać 

Kilka zrzutów ekranu przykładu z pewnością ułatwiłoby zrozumienie Twojego tematu.

Bo nie wszystko rozumiałam.

Z drugiej strony, sto funkcji bibliotecznych moim zdaniem może tylko obciążyć pomieszczenie.

trudne do wyjaśnienia za pomocą zrzutów ekranu, 

na przykład;   Mam kawałek zawierający kostki z walcem na nich z fazą na krawędzi walca, tworzę funkcję biblioteczną pozwalającą na szybkie stworzenie tego kształtu poprzez kliknięcie na kilka wierzchołków, więc układam tę bibliotekę na całej części, później jestem proszony o zastąpienie fazowania zaokrągleniem, Więc zmieniam to w pliku SLDLFP, a następnie, aby zaktualizować tę zmianę w mojej części, muszę dwukrotnie kliknąć każdą z moich funkcji bibli i kliknąć raz w obszarze konfiguracji biblii, a następnie nacisnąć enter, co pozwala funkcji bibliotecznej zastosować zmiany, które wprowadziłem w sldlfp, Problem polega na tym, że muszę to zrobić dla każdej funkcji Biblii, która znajduje się w  moim pokoju  

 

Kiedy mówię o stu, często jest to około 30  sztuk na kilka części zespołu, ale ciężkość części nie stanowi większego problemu , jeśli jest zbyt ciężka, dzielę ją na kilka części  

 


cature_1_.png
capture_2.png

Witam

Aby zmienić wspólny wymiar, istnieją zmienne/równania.

Ale w przypadku przykładu, dlaczego zamiast tego nie zastosować funkcji do pojedynczego elementu i powtórzyć wynikowe pole?

1 polubienie

w rzeczywistości żaden z kwadratów, na których umieszczam bibliotekę, nie ma tego samego wymiaru/krzywizny , a biblioteka pozwala mi stworzyć kształt, który dostosowuje się do struktury, na której go umieszczam , powtarzanie nie jest rozwiązaniem, a jeśli chodzi o zmienne równania, to już ich używam, ale to nie działa, jeśli dodam funkcję do biblioteki lub zmienię Na przykład fazowanie przez zaokrąglenie, ponadto duża liczba równań spowalnia część 

 

W każdym razie dziękuję za szybkość odpowiedzi 

Załączam zrzut ekranu , który może pozwolić Ci lepiej zrozumieć, dlaczego nie mogę zrobić próby


capture_3.png

Rzeczywiście...

Masz już szansę, to to, że w domu funkcja jest aktualizowana. Nie ma mnie w domu, muszę go ponownie zaimportować z biblioteki... Albo coś mi umyka.

1 polubienie

To, czego tak naprawdę nie rozumiem, to sposób aktualizacji.

Ctrl+Q to za mało? Musisz edytować każdą funkcję biblioteczną i sprawdzać poprawność? (Kliknij prawym przyciskiem myszy na funkcję Biblii + Enter)

W przeciwnym razie masz to makro, które odbudowuje wszystko automatycznie.

https://www.codestack.net/solidworks-api/document/macro-feature/run-macro-on-rebuild/

Może do testowania lub w inny sposób dla funkcji bibliotecznych jest to funkcja biblioteki.

 

 

Kilka przykładów makr z funkcjami bibliotecznymi:

https://help.solidworks.com/2018/English/api/sldworksapi/Create_Library_Feature_With_References_Example_VB.htm

 

Inny przykład odczytywania informacji z funkcji bibliotecznej:

https://help.solidworks.com/2016/English/api/sldworksapi/Get_Library_Feature_Data_Example_VB.htm

dokładniej, gdy chcę odświeżyć bibliotekę, klikam prawym przyciskiem myszy edytuj funkcję, a następnie klikam w obszarze, w którym zwykle znajdują się różne konfiguracje biblioteki, pojawia się okno ostrzegawcze, klikam Tak (lub naciskam Enter, wraca do tego samego) i tam obowiązują modyfikacje

 

W załączonym filmiku nie wiem dlaczego, ale nie widzisz okna ostrzegawczego, gdy klikam w obszarze konfiguracji , więc umieszczam je na zrzucie ekranu 

o makrze, które automatycznie przebudowuje wszystko podane przez @sbadenis  Nie udało mi się go uruchomić i CTRL+Q tylko przebudowuje funkcje części, ale nie uwzględnia modyfikacji biblioteki

 


piece1.sldprt_2022-05-24_14-25-02.mp4
capture_4.png

przepraszam @sbadenis ale nie rozumiem przydatności tego makra:

'' Inny przykład odczytywania informacji funkcji bibliotecznej:

https://help.solidworks.com/2016/English/api/sldworksapi/Get_Library_Fea... ''

 

Znalazłem temat wywołujący mój problem, ale niestety nie ma prawdziwego rozwiązania w odpowiedziach 

https://forum.solidworks.com/thread/68443

Spróbuj tego, nie mam pod ręką funkcji bibliotecznej do przetestowania, to poprzednie makro z być może aktualizacją funkcji,  jeśli dobrze zrozumiałem:

'-------------------------------------------------------------
' Preconditions:
' 1. Open a model document that contains at least one
'    library feature.
' 2. Open the Immediate window.
'
' Postconditions:
' 1. Traverses the FeatureManager design tree searching for
'    library features.
' 2. Gets each library feature's data.
' 3. Inspect the Immediate window.
'-------------------------------------------------------------
Option Explicit

Dim boolstatus As Boolean
Dim swApp As SldWorks.SldWorks
Dim ModelDoc2 As SldWorks.ModelDoc2
Dim Feature As SldWorks.Feature
Dim NextFeature As SldWorks.Feature
Dim LibraryFeatureData As LibraryFeatureData
Dim placementPlaneType As Long
Dim placementPlane As Object
Dim ConfigurationName As String
Dim vConfigs As Variant
Dim vConfigName As Variant
Dim x As Long
Dim LinkToLibraryPart As Boolean
Dim LocatingDimensionsCount As Long
Dim vLocDimName As Variant
Dim vLocDimVal As Variant
Dim i As Long
Dim bOverrideDimVal As Boolean
Dim SizeDimensionsCount As Long
Dim vSizDimName As Variant
Dim vSizDimVal As Variant
Dim ReferencesCount As Long
Dim vRefType As Variant
Dim vRefName As Variant
Dim vRefs As Variant
Dim status As Boolean


Sub main()

Set swApp = Application.SldWorks
Set ModelDoc2 = swApp.ActiveDoc

' Traverse the FeatureManager design tree searching for library features
Set Feature = ModelDoc2.FirstFeature

While Not Feature Is Nothing

    Debug.Print Feature.Name, Feature.GetTypeName

    ' If feature is a library feature, then get its data; otherwise,
    ' move onto the next feature in the FeatureManager design tree

    If Feature.GetTypeName = "LibraryFeature" Then
        Debug.Print ""
        Debug.Print Feature.Name, Feature.GetTypeName
        Set LibraryFeatureData = Feature.GetDefinition
        boolstatus = LibraryFeatureData.AccessSelections(ModelDoc2, Nothing)

        ' Access the selections of the library feature that define it
        Debug.Print "LibraryFeatureData.AccessSelections = " & boolstatus

        ' Get its placement type
        Set placementPlane = LibraryFeatureData.GetPlacementPlane2(swLibFeatureData_e.swLibFeatureData_PartRespect, placementPlaneType)
        Debug.Print "PlacementPlaneType = " & placementPlaneType
        placementPlane.Select False

        ' Get the name of the active library feature configuration
        ConfigurationName = LibraryFeatureData.ConfigurationName
        Debug.Print "ConfigurationName = " & ConfigurationName
                        

        ' Determine if the library feature is linked to
        ' the library feature part
        LinkToLibraryPart = LibraryFeatureData.LinkToLibraryPart
        Debug.Print "LinkToLibraryPart = " & LinkToLibraryPart
        

        ' If the library feature part document is open or
        ' if the library feature is linked to the library feature
        ' part document, then get the names of all of the
        ' library feature configurations; if neither,
        ' then only the name of the active library configuration
        ' is returned
        'vConfigs = LibraryFeatureData.GetAllConfigurationNames
        'Debug.Print "Configuration names :"

        'If Not IsEmpty(vConfigs) Then
            'For x = LBound(vConfigs) To UBound(vConfigs)
                'Debug.Print "  " & vConfigs(x)
            'Next x
        'End If

        ' Get the number of locating dimensions
        'LocatingDimensionsCount = LibraryFeatureData.GetDimensionsCount(0)
        'Debug.Print "LocatingDimensionsCount = " & LocatingDimensionsCount

        ' Get the locating dimensions
        'vLocDimVal = LibraryFeatureData.GetDimensions(0, vLocDimName)
        'Debug.Print "Locating dimensions :"

        'If Not IsEmpty(vLocDimName) Then
            'For i = LBound(vLocDimName) To UBound(vLocDimName)
                'Debug.Print "  " & vLocDimName(i), vLocDimVal(i)
            'Next i
        'End If

        ' Determine if existing dimension values of the library
        ' feature can be overridden
        'bOverrideDimVal = LibraryFeatureData.OverrideDimension
        'Debug.Print "OverrideDimension = " & bOverrideDimVal

        ' Get the number of feature dimensions
        'SizeDimensionsCount = LibraryFeatureData.GetDimensionsCount(1)
        'Debug.Print "SizeDimensionsCount = " & SizeDimensionsCount

        ' Get the feature dimensions
        'vSizDimVal = LibraryFeatureData.GetDimensions(1, vSizDimName)
        'Debug.Print "Size dimensions :"
        'If Not IsEmpty(vSizDimName) Then
            'For i = LBound(vSizDimName) To UBound(vSizDimName)

                'Debug.Print "  " & vSizDimName(i), vSizDimVal(i)
            'Next i
        'End If

        ' Get the number of references
        'ReferencesCount = LibraryFeatureData.GetReferencesCount
        'Debug.Print "GetReferencesCount = " & ReferencesCount

        ' Get the references
        'vRefs = LibraryFeatureData.GetReferences3(swLibFeatureData_e.swLibFeatureData_PartRespect, vRefType, vRefName)
        'If Not IsEmpty(vRefType) Then
            'Debug.Print "Reference types and names: "
            'For i = LBound(vRefType) To UBound(vRefType)
                'Debug.Print "  " & vRefType(i) & ", " & vRefName(i)
                'vRefs(i).Select False
            'Next i
        'End If

        'Release the selections that define the library feature
        LibraryFeatureData.ReleaseSelectionAccess

        ' Update the definition of the library feature
        status = Feature.ModifyDefinition(LibraryFeatureData, ModelDoc2, Nothing)
    
    
    End If

    ' Get the next feature until there are no more
    Set NextFeature = Feature.GetNextFeature
    Set Feature = Nothing
    Set Feature = NextFeature
    Set NextFeature = Nothing

Wend

End Sub

 

Nie mogę zmusić go do pracy 

 

Dołączam część i bibliotekę (małe wyjaśnienie polega na tym, że używam wielu różnych funkcji bibliotecznych, z których nie wszystkie mają te same odniesienia do umieszczenia) 

 

Jednym z pomysłów byłoby połączenie konfiguracji biblijnej z konfiguracją części, co pozwoliłoby, poprzez zmianę konfiguracji, na ponowne załadowanie biblioteki 


Część 1.SLDPRT
carre_-__a.sldlfp

Witaj @josé2fois,

Pierwsze podejście, polegające na podjęciu idei konfiguracji funkcji bibliotecznej.
Jeżeli zmiany w obrębie tej funkcji ograniczają się do "dokonania zmiany, na przykład średnicy wiercenia, która musi zostać zwężona lub powiększona, lub dodania fazy", zasadą jest dokonanie tych zmian w nowej konfiguracji tej samej funkcji bibliotecznej.

Następnie, za pomocą dołączonego makra (Biblifunction.swp), wszystkie konfiguracje, których dotyczy modyfikacja, są zastępowane tą nową konfiguracją. W pewnym sensie makro wyszukuje i zamienia konfigurację w funkcji bibliotecznej.
Makro wymusza również połączenie z plikiem SLDLFP funkcji bibliotecznej.

Aby użyć, musisz wypełnić 3 ciągi znaków:
- nazwa funkcji bibliotecznej (w Twoim przykładzie "kwadrat -  A")
- Nazwa konfiguracji, która ma zostać zastąpiona. Ustawiłem 3 z nich dla moich testów w Twoim przykładzie: "A_défaut", "Zaokrąglenie" i "Fazowanie". Pusty ciąg przetwarza wszystkie wystąpienia konfiguracji.
- Nazwa konfiguracji zastępczej zawierającej zmiany.

To makro działa tylko na tej zasadzie podmiany konfiguracji, na części SolidWorks i nie pozwala na zmianę odniesień, wymiarów itp.
Używaj ostrożnie, jest niewiele (brak) barierek ochronnych i nie ma funkcji anulowania.
To wszystko w dołączonym suwaku, w wersji SW 2021.

Pozdrowienia.


fonctionbibli.zip
2 polubienia

@m.blt   DZIĘKUJĘ DZIĘKUJĘ DZIĘKUJĘ !!

Działa jak Bóg!

To fantastyczne, w końcu będę mógł naprawdę cieszyć się korzyściami płynącymi z funkcji biblioteki