Exporteer de "Component Reference"

Hallo allemaal,

Ik wil de componentreferentie ophalen om deze als aangepaste eigenschap te gebruiken tijdens een IFC-export. Is dit mogelijk?

Dank je.

Hallo sdevauchelle,

Dit is wat ik net op het web heb gevonden=>Welkom bij de SOLIDWORKS Web Help
en dat ook=>Complete Gids voor Import en Export. IFC in SolidWorks - S3D Engineering
Succes.
@+.
AR.

Hallo;

Per macro:

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

Het is daarom redelijk te denken dat de eigenschap is: " Component Referentie " of " ComponentReferentie "
(Om te testen: dit is geen eigenschap of informatie die we gebruiken in onze BE=> Geen virtuele componenten in ons bedrijf...)

Maar technisch gezien vind ik het vreemd om " Component References " te gebruiken op componenten met een " Part Family":
tussen " Aanduiding ", de " Configuratienaam " en " Beschrijving " – is dat niet al genoeg naamgevingsmogelijkheden? (Risico op verwarring?)

2 likes

Dank je voor je antwoorden.
Ik zal specificeren wat ik probeer te doen.
Ik werk aan netwerken met de routeringsmodule en ik moet ze exporteren naar IFC om ze naar de BIM-manager te sturen.
Zo doe ik het:
1 - Mijn assembly opslaan in IFC, met export en mapping van aangepaste eigenschappen.
2 - Ik open mijn IFC onder SIMPLEBIM, om het te georefereren.
3 - onder SIMPLEBIM kun je nieuwe eigenschappen handmatig invullen, of deze taak zelfs automatiseren.

