Eksport "Component Reference"

Witam wszystkich,

Chcę odzyskać referencję komponentu, aby użyć jej jako własności niestandardowej podczas eksportu IFC. Czy to możliwe?

Dziękuję.

Witaj Sdevauchelle,

Oto, co właśnie znalazłem w internecie na ten temat=>Witamy w SOLIDWORKS Web Help
i to również =>Kompletny przewodnik po importie i eksportie . IFC w SolidWorks - Inżynieria S3D
Powodzenia.
@+.
AR.

Cześć;

Autor: Macro:

Poprzez nazewnictwo:
https://my.solidworks.com/reader/onlinehelp/2021%252Fenglish%252Fsolidworks%252Fsldworks%252Fc_component_references.htm/component-references

Dlatego rozsądne jest sądzić, że własność to: " Component Reference " lub " ComponentReference "
(Do testu, nie jest to właściwość ani informacja, której używamy w naszym BE=> Brak wirtualnych komponentów w naszej firmie...)

Ale technicznie rzecz biorąc, uważam, że używanie " Referencji komponentów" do komponentów z " Rodziną Części " jest dziwne:
między " Oznaczenie ", " Nazwa konfiguracji " i " Opis " czy to już nie wystarczy, by to było nazewnictwo? (Ryzyko zamieszania?)

2 polubienia

Dziękuję za odpowiedzi.
Określę, co chcę zrobić.
Pracuję nad sieciami z modułem routingu i muszę eksportować je do IFC, aby przesłać do menedżera BIM.
Oto jak ja to robię:
1 - Zapisywanie mojego zespołu w IFC, z eksportem i mapowaniem własnych właściwości.
2 - Otwieram mój IFC w SIMPLEBIM, aby go georeferencjonować.
3 – w SIMPLEBIM możesz ręcznie wypełniać nowe właściwości, a nawet automatyzować to zadanie.

Problem polega na tym, że Solidworks nie jest w stanie generować różnych Global ID (lub GUIDów) dla każdego elementu asemblera.
Znaleźliśmy rozwiązanie, łącząc " nazwę kontenera" i "nazwę" (czyli nazwę zespołu nadrzędnego i elementu), aby stworzyć nową referencję rozróżniającą wszystkie komponenty i możliwą do wykorzystania w BIM. Jednak to rozwiązanie nie jest wykonalne, ponieważ podczas nowego eksportu IFC (nowy indeks) Solidworks losowo przypisze przyrostek różnicujący identyczne części (na przykład dwa identyczne tapy). Dlatego nie jest możliwe stworzenie silnego eksportu.

Dlatego chcę stworzyć nową własność, którą można wyeksportować do IFC i wypełnić raz na zawsze na poziomie montażu. Pole " referencja komponentu " wydawało mi się idealne, ponieważ mogłem ręcznie wpisać PID TAG każdego elementu rurowego.
Niestety, nie mogę znaleźć sposobu, by wyeksportować go do IFC.
Można łatwo go odzyskać w BOM na rysunku, co jest ciekawe do innych zastosowań, ale nie do eksportu do BIM...

W tym przypadku makro z automatycznym połączeniem wydaje mi się najbardziej odpowiednim rozwiązaniem...
Zwróć uwagę na " poziom " nazwy zespołu, który ma się pobrać (Zespół główny czy podzespół?)

1 polubienie

Więc teraz zostałam porzucona...
Uruchomiłem makro (wyświetlając okno wykonania), ale naprawdę nie rozumiem, do czego to służy...

O którym makro mówisz?

Jeśli jest to " codestack.net ", musi zostać zmodyfikowany:
" To makro ma opcję przetwarzania tylko komponentów wirtualnych, ustawiając VIRTUAL_ONLY na True." 
aby przetworzyć wszystkie komponenty, trzeba przełączyć opcję VIRTUAL_ONLY* na False

Musisz zmienić makro:
Obecnie robi odwrotnie niż to, co chcesz osiągnąć:
=> Służy do kopiowania nazwy komponentu do referencji komponentu.
Na przykład zaproponowałem to, ponieważ używa się "
"ComponentReference" to zatem "natywna " właściwość w Solidworks, która musi być użyteczna na liście właściwości (jeszcze nie znalazłem jej dokładnego tytułu).

Poniższe makro prawdopodobnie będzie trochę bardziej wymowne:

1 polubienie

Nie, mówię o tej z twojej poprzedniej wiadomości:

