Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro: Externe Referenzen sperren / entsperren

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
  
Smart Engineering Session: CAD-Automation in SOLIDWORKS in Hannover, eine Veranstaltung am 18.08.2026
Autor Thema:  Makro: Externe Referenzen sperren / entsperren (1850 mal gelesen)
Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 14. Mrz. 2005 17:00    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


ExterneReferenzen.zip

 
Top-Down-Konstruktionen sind eine prima Sache. Nach meiner Erfahrung ist es allerdings sinnvoll, wenn mit dem Zeitpunkt der Fertigungsfreigabe die externen Referenzen der Einzelteile gesperrt werden. Es ist schon mehrmals vorgekommen, dass nach längerer Zeit eine Baugruppe geöffnet wurde, sich in der Zwischenzeit ein Bezugsteil geändert hat, und sich plötzlich viele Teile fehlerhaft und kaum nachvollziehbar ändern, so dass mühsame Nacharbeit nötig wird.
Da ich mich die letzten drei Tage mit so einem Fall herumschlagen musste, hab ich ein Makro geschrieben, welches die externen Referenzen aller nicht unterdrückten Teile in einer Baugruppe sperrt.
Dabei ist unerheblich, ob die Teile unsichtbar, vollständig oder teilweise geladen sind. Nur unterdrückte Teile werden nicht bearbeitet.
Weil es so einfach ist, kann man das Makro auch in einem Teil ausführen, dann werden halt nur die externen Referenzen des betreffenden Teiles unterdrückt. Das spart nicht viel Zeit gegenüber der RMB-im-Featurebaum-Methode, aber falls man sich das Makro auf eine Taste legt, ist es schneller.
Von einer Zeichnung aus lässt es sich nicht ausführen.

Entsprechend hab ich auch ein Makro für die Gegenmaßnahme geschrieben: "Entsperren externer Referenzen"

Bekannter Fehler:
Führt man das "Entsperren"-Makro in einer Zeichnung aus, kommt nach dem gewünschten Hinweis noch eine Warnmeldung, dass ein Makrofehler aufgetreten sei. Keine Ahnung wieso. Vor allem, da derselbe Code auch in dem "Sperren"-Makro steht, und da taucht die Warnung nicht auf.

Verbesserungspotential:
Wenn in einer größeren Baugruppe z.B. eine Schraube -zig mal auftaucht, wird die Datei auch -zig mal von dem Makro bearbeitet, das kostet eigentlich unnötig Zeit.
Wenn jemand eine Idee hat, wie man das vermeiden könnte: gerne.

Ansonsten würde ich mich freuen, wenn dies Makro für jemanden nützlich ist, und wenn sich noch jemand findet, der es testet.

Piet

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

Kalle
Mitglied
Student


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

Beiträge: 706
Registriert: 14.04.2002

erstellt am: 14. Mrz. 2005 17:35    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 Piet 10 Unities + Antwort hilfreich


ExterneReferenzen_V2.zip

 
Aheu Piet,

ich hab Dein Makro getestet und soweit funktioniert es auch. Dein Wunsch alle Teile nur einmal anzufassen hab ich noch schnell integriert 
Ob's die eleganteste Lösung ist weiss ich nicht und wie gro0 der Geschwindigkeitszuwachs ist weiss ich ebenfalls nicht - vielleicht will's ja mal jemand vergleichen). Auf jedenfalls ist's schön dass Du das jetzt geschrieben hast, weil ich nämlich genau dasselbe demnächst für ein größeres Projekt brauche und mir damit ein klein wenig Arbeit gespart habe.

Besten Dank und viel Spass mit der Version 2.

Bis dann,
Kalle

------------------
-----------------------------------------
Es gibt immer mehr Lösungen als Probleme.

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

Kalle
Mitglied
Student


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

Beiträge: 706
Registriert: 14.04.2002

erstellt am: 14. Mrz. 2005 17:46    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 Piet 10 Unities + Antwort hilfreich

Aheu,

hab grade gesehen, das SolidWorks bei den API-Examples genau das gleiche mit dabei hat.
Zu finden hier:  http://files.solidworks.com/API/Examples/00000/0200s/0279/Example.htm

