Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Zuweisung einer „Komponentenreferenz“ per Makro

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Hannover Messe
Autor Thema:  Zuweisung einer „Komponentenreferenz“ per Makro (889 mal gelesen)
Solidwörker
Mitglied
Konstrukteur

Sehen Sie sich das Profil von Solidwörker an!   Senden Sie eine Private Message an Solidwörker  Schreiben Sie einen Gästebucheintrag für Solidwörker

Beiträge: 4
Registriert: 20.09.2012

SWX 2019 SP5
Win10 64bit
SolidWorks PDM
HP Z4
Intel Xeon W-2225
32GB RAM
Nvidia Quadro RTX4000

erstellt am: 13. Nov. 2020 15:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Komponentenreferenzneu.jpg

 
Zur Strukturierung der Stückliste weisen wir Teilen in den Baugruppen eine „Komponentenreferenz“ zu.
Leider kann die „Komponentenreferenz“ nicht bei mehreren ausgewählten Teilen auf einmal eingetragen werden. Zudem ist jedes Mal auszuwählen dass die „Komponentenreferenz“ in allen Konfigurationen geändert werden soll.
Zur Vereinfachung habe ich ein Makro erstellt. Es funktioniert auch soweit. Leider konnte ich nicht herausfinden wie die einzutragende „Komponentenreferenz“ in alle Konfigurationen übernommen werden kann. Auch der Makro-Recorder hat leider nicht weiter geholfen. Kann mir dazu jemand einen Tipp geben?

Vorab vielen Dank

Das vereinfachte Makro sieht wie folgt aus:

Sub main()
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim swComp As Component2
Dim Kompref As String
Dim i As Integer
Dim a As Integer
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
'Menge der ausgewählten Teile zählen
    While Not Part.SelectionManager.GetSelectedObjectsComponent4(a + 1, -1) Is Nothing
        a = a + 1
    Wend
' Eingabe Komponentenreferenz
    Kompref = InputBox("Bitte Komponentenreferenz eingeben.", "Komponentenreferenz eingeben")
        For i = 1 To a
            Set swComp = Part.SelectionManager.GetSelectedObjectsComponent4(i, -1)
            swComp.ComponentReference = Kompref
        Next i
    boolstatus = Part.ForceRebuild3(True)
    Exit Sub
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Malte70
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Malte70 an!   Senden Sie eine Private Message an Malte70  Schreiben Sie einen Gästebucheintrag für Malte70

Beiträge: 61
Registriert: 11.11.2020

PC1
AMD Threadripper 1020X 12-Core
G.Skill 64GB DDR4
MSI RX5700XT GDDR6 8GB
1TB SSD M2
Windows 10 Pro
Inventor 2018
Inventor 2017
Solidworks 2015
Solidworks 2020
Solidworks 2018
SW PDM 2015 und 2020
Logitrace V.12
Autocad R13
Autocad 2017
Office 2019
Baugruppen meist ab 20.000 Teile<P>PC2
Dell Precision 5820

erstellt am: 13. Nov. 2020 23:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Solidwörker 10 Unities + Antwort hilfreich

Hallo,

habe sowas ähnliches vor. Habe deswegen ein Programm umgeschrieben, das mir die Eigenschaften ändert, die bei uns vorhandenen Eigenschaften löscht und neue hinzufügt.
das geschieht bei mir über einen Dateipfad und die eingegebenen teile.

habe nur noch nicht raus, wie ich das Material und das Gewicht zuweise.

