Witam wszystkich,
Chcę odzyskać referencję komponentu, aby użyć jej jako własności niestandardowej podczas eksportu IFC. Czy to możliwe?
Dziękuję.
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?)
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ół?)
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:
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
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).
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