Noch mehr Beispiele, die mir früher schon durchaus weitergeholfen haben gibt's hier:  http://www.solidworks.com/pages/services/CodeExamples.html

Edit: Was mich das Makro von der SolidWorks Seite bevorzugen lässt ist die Tatsache, dass es auch Unterbaugruppen durchgeht. Das leistet das Makro von Piet leider noch nicht. Ließe sich aber auch noch integrieren.

Bis dann,
Kalle

------------------
-----------------------------------------
Es gibt immer mehr Lösungen als Probleme.

[Diese Nachricht wurde von Kalle am 14. Mrz. 2005 editiert.]

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

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 15. Mrz. 2005 09:31    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

Seufz. Wenn ich schon mal meine, eine gute Idee zu haben...

Vielen Dank für den Input, Kalle.

Das Beispielmakro von SWXSolidWorks krieg ich auf meiner Version noch nicht zum Laufen, da werd ich noch mal ein bißchen probieren.

Piet

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 15. Mrz. 2005 10:48    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 Piet 10 Unities + Antwort hilfreich

Hallo Piet,
ich habe das Makro zwar weder heruntergeladen noch ausprobiert, da ich an dieser Funktion (noch) keinen Bedarf habe.
Aber ich will trotzdem meinen Senf loswerden und dir zu deinen 2 Punkten Tipps zur Problemlösung geben (so wie ich es aus dem Stegreif machen würde):

Zitat:
...Führt man das "Entsperren"-Makro in einer Zeichnung aus, kommt nach dem gewünschten Hinweis noch eine Warnmeldung, dass ein Makrofehler aufgetreten sei...

Das verhinderst du, indem du einfach abfragst, ob es sich bei dem Teil um eine Zeichnung handelt oder nicht:
Code:
...
    Set Part = Nothing
    Set Part = swApp.ActiveDoc
   
    If (Part Is Nothing) Then
    'Keine Zeichnung geöffnet!
        MsgBox "Kein Modell geöffnet!", vbCritical
        End
    End If
   
    If (Part.GetType = swDocDrawing) Then
    'Dok ist eine Zeichnung!
        MsgBox "Kein Modell geöffnet!", vbCritical
        End
    End If
...

Zitat:
...Wenn in einer größeren Baugruppe z.B. eine Schraube -zig mal auftaucht, wird die Datei auch -zig mal von dem Makro bearbeitet, das kostet eigentlich unnötig Zeit...

Da würde ich jetzt spontan jedes bearbeitete Teil in einer Liste speichern (z.b. einer Listbox) und dann eben bei jedem weiteren Teil immer erst prüfen, ob es bereits in der Liste existiert.
Oder so...

Ciao

------------------
Klaus

Danke für deinen Besuch in meinem Gästebuch!
www.al-ko.de
privat...
ForumsChat: Schau doch mal hier rein, wenn du Zeit hast...

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

Kalle
Mitglied
Student


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

Beiträge: 706
Registriert: 14.04.2002

erstellt am: 15. Mrz. 2005 11:00    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 Piet 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von KMassler:

[QUOTE][b]...Wenn in einer größeren Baugruppe z.B. eine Schraube -zig mal auftaucht, wird die Datei auch -zig mal von dem Makro bearbeitet, das kostet eigentlich unnötig Zeit...


Da würde ich jetzt spontan jedes bearbeitete Teil in einer Liste speichern (z.b. einer Listbox) und dann eben bei jedem weiteren Teil immer erst prüfen, ob es bereits in der Liste existiert.
Oder so...
[/B][/QUOTE]

So ist es bei mir gelöst, allerdings ohne ListBox, da dafür ein Formular benötigt wird. Einfach ein Array von Strings, dessen Größe mit ReDim Preserve bei jedem Teil was dazukommt um eins erhöht wird um Platz für's nächste Teil zu schaffen.

Bis dann,
Kalle

------------------
-----------------------------------------
Es gibt immer mehr Lösungen als Probleme.

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