Sub main()
Set swApp = Application.SldWorks
 
    Dim FileName As String
    Dim Errors As Long
    Errors = 0
    Dim Warnings As Long
    Warnings = 0
    Dim strOrdnerName As String
    Dim strName As String
    Dim intz As Integer
    strOrdnerName = "C:\Zwischenordner\Strukturbauteile\DIN\UNP\"
    strName = Dir(strOrdnerName & "*.sldlfp")
 
        Do While strName <> ""
            FileName = strOrdnerName & strName
            If FileName = strOrdnerName Then
            Exit Do
            End If
            Set ModelDoc = swApp.OpenDoc6(FileName, 1, 0, "", Errors, Warnings)
            swApp.ActivateDoc2 strName, False, Errors
            Dim val As String
            Dim valout As String
            Dim boolstatus As Boolean
            Set swModelDocExt = ModelDoc.Extension
            Set swCustProp = swModelDocExt.CustomPropertyManager("")
            boolstatus = swCustProp.Get4("Oberflächenbehandlung", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Oberflächenbehandlung")
            boolstatus = swCustProp.Get4("Oberflächenbehandlung", False, val, valout)
       
            boolstatus = swCustProp.Get4("Gewicht", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Gewicht")
            boolstatus = swCustProp.Get4("Gewicht", False, val, valout)
       
            boolstatus = swCustProp.Get4("Beschreibung", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Beschreibung")
            boolstatus = swCustProp.Get4("Beschreibung", False, val, valout)
       
            boolstatus = swCustProp.Get4("Material", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Material")
            boolstatus = swCustProp.Get4("Material", False, val, valout)
            boolstatus = ModelDoc.AddCustomInfo("Material", "Text", "  " & val)
       
            boolstatus = swCustProp.Get4("Norm", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Norm")
            boolstatus = swCustProp.Get4("Norm", False, val, valout)
            boolstatus = ModelDoc.AddCustomInfo("Norm", "Text", "DIN1026-1 " & val)
       
            boolstatus = swCustProp.Get4("Abmessung", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Abmessung")
            boolstatus = swCustProp.Get4("Abmessung", False, val, valout)
       
            boolstatus = swCustProp.Get4("Abmessungen", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Abmessungen")
            boolstatus = swCustProp.Get4("Abmessungen", False, val, valout)
            boolstatus = ModelDoc.AddCustomInfo("Abmessung", "Text", "UPN " & val)
       
            boolstatus = swCustProp.Get4("Benennung", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Benennung")
            boolstatus = swCustProp.Get4("Benennung", False, val, valout)
            boolstatus = ModelDoc.AddCustomInfo("Gewicht", "Text", "  " & val)
       
            boolstatus = swCustProp.Get4("Description", False, val, valout)
            boolstatus = ModelDoc.DeleteCustomInfo("Description")
            boolstatus = ModelDoc.AddCustomInfo("Benennung", "Text", "UPN-Profil " & val)
            boolstatus = swCustProp.Get4("Description", False, val, valout)
            longstatus = ModelDoc.SaveAs3(FileName, 0, 2)
       
       
            Debug.Print (strName & " ==> " & val & " ==> " & valout)
       
            Dim Titel As String
            Titel = ModelDoc.GetTitle
            swApp.CloseDoc Titel
            strName = Dir
        Loop
End Sub

hoffe das hilft dir irgendwie weiter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Andi Beck an!   Senden Sie eine Private Message an Andi Beck  Schreiben Sie einen Gästebucheintrag für Andi Beck

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 14. Nov. 2020 08:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Solidwörker 10 Unities + Antwort hilfreich

Hallo,
ich habe für das Gewicht und Material folgende Schleife verwendet, um sie in alle Konfigs einzufügen.

Code:

        Dim swApp          As SldWorks.SldWorks
        Dim swModel        As SldWorks.ModelDoc2
        Dim sFileName      As String
        Dim boolstatus      As Boolean
        Dim i              As Long

        Set swApp = Application.SldWorks
        Set swModel = swApp.ActiveDoc

        sFileName = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1)
        vConfNameArr = swModel.GetConfigurationNames
   
        For i = 0 To UBound(vConfNameArr)
            sConfigName = vConfNameArr(i)
            boolstatus = swModel.DeleteCustomInfo2(sConfigName, "Gewicht")
            boolstatus = swModel.AddCustomInfo3(sConfigName, "Gewicht", swCustomInfoText, Chr(34) + "SW-Mass" + "@@" + sConfigName + "@" + sFileName + Chr(34))
            boolstatus = swModel.DeleteCustomInfo2(sConfigName, "Material")
            boolstatus = swModel.AddCustomInfo3(sConfigName, "Material", swCustomInfoText, Chr(34) + "SW-Material" + "@@" + sConfigName + "@" + sFileName + Chr(34))
        Next i


Evtl. hilft das ja ein wenig weiter.

Grüße, Andi

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Malte70
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Malte70 an!   Senden Sie eine Private Message an Malte70  Schreiben Sie einen Gästebucheintrag für Malte70

Beiträge: 61
Registriert: 11.11.2020

PC1
AMD Threadripper 1020X 12-Core
G.Skill 64GB DDR4
MSI RX5700XT GDDR6 8GB
1TB SSD M2
Windows 10 Pro
Inventor 2018
Inventor 2017
Solidworks 2015
Solidworks 2020
Solidworks 2018
SW PDM 2015 und 2020
Logitrace V.12
Autocad R13
Autocad 2017
Office 2019
Baugruppen meist ab 20.000 Teile<P>PC2
Dell Precision 5820

erstellt am: 14. Nov. 2020 09:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Solidwörker 10 Unities + Antwort hilfreich

Mir hats weitergeholfen von mir schonmal ein großes Danke

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Solidwörker
Mitglied
Konstrukteur

Sehen Sie sich das Profil von Solidwörker an!   Senden Sie eine Private Message an Solidwörker  Schreiben Sie einen Gästebucheintrag für Solidwörker

Beiträge: 4
Registriert: 20.09.2012

SWX 2019 SP5
Win10 64bit
SolidWorks PDM
HP Z4
Intel Xeon W-2225
32GB RAM
Nvidia Quadro RTX4000

erstellt am: 14. Nov. 2020 11:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für die Rückmeldung!
Wenn ich das richtig verstehe arbeitet dein Marko auf Teileebene, die Eigenschaften werden im Teil gespeichert.
Die "Komponentenreferenz" in meinem Makro wird zwar einem Teil zugewiesen, aber in der Baugruppe für jede Konfiguration einzeln gespeichert. Im Einzelteil wird nichts verändert.
Unseren Reseller habe ich auch schon angefragt, leider erfolglos.

Freundliche Grüße und ein schönes Wochenende

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Malte70
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Malte70 an!   Senden Sie eine Private Message an Malte70  Schreiben Sie einen Gästebucheintrag für Malte70

Beiträge: 61
Registriert: 11.11.2020

PC1
AMD Threadripper 1020X 12-Core
G.Skill 64GB DDR4
MSI RX5700XT GDDR6 8GB
1TB SSD M2
Windows 10 Pro
Inventor 2018
Inventor 2017
Solidworks 2015
Solidworks 2020
Solidworks 2018
SW PDM 2015 und 2020
Logitrace V.12
Autocad R13
Autocad 2017
Office 2019
Baugruppen meist ab 20.000 Teile<P>PC2
Dell Precision 5820

erstellt am: 14. Nov. 2020 17:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Solidwörker 10 Unities + Antwort hilfreich

Ja, in diesem falle spreche ich einen Dateipfad an.

in diesem Dateipfad spreche ich alle Teile im Format .sldlfp an. (Bibliotheksteile)

Mit dem SW Konverter könnte man dies auch mit Teilen oder Baugruppen machen, aber scheinbar macht der auch bei referenzen Probleme.

wahrscheinlich gibt es die Möglichkeit alle Propertys mit einem Befehl zu löschen, das wäre wahrscheinlich ein besserer weg.
Bei mir sind scheinbar auch noch alte und eigenartige Befehle drin.

halt Copy Cut & paste bis zum abwinken

Bei mir ist momentan noch das Ergebnis wichtig und nicht der weg. Kommt aber alles noch.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Malte70
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Malte70 an!   Senden Sie eine Private Message an Malte70  Schreiben Sie einen Gästebucheintrag für Malte70

Beiträge: 61
Registriert: 11.11.2020

PC1
AMD Threadripper 1020X 12-Core
G.Skill 64GB DDR4
MSI RX5700XT GDDR6 8GB
1TB SSD M2
Windows 10 Pro
Inventor 2018
Inventor 2017
Solidworks 2015
Solidworks 2020
Solidworks 2018
SW PDM 2015 und 2020
Logitrace V.12
Autocad R13
Autocad 2017
Office 2019
Baugruppen meist ab 20.000 Teile<P>PC2
Dell Precision 5820

erstellt am: 14. Nov. 2020 17:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Solidwörker 10 Unities + Antwort hilfreich

Ja, in diesem falle spreche ich einen Dateipfad an.

in diesem Dateipfad spreche ich alle Teile im Format .sldlfp an. (Bibliotheksteile)

Mit dem SW Konverter könnte man dies auch mit Teilen oder Baugruppen machen, aber scheinbar macht der auch bei referenzen Probleme.

wahrscheinlich gibt es die Möglichkeit alle Propertys mit einem Befehl zu löschen, das wäre wahrscheinlich ein besserer weg.
Bei mir sind scheinbar auch noch alte und eigenartige Befehle drin.

halt Copy Cut & paste bis zum abwinken

Bei mir ist momentan noch das Ergebnis wichtig und nicht der weg. Kommt aber alles noch.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz