| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| SolidCAM Professor Videos | Tipps & Tricks (SolidCAM) |
Autor
|
Thema: In Baugruppenzeichnung Baugruppe ganz laden (mittels API) (1509 mal gelesen)
|
Hermann75 Mitglied Konstrukteur
Beiträge: 124 Registriert: 04.05.2016 MS Windows 11 Pro; Intel Core i9-12900HX, 2.3GHz; 64GB Ram; 64bit; NVIDIA RTX A3000 SW 2021 SP5.1 Professional SW-PDM 2021 Professional HiCAD next 2008 Helios next 2008
|
erstellt am: 04. Sep. 2020 10:30 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Mit unseren CAD-Stücklisten haben wir immer wieder gewisse "Probleme". Bei Zeichnungen von Baugruppen mit mehr als 500 Teilen werden diese Baugruppen reduziert geladen. Dies hat zu Folge, dass die Dateieigenschaften der Teile nicht neu geladen werden (oder zumindest nicht mit dem PDM abgeglichen werden). Dies hat zur Folge, dass die Stückliste nicht aktuell ist. Dies als Hintergrund. Nun bin ich an einem Makro dran, mit welchem ich die Stückliste aktualisieren (und neu sortieren) will. Meine Frage ist nun folgende: Wie kann ich die Baugruppe ansprechen, die in der Zeichnung referenziert ist und dort den Befehl "ResolveAllLightWeightComponents" ausführen? Kann mir da jemand mit einem Code-Schnipsel aushelfen? freundlicher Gruss, Hermann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 04. Sep. 2020 13:50 <-- editieren / zitieren --> Unities abgeben: Nur für Hermann75
|
Hermann75 Mitglied Konstrukteur
Beiträge: 124 Registriert: 04.05.2016 MS Windows 11 Pro; Intel Core i9-12900HX, 2.3GHz; 64GB Ram; 64bit; NVIDIA RTX A3000 SW 2021 SP5.1 Professional SW-PDM 2021 Professional HiCAD next 2008 Helios next 2008
|
erstellt am: 08. Sep. 2020 13:32 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry Soweit habe ich es auch geschafft. Noch fehlt mir aber der entscheidende Schritt. Wie kann ich SolidWorks anweisen, die referenzierten Komponenten komplett zu laden? Das Programm läuft zwar durch, aber die Komponenten bleiben Lightweight. Option Explicit Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swDraw As SldWorks.DrawingDoc Dim swView As SldWorks.View Dim swTable As SldWorks.TableAnnotation Dim swSpecTable As IBomTableAnnotation Dim swSortData As BomTableSortData Sub main() Dim bRet As Boolean Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swDraw = swModel 'Suche erste Ansicht auf aktuellem Blatt Set swView = swDraw.GetFirstView 'Ansichten nach Tabelle durchsuchen Do While Not swView Is Nothing Set swTable = swView.GetFirstTableAnnotation Do While Not swTable Is Nothing Set swView = swView.GetNextView 'NEUER TEIL Dim sModelName As String Set swModel = swView.ReferencedDocument bRet = swModel.ResolveAllLightWeightComponents(True) Debug.Print ("All lightweight components resolved (0 = All components resolved)? " & bRet) 'Starte Unterprogramm ' Unterprogramm swApp, swModel, swTable Set swTable = swTable.GetNext Loop ' Set swView = swView.GetNextView Loop End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 08. Sep. 2020 14:53 <-- editieren / zitieren --> Unities abgeben: Nur für Hermann75
In den Bemerkungen ResolveAllLightWeightComponents Method (IAssemblyDoc) von steht. Zitat: Remarks The assembly must be open in its own window. Call ISldWorks::ActivateDoc2 or IModelDoc2::Visible to ensure that it is. If the assembly is only open as a reference in another document, then this method returns swComponentResolveStatus_e.swResolveNotPerformed.
Also müsstest du, bevor du das ResolveAllLightWeightComponents machst, die Baugruppe sichtbar machen.
Code: 'NEUER TEIL Dim sModelName As String Set swModel = swView.ReferencedDocument If Not swModel Is Nothing Then swModel.Visible = True bRet = swModel.ResolveAllLightWeightComponents(False) Debug.Print ("All lightweight components resolved (0 = All components resolved)? " & bRet) swModel.Visible = False End If 'Starte Unterprogramm
------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hermann75 Mitglied Konstrukteur
Beiträge: 124 Registriert: 04.05.2016 MS Windows 11 Pro; Intel Core i9-12900HX, 2.3GHz; 64GB Ram; 64bit; NVIDIA RTX A3000 SW 2021 SP5.1 Professional SW-PDM 2021 Professional HiCAD next 2008 Helios next 2008
|
erstellt am: 09. Sep. 2020 07:09 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank. Besonders für den Hinweis auf die Remarks, inkl. Anwendung dessen. Mein Makro läuft jetzt schon in den meisten Fällen (ausser wenn die Baugruppe noch nicht geladen ist). Aber das finde ich bei Gelegenheit auch raus, wie ich das abfragen kann und wie ich dann die Baugruppe (im Hintergrund?) öffnen kann. Also nochmals vielen Dank. Nun ruft wieder das Tagesgeschäft. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 09. Sep. 2020 13:28 <-- editieren / zitieren --> Unities abgeben: Nur für Hermann75
Hallo Hermann, evtl. hilft dir ja das Beispiel "Open Document Silently Example (VBA)" um die Baugruppe im Hintergrund zu öffnen. 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 |
Hermann75 Mitglied Konstrukteur
Beiträge: 124 Registriert: 04.05.2016 MS Windows 11 Pro; Intel Core i9-12900HX, 2.3GHz; 64GB Ram; 64bit; NVIDIA RTX A3000 SW 2021 SP5.1 Professional SW-PDM 2021 Professional HiCAD next 2008 Helios next 2008
|
erstellt am: 10. Sep. 2020 10:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd Danke für deine Hilfe. Löst mein Problem zwar nicht wirklich, weil die Baugruppe irgendwie doch schon geladen ist (nWarnings 130), und doch irgendwie nicht so, dass er beim Befehl swModel.visible = true nicht hängen bleiben würde. Das Makro bleibt nur nicht hängen, wenn ich die Baugruppe zuvor von Hand geöffnet habe. Ich hab jetzt mein Makro nun dahin abgeändert, dass es abbricht, wenn "If swView.IsLightweight = True". So ist der Anwender gezwungen, die Baugruppe vollständig zu laden. Damit schliesse ich diesen Tread. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |