Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  In Baugruppenzeichnung Baugruppe ganz laden (mittels API)

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
  
SolidCAM Professor Videos | Tipps & Tricks (SolidCAM)
Autor Thema:  In Baugruppenzeichnung Baugruppe ganz laden (mittels API) (1509 mal gelesen)
Hermann75
Mitglied
Konstrukteur


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

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 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

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


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

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 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 Hermann75 10 Unities + Antwort hilfreich

Du suchst nach dem ReferencedDocument Property (IView)

Hier ein Beispiel dazu:
Get Document Referenced by Drawing View Example (VBA)

------------------
21 ist nur die halbe Antwort.

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

Hermann75
Mitglied
Konstrukteur


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

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 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

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


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

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 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 Hermann75 10 Unities + Antwort hilfreich

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


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

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 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

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



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 09. Sep. 2020 13:28    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 Hermann75 10 Unities + Antwort hilfreich

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


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

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 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

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

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