Het probleem is dat Solidworks niet in staat is om verschillende Global IDs (of GUID's) te genereren voor elk element van de assembly.
We hadden een oplossing gevonden door de " containernaam " en "naam" te combineren (in feite de naam van de hoofdassemblage en die van het onderdeel) om een nieuwe referentie te creëren die alle componenten differentieert en bruikbaar is in BIM. Maar deze oplossing is niet haalbaar omdat Solidworks tijdens een nieuwe IFC-export (nieuwe index) willekeurig het achtervoegsel zal toewijzen dat de identieke onderdelen differentieert (bijvoorbeeld twee identieke taps). Het is daarom onmogelijk om een robuuste export te creëren.

Daarom wil ik een nieuwe property creëren die kan worden geëxporteerd naar IFC, en definitief ingevuld op assemblageniveau. Het vakje " component reference" leek mij ideaal omdat ik handmatig de PID TAG van elk leidingelement kon invullen.
Helaas kan ik geen manier vinden om het te exporteren naar een IFC.
Het is mogelijk om het eenvoudig in een stuklijst op een tekening terug te halen, wat interessant is voor andere toepassingen, maar niet voor export naar BIM...

In dit geval lijkt de macro met een geautomatiseerde concatenatie mij de meest relevante oplossing...
Let op het " niveau " van de naam van de te halen assemblage (Hoofdassemblage of Subassemblage?)

1 like

Dus nu ben ik gedumpt...
Ik heb de macro uitgevoerd (door het uitvoeringsvenster te tonen), maar ik zie echt niet waar het voor is...

Over welke macro heb je het?

Als het de "codestack.net " is, moet deze worden aangepast:
" Deze macro heeft een optie om alleen virtuele componenten te verwerken door de VIRTUAL_ONLY optie op True te zetten." 
Om alle componenten te verwerken moet je de VIRTUAL_ONLY*-optie op False zetten

Je moet de macro veranderen:
Op dit moment doet het het tegenovergestelde van wat je wilt bereiken:
=> Het wordt gebruikt om de naam van de component te kopiëren naar de componentreferentie.
Ik stelde het bijvoorbeeld voor omdat het de "
ComponentReference is daarom een " inheems " eigendom in Solidworks dat bruikbaar moet zijn in je eigendomslijst (ik heb de exacte titel nog niet gevonden).

De onderstaande macro zal waarschijnlijk iets meer betekenen:

1 like

Nee, ik heb het over die in je vorige bericht:

Deze macro "Traverse assembly op component- en featureniveau met behulp van recursievoorbeeld (VBA)"
Is slechts een illustratie van wat mogelijk is als je wilt herstellen
de naam van een subassembly in plaats van de naam van de hoofdassemblage.
=> Relatie tot de gevraagde concatenatie (Het hangt allemaal af van je definitie

1 like

Ik kan verschillende eigenschappen samenvoegen in SIMPLEBIM, maar ik moet een eigenschap vinden die verschillend is voor twee identieke elementen, zelfs als ze in dezelfde assembly zitten.
Er is de naam, maar Solidworks genereert het achtervoegsel willekeurig, dus het is niet stabiel.
" Containernaam" is de naam van de moederassemblage in de IFC.
Daarom dacht ik dat het ideaal was om te proberen " component reference" te vinden, die ik kan noemen zoals ik wil...
Er zou ook " occurrence identifier" zijn, maar ik kan die niet veranderen (hij is grijs).

Deze parameter is niet aanpasbaar, het hangt, zoals de naam al aangeeft, af van het aantal gevallen van het onderdeel dat in de assemblage wordt gedeponeerd (verwijderd of niet).

2 likes

Hallo @sdevauchelle

Ik zit precies in dezelfde situatie als jij en helaas kwam ik tot precies dezelfde conclusie, behalve dat het voor mij was om een naviswoks-model te maken.
Dus als je ooit een oplossing vindt om deze " component ref"-eigenschap te exporteren, ben ik er helemaal voor.

Succes.

Ik ben op het punt gekomen dat ik probeerde een macro te maken die configuraties maakt voor onderdelen die de " component reference" hebben ingevuld. Om vanuit deze nieuwe configuratie een persoonlijke eigenschap " Tag PID " te maken met $PRP:" SW-Configuration Name .
Het idee is om deze macro net voor opname in IFC uit te voeren, en niet om de assembly en de subassemblies te bewaren.

Hier sta ik: de macro maakt de (afgeleide) configuraties aan en integreert de waarde van de " componentreferentie " goed in de aangepaste eigenschappen.
Aan de andere kant, wanneer ik de . IFC, voor twee identieke onderdelen (identieke of niet-macro pre-macro configuraties), zijn de " Tag PID "-eigenschappen hetzelfde.

Hier is het huidige macro:

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;

Sinds de 2025-versie van Solidworks lijkt het mogelijk om het *.xml-bestand aan te passen om de te exporteren eigenschappen toe te wijzen:

Voor de macro, waarom niet genoegen nemen met een teller in plaats van (of als aanvulling op) PID-tags?
In het algemeen doet de variabele ‹ i › met i=i+1 (om de nul te vermijden) het werk goed...

Ja, ik gebruik het al om eigenschappen te sorteren in een bepaalde Pset.

Ik ben niet in de meter gegaan?

Ik stelde voor dat je een teller toevoegt op:

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

van het type:

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

Om de differentiatie van je nieuwe " Tag PID " eigenschap te " forceren " door deze teller aan het einde van de string toe te voegen:
dus zou " Tag PID " worden:
De naam van de configuration_1
De naam van de configuration_2

De naam van de configuration_11

(afhankelijk van het aantal configuraties), is het een extra beveiliging, optioneel, om duplicaten te voorkomen...

Ik had een radicalere oplossing bedacht, namelijk het component onafhankelijk maken van het taggen door een map aan te maken met alle elementen die specifiek zijn voor de betreffende zaak.
Dit bestand bevat alleen het instrumentale en de taps als ik het mis heb.

Ik heb het geprobeerd, maar het weigert de toevoeging van & " _  " i+1