Hallo zusammen,
Ich möchte die Komponentenreferenz abrufen, um sie als benutzerdefinierte Eigenschaft während eines IFC-Exports zu verwenden. Ist das möglich?
Danke.
Hallo zusammen,
Ich möchte die Komponentenreferenz abrufen, um sie als benutzerdefinierte Eigenschaft während eines IFC-Exports zu verwenden. Ist das möglich?
Danke.
Hallo sdevauchelle,
Das habe ich gerade im Internet darüber gefunden=>Willkommen bei SOLIDWORKS Web Help
und das auch=>Vollständiger Leitfaden zum Import und Export. IFC in SolidWorks – S3D-Ingenieurwesen
Viel Glück.
@+.
AR.
Hallo;
Nach Makro:
Über Nomenklatur:
https://my.solidworks.com/reader/onlinehelp/2021%252Fenglish%252Fsolidworks%252Fsldworks%252Fc_component_references.htm/component-references
Es ist daher vernünftig anzunehmen, dass die Eigenschaft ist: " Komponentenreferenz" oder " Komponentenreferenz "
(Zur Prüfung: Dies ist keine Eigenschaft oder Information, die wir in unserem BE=> Keine virtuellen Komponenten in unserem Unternehmen verwenden...)
Aber technisch finde ich es seltsam, " Komponentenreferenzen " bei Komponenten mit einer " Teilefamilie " zu verwenden:
zwischen " Bezeichnung", " Konfigurationsname " und " Beschreibung " – sind das nicht schon genug Namensmöglichkeiten? (Verwirrungsgefahr?)
Danke für eure Antworten.
Ich werde klarstellen, was ich tun möchte.
Ich arbeite mit dem Routing-Modul an Netzwerken und muss sie nach IFC exportieren, um sie an den BIM-Manager zu senden.
So mache ich das:
1 - Speichere meine Assembly in IFC, mit Export und Abbildung benutzerdefinierter Eigenschaften.
2 – Ich öffne meine IFC unter SIMPLEBIM, um sie georeferenzieren zu können.
3 – unter SIMPLEBIM können Sie neue Eigenschaften manuell ausfüllen oder diese Aufgabe sogar automatisieren.
Das Problem ist, dass Solidworks nicht in der Lage ist, für jedes Element der Montage unterschiedliche globale IDs (oder GUIDs) zu generieren.
Wir hatten eine Lösung gefunden, indem wir den " Containernamen" und den "Namen" (im Grunde den Namen der übergeordneten Baugruppe und den des Bauteils) kombiniert haben, um eine neue Referenz zu schaffen, die alle Komponenten differenziert und in BIM nutzbar ist. Diese Lösung ist jedoch nicht praktikabel, da Solidworks bei einem neuen IFC-Export (neuer Index) zufällig das Suffix zuweist, das die identischen Teile unterscheidet (zum Beispiel zwei identische Taps). Es ist daher unmöglich, einen robusten Export zu schaffen.
Deshalb möchte ich eine neue Eigenschaft erstellen, die nach IFC exportiert und endgültig auf Assembly-Ebene ausgefüllt werden kann. Das Feld " Komponentenreferenz " schien mir ideal, weil ich das PID-TAG jedes Rohrelements manuell ausfüllen konnte.
Leider finde ich keinen Weg, es in eine IFC zu exportieren.
Es ist möglich, sie einfach in einer Stückliste auf einer Zeichnung abzurufen, was für andere Zwecke interessant ist, aber nicht für einen Export in BIM...
In diesem Fall scheint mir das Makro mit einer automatisierten Verkettung die relevanteste Lösung zu sein...
Achten Sie auf die " Ebene " des Namens der zu holenden Baugruppe (Kopfbaugruppe oder Unterbaugruppe?)
Also bin ich jetzt verlassen...
Ich habe das Makro ausgeführt (indem ich das Ausführungsfenster angezeigt habe), aber ich sehe wirklich nicht, wofür es ist...
Von welchem Makro sprichst du?
Wenn es das "codestack.net " ist, muss es modifiziert werden:
" Dieses Makro hat die Option, nur virtuelle Komponenten zu verarbeiten, indem die VIRTUAL_ONLY-Option auf True gesetzt wird."
Um alle Komponenten zu verarbeiten, musst du die VIRTUAL_ONLY*-Option auf False umschalten
Du musst das Makro ändern:
Derzeit bewirkt es genau das Gegenteil von dem, was du erreichen möchtest:
=> Es wird verwendet, um den Namen der Komponente in die Komponentenreferenz zu kopieren.
Ich habe es zum Beispiel vorgeschlagen, da es das " verwendet
"ComponentReference" ist daher eine " native " Eigenschaft in Solidworks, die in Ihrer Immobilienliste verwendet werden muss (ich habe den genauen Titel noch nicht gefunden).
Das folgende Makro wird wahrscheinlich etwas aufschlussreicher sein:
Nein, ich spreche von dem in deiner vorherigen Nachricht:
Dieses Makro lautet: "Assembly auf Komponenten- und Feature-Ebenen mit Rekursionsbeispiel (VBA)"
Ist nur ein Beispiel dafür, was möglich ist, wenn man sich erholen möchte
der Name einer Unterbaugruppe und nicht der Name der Hauptbaugruppe.
=> Beziehung zur angeforderten Verkettung (Es hängt ganz von deiner Definition ab
Ich kann verschiedene Eigenschaften in SIMPLEBIM miteinander verketten, aber ich muss eine Eigenschaft finden, die für zwei identische Elemente unterschiedlich ist, selbst wenn sie in derselben Assembly sind.
Es gibt den Namen, aber Solidworks generiert das Suffix zufällig, also ist es nicht stabil.
"Containername " ist der Name der Muttereinheit in der IFC.
Deshalb dachte ich, es wäre ideal, zu versuchen, die " Komponentenreferenz " abzurufen, die ich nennen kann, wie ich will...
Es gäbe auch eine " Vorkommnissen-Kennung ", aber ich kann sie nicht ändern (sie ist ausgegraut).
Dieser Parameter ist nicht modifizierbar, er hängt, wie der Name schon sagt, von der Anzahl der Vorkommen des in der Baugruppe abgelegten Bauteils ab (gelöscht oder nicht).
Hallo @sdevauchelle
Ich bin genau in der gleichen Situation wie du und leider bin ich zu genau derselben Schlussfolgerung gekommen, nur dass das Ziel für mich war, ein Naviswoks-Modell zu erstellen.
Wenn du also jemals eine Lösung findest, um diese " Component Ref"-Eigenschaft zu exportieren, bin ich voll dafür.
Viel Glück.
Ich bin an den Punkt gekommen, ein Makro zu erstellen, das Konfigurationen für Teile erstellt, die die " Komponentenreferenz " ausgefüllt haben. Um aus dieser neuen Konfiguration eine persönliche Eigenschaft " Tag PID " mit $PRP:" SW-Konfigurationsname zu erstellen.
Die Idee ist, dieses Makro kurz vor der Aufnahme in IFC auszuführen und nicht die Assembly und ihre Unterassemblies zu speichern.
Hier stehe ich: Das Makro erstellt tatsächlich die (abgeleiteten) Konfigurationen und integriert den Wert der " Komponentenreferenz " gut in die benutzerdefinierten Eigenschaften.
Andererseits, wenn ich das öffne. IFC gilt: Für zwei identische Bauteile (identische oder keine makrobezogene Pre-Macro-Konfigurationen) sind die " Tag PID "-Eigenschaften gleich.
Hier ist das aktuelle 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
Hallo;
Seit der Version 2025 von Solidworks scheint es möglich zu sein, die *.xml-Datei so zu verändern, dass die exportierten Eigenschaften zugeordnet werden:
Für das Makro, warum nicht mit einem Zähler statt (oder zusätzlich) PID-Tags begnügen?
Im Allgemeinen erfüllt die Variable ‹ i › mit i=i+1 (um die Null zu vermeiden) die Aufgabe gut...
Ja, ich benutze es bereits, um Eigenschaften in einem bestimmten Pset zu sortieren.
Ich habe den Zähler nicht betreten?
Ich habe vorgeschlagen, dass du einen Zähler hinzufügst:
swCustPropMgr.Add3 "Tag PID", swCustomInfoText, "$PRP:""SW-Configuration Name""", 1
von der Art:
swCustPropMgr.Add3 "Tag PID" , swCustomInfoText, "$PRP:""SW-Configuration Name""" & "_" i+1, 1
Um die Differenzierung Ihrer neuen " Tag PID "-Eigenschaft zu " erzwingen ", indem Sie diesen Zähler am Ende der Zeichenkette hinzufügen:
so würde " Tag PID " zu folgendem werden:
Der Name des configuration_1
Der Name des configuration_2
…
Der Name des configuration_11
(je nach Anzahl der Konfigurationen) ist es eine zusätzliche Sicherheit, optional, um Duplikate zu vermeiden...
Ich hatte mir eine radikalere Lösung überlegt, nämlich die Komponente als Kennzeichen zu markieren, indem ich einen Ordner mit allen spezifischen Elementen für den jeweiligen Fall anlege.
Diese Datei würde nur das Instrumental und die Taps enthalten, falls ich mich irre.
Ich habe es versucht, aber es weigert sich, die Addition von & " _ " i+1 hinzuzufügen