To makro "Transformuj montaż na poziomie komponentów i cech z wykorzystaniem przykładu rekurencji (VBA)"
To tylko ilustracja tego, co jest możliwe, jeśli chcesz się wyleczyć
nazwę podzespołu, a nie nazwę zespołu głównego.
=> Związek z żądanym połączeniem (wszystko zależy od twojej definicji

1 polubienie

Mogę łączyć różne właściwości w SIMPLEBIM, ale muszę znaleźć własność, która różni się dla dwóch identycznych elementów, nawet jeśli są w tym samym asemblerze.
Jest nazwa, ale Solidworks losowo generuje sufiks, więc nie jest stabilny.
" nazwa kontenera" to nazwa zespołu nadrzędnego w IFC.
Dlatego uznałem, że idealnie będzie spróbować odzyskać " referencję komponentu ", którą mogę nazwać, jak chcę...
Byłby też " identyfikator zdarzenia ", ale nie mogę go zmienić (jest wyszarzony).

Ten parametr nie jest modyfikowalny, zależy, jak sama nazwa wskazuje, od liczby wystąpień części zdeponowanej w zespole (usuniętej lub nie).

2 polubienia

Cześć @sdevauchelle

Jestem dokładnie w takiej samej sytuacji jak ty i niestety doszedłem do dokładnie tego samego wniosku, z tą różnicą, że dla mnie celem było stworzenie modelu naviswoks.
Jeśli kiedykolwiek znajdziesz rozwiązanie na eksport tej właściwości "  component ref", jestem za.

Powodzenia.

Doszedłem do momentu, w którym próbowałem stworzyć makra, które tworzy konfiguracje dla części z " referencją komponentu ". Aby z tej nowej konfiguracji utworzyć własność osobistą " Tag PID " używając $PRP:" SW-Configuration Name ".
Chodzi o uruchomienie tego makra tuż przed zapisem w IFC, a nie o zapisywanie zespołu i jego podzespołów.

Oto gdzie jestem: makro faktycznie tworzy (wyprowadzone) konfiguracje i dobrze integruje wartość " referencji komponentu " z własnymi właściwościami.
Z drugiej strony, gdy otwieram . IFC, dla dwóch identycznych części (identycznych lub niemakra konfiguracji pre-makro), właściwości " Tag PID " są takie same.

Oto obecny makro:

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAssy As SldWorks.AssemblyDoc
Dim swComp As SldWorks.Component2
Dim swPart As SldWorks.ModelDoc2
Dim swConfig As SldWorks.Configuration
Dim swCustPropMgr As SldWorks.CustomPropertyManager
Dim vComponents As Variant
Dim i As Long
Dim compRef As String
Dim parentConfig As String

Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    
    If swModel Is Nothing Then Exit Sub
    Set swAssy = swModel
    vComponents = swAssy.GetComponents(False)

    If Not IsEmpty(vComponents) Then
        For i = 0 To UBound(vComponents)
            Set swComp = vComponents(i)
            
            If swComp.GetSuppression = swComponentFullyResolved Then
                compRef = swComp.ComponentReference
                
                If compRef <> "" Then
                    Set swPart = swComp.GetModelDoc2
                    
                    If Not swPart Is Nothing Then
                        parentConfig = swComp.ReferencedConfiguration
                        
                        ' 1. Créer la config au nom du TAG (ex: "V-102")
                        ' On utilise le TAG pur comme nom de config
                        Set swConfig = swPart.ConfigurationManager.AddConfiguration(compRef, "", "", 256, parentConfig, "")
                        
                        ' 2. Basculer l'instance sur cette config
                        swComp.ReferencedConfiguration = compRef
                        
                        ' 3. Écrire dans l'onglet "PERSONNALISER" (Global) du document pièce
                        ' On pointe vers le nom de la config active
                        Set swCustPropMgr = swPart.Extension.CustomPropertyManager("")
                        
                        ' La valeur "$PRP..." force SW à lire le nom de la config en cours
                        swCustPropMgr.Add3 "Tag PID", swCustomInfoText, "$PRP:""SW-Configuration Name""", 1
                    End If
                End If
            End If
        Next i
    End If

    swModel.ForceRebuild3 True
    MsgBox "Propriété globale 'Tag PID' liée au nom de configuration." & vbCrLf & _
           "Prêt pour l'export IFC."
End Sub

Cześć;

Od wersji Solidworks z 2025 roku wydaje się, że możliwe jest zmodyfikowanie pliku *.xml, aby mapować właściwości do eksportu:

Jeśli chodzi o makro, dlaczego nie zadowolić się licznikiem zamiast (lub o) tagów PID?
Ogólnie rzecz biorąc, zmienna ‹ i › z i=i+1 (aby uniknąć zera) dobrze spełnia zadanie...

Tak, już używam go do sortowania właściwości w danym Psecie.

Nie wszedłem do licznika?

Zasugerowałem, żebyś dodał licznik na:

swCustPropMgr.Add3 "Tag PID", swCustomInfoText, "$PRP:""SW-Configuration Name""", 1

typu:

swCustPropMgr.Add3 "Tag PID" , swCustomInfoText, "$PRP:""SW-Configuration Name""" & "_" i+1, 1

Aby " wymusić " różniczkowanie nowej właściwości " Tag PID ", dodając ten licznik na końcu ciągu:
w związku z tym " Tag PID " miałby się nazywać:
Nazwa configuration_1
Nazwa configuration_2

Nazwa configuration_11

(w zależności od liczby konfiguracji), to dodatkowe zabezpieczenie, opcjonalne, by uniknąć duplikatów...

Pomyślałem o bardziej radykalnym rozwiązaniu – uczynienie komponentu oznaczonym niezależnym poprzez utworzenie folderu zawierającego wszystkie elementy specyficzne dla danej sprawy.
Ten plik zawierałby tylko instrumental i tapy, jeśli się mylę.

Próbowałem, ale odmawia dodania & " _ " i+1