| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| PLM TechnologieForum Essen |
Autor
|
Thema: VBA Benutzerdefinierte Eigenschaften ändern bei geschlossener Datei (1357 / mal gelesen)
|
fabian1243 Mitglied Maschinen-Konstrukteur
Beiträge: 44 Registriert: 28.06.2018 SW 2021 Win 10 Pro v1909
|
erstellt am: 06. Jul. 2018 11:28 <-- editieren / zitieren --> Unities abgeben:
Hallo, Ich hab mein VBA fast so wie ich es will. Das Ändern der aktiven Solidworks Datei geht jetzt (Teil und Baugruppe). Der Browser zum hinzufügen und bereitstellen der Pfade geht auch. Speichern von Benutzereinstellungen in der Registry läuft auch. Was fehlt: Von jeder Datei von der der Pfad in der Liste steht, sollen nun die Benutzerdefinierten Eigenschaften ausgelesen und gespeichert werden. (Zurzeit ist das nur von der aktiven Dateie möglich) Hat jemand die passende Befehle gesehen oder weis wie das geht (Bei geschlossenen Dateien! Ansonsten dauert mir das öffnen/schreiben/schießen bei 100en Dateien zu lang!)
[Diese Nachricht wurde von fabian1243 am 06. Jul. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 06. Jul. 2018 11:56 <-- editieren / zitieren --> Unities abgeben: Nur für fabian1243
|
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 813 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 06. Jul. 2018 11:58 <-- editieren / zitieren --> Unities abgeben: Nur für fabian1243
Hallo Du kannst deine Dokumente unsichtbar laden, indem du DocumentVisible auf False setzt. Code: If FType = "*.sldprt" Then swApp.DocumentVisible False, swDocPart Set swPart = swApp.OpenDoc(sPath & sFileSW, swDocPart) swApp.DocumentVisible True, swDocPart ElseIf FType = "*.sldasm" Then swApp.DocumentVisible False, swDocAssembly Set swPart = swApp.OpenDoc(sPath & sFileSW, swDocAssembly) swApp.DocumentVisible True, swDocAssembly End If
Gruss Andreas ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fabian1243 Mitglied Maschinen-Konstrukteur
Beiträge: 44 Registriert: 28.06.2018 SW 2021 Win 10 Pro v1909
|
erstellt am: 06. Jul. 2018 12:04 <-- editieren / zitieren --> Unities abgeben:
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 06. Jul. 2018 12:39 <-- editieren / zitieren --> Unities abgeben: Nur für fabian1243
Hallo Fabian, genau diesen Schlüssel kannst du z.B. über deinen Reseller anfordern. Ohne den "Document Manager" geht das nur wie oben schon beschrieben mit unsichtbarem Laden, was aber auch sehr viel schneller geht wie das normale Laden. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fabian1243 Mitglied Maschinen-Konstrukteur
Beiträge: 44 Registriert: 28.06.2018 SW 2021 Win 10 Pro v1909
|
erstellt am: 06. Jul. 2018 14:52 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von HenryV: HalloDu kannst deine Dokumente unsichtbar laden, indem du DocumentVisible auf False setzt. Code: If FType = "*.sldprt" Then swApp.DocumentVisible False, swDocPart Set swPart = swApp.OpenDoc(sPath & sFileSW, swDocPart) swApp.DocumentVisible True, swDocPart ElseIf FType = "*.sldasm" Then swApp.DocumentVisible False, swDocAssembly Set swPart = swApp.OpenDoc(sPath & sFileSW, swDocAssembly) swApp.DocumentVisible True, swDocAssembly End If
Gruss Andreas
Hallo, du setzt auf unsichtbar dann öffnest du die Datei und dann machst du sie sichtbar, aber sichtbar will ich sie ja nicht ich will sie bearbeiten und dann schließen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 06. Jul. 2018 16:16 <-- editieren / zitieren --> Unities abgeben: Nur für fabian1243
Zitat: ... unsichtbar dann öffnest du die Datei und dann machst du sie sichtbar ...
Nein, tut er nicht. das ist ein Schalter für swApp, nicht für swPart. damit werden alle danach geöffneten Dateien unsichtbar (bzw. sichtbar) gehalten. du könntest also vorher und hinterher schalten, wenn dein Kram durch ist. swapp.documentvisible flase, swDocPart open part 1 ... do sth ... Close part 1 ... open part 400 ... do sth ... Close part 400 swapp.documentvisible true, swDocPart aber wenn du es nicht true stellst, kannst du vermutlich keine Teile mehr sichtbar öffnen ... absturz vorzeitig wäre wohl nicht so gut. Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| |
fabian1243 Mitglied Maschinen-Konstrukteur
Beiträge: 44 Registriert: 28.06.2018 SW 2021 Win 10 Pro v1909
|
erstellt am: 06. Jul. 2018 20:07 <-- editieren / zitieren --> Unities abgeben:
So hab Das Problem mit dem invisible öffnen gelöst und funktioniert einwandfrei, hab alles ein bisschen zurechtgerückt dann gings. Wer noch meine Entgültigen Code sehen will:
Code: '---Start Mehrere Dateien Speichern If Hauptform.Liste.ListCount > 0 And DoppelteCheckbox = False Then 'Dateien ausgewählt? For i = 0 To Hauptform.Liste.ListCount - 1 '---Start Teile If VBA.UCase$(VBA.Right$(Hauptform.Liste.List(i, 1), 3)) = "PRT" Then Ob_swApp.DocumentVisible False, swDocPART Set IModel = Ob_swApp.OpenDoc(Hauptform.Liste.List(i, 1), swDocPART) End If '---Ende Teile '---Start Baugruppe If VBA.UCase$(VBA.Right$(Hauptform.Liste.List(i, 1), 3)) = "ASM" Then Ob_swApp.DocumentVisible False, swDocASSEMBLY Set IModel = Ob_swApp.OpenDoc(Hauptform.Liste.List(i, 1), swDocASSEMBLY) End If '---Ende Baugruppe '---Start Fixe Daten die in der ComboBox stehen eintragen For j = 1 To In_Max If Hauptform.Controls("BoxMerken" & j).Value = True Then EigenschaftenErstellen (j) EigenschaftenSpeichern (j) End If Next j '---Ende Fixe Daten die in der ComboBox stehen eintragen '---Start Vorschläge eintragen For j = 1 To In_Max If Hauptform.Controls("Boxvorschlag" & j).Value = True Then EigenschaftAuslesen (j) EigenschaftVorschlagen (j) EigenschaftenErstellen (j) EigenschaftenSpeichern (j) End If Next j '---Ende Vorschläge eintragen IModel.Save Next i Ob_swApp.DocumentVisible True, swDocASSEMBLY Ob_swApp.DocumentVisible True, swDocPART Set IModel = Ob_swApp.ActiveDoc Else If Not Hauptform.Liste.ListCount > 0 Then MsgBox "Keine Dateien ausgewählt!", vbInformation End If End If '---Ende Mehrere Dateien Speichern
[Diese Nachricht wurde von fabian1243 am 06. Jul. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |