| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| | |
 | DCAM integriert in SOLIDWORKS., ein Webinar am 17.03.2026
|
|
Autor
|
Thema: Skizzenmaße per Makro auslesen und ändern (7375 mal gelesen)
|
ceronics Mitglied

 Beiträge: 31 Registriert: 12.12.2008 SolidWorks Premium 2011 (SP2.0)
|
erstellt am: 24. Aug. 2011 15:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, gibt es bei SoWo bzw. VBA eine Funktion um alle Maße einer Skizze zu bekommen, sodass man sie ändern kann? Also direkt per Schleife und das dann für jedes vorhandene Modellierungsfeature. Wenn ich ein Quader erstellt habe möchte ich dann für alle Seiten plus die Tiefe z.B. 0.1mm addieren. Wenn er noch eine Austragung hat, dort jeden Wert um 0.1 verringern usw. Ist was ein größeres Vorhaben, aber ich wüsste jetzt nicht mal wie ich die Werte auslesen kann. Weiß da jemand mehr? Danke schon mal für die Hilfe! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Olaf Wolfram Ehrenmitglied V.I.P. h.c. CAD-Mutti und Konstrukteur CSWP CSWI

 Beiträge: 2431 Registriert: 30.06.2008 I7-3770 CPU 3,40 Ghz 32 Gb RAM 64 bit WIN 10 SWX 2019 SP5 NVIDIA Quadro K2000<P> Lenovo ThinkStation
|
erstellt am: 24. Aug. 2011 16:26 <-- editieren / zitieren --> Unities abgeben:          Nur für ceronics
Die Maße in einer Skizze werden dazu nicht reichen... deswegen: Wenn dein Quader fertig ist, dann geh mal auf Einfügen -->Tabelle-->Tabelle und wähle automatisch auf der linken Seite. Dann erhältst du eine Exceltabelle mit allen Skizzenparametern, die du vorher in dem aufpoppenden Fenster markieren musst-->markiert hast. in der nächsten Zeile ganz links in der Spalte gibst du dann einen Namen ein(der Name der neuen Konfiguration). und in den wieteren Spalten nach rechts trägst du die entsprechenden geänderten Parameter ein. Wenn das immer 0,1 ist, dann kannst das mit den typischen Excelkopierfunktionen relativ zügig erstellen. Dann neben die Tabelle im Grafikbereich klicken-->die Tabelle schließt sich, danach kommt eine Meldung, dass eine neue Konfiguration erstellt wurde unter dem Namen, den du ganz links in die Tabelle eingetragen hast. That's it. Wenn ich dich richtig verstanden habe, würde ich das so machen... ------------------ CSWST/CSWI/CSWP/ 3DVia
DPS-Niederlassung Apolda...strebe niemals nach den Dingen, die auch dümmeren gelingen..... [Diese Nachricht wurde von Olaf Wolfram am 24. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ceronics Mitglied

 Beiträge: 31 Registriert: 12.12.2008 SolidWorks Premium 2011 (SP2.0)
|
erstellt am: 25. Aug. 2011 10:26 <-- editieren / zitieren --> Unities abgeben:         
Danke für die Antwort! An sich lässt sich damit (zumindest manuell) schon mal viel erreichen. Etwas blöd ist natürlich dass ich dann bei der Meldung einfach zig Maße (D?@SkizzeXY) bekomme wo ich nicht weiss wo sie hingehören (Aufsatz, Schnitt, Bohrung,...). Der Sinn des Ganzen ist, um es mal deutlicher zu machen, eine Schleife die jedes Maße vergrößert/verkleinert. Das Soll mir nachher ein Modell hinterlassen mit den obersten/unteresten Grenzmaße. Vielleicht stell ich mir das auch etwas zu einfach vor. Aber an sich dachte ich, es müsste reichen die Maße auszulesen mit der angegebenen positiven/negativen Toleranz zu addieren oder eine vorher definierte Standardtoleranz zu benutzen und das Modell dadurch zu skalieren. Also eine Art einfache Toleranzanalyse. Klar geht das nachher nicht bei beliebig komplexen Teilen, aber für einfache würde es mir schon reichen. Das Vorgehen wäre grob folgendermaßen: Code: Lese Typ des Features Wenn "Linear aufgetragener Aufsatz" dann Lese alle Maße aus (in ein Array o.ä.) Gehe das Array einzeln durch und erhöhe den Wert um die angegebene/Standard-Toleranz Wenn "Linear ausgetragener Schnitt" dann Lese alle Maße aus (in ein Array o.ä.) Gehe das Array einzeln durch und verringere den Wert um die angegebene/Standard-Toleranz ... ... Gehe zum nächsten Feature
Vielleicht ist es nun etwas klarer was ich vorhabe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Olaf Wolfram Ehrenmitglied V.I.P. h.c. CAD-Mutti und Konstrukteur CSWP CSWI

 Beiträge: 2431 Registriert: 30.06.2008 I7-3770 CPU 3,40 Ghz 32 Gb RAM 64 bit WIN 10 SWX 2019 SP5 NVIDIA Quadro K2000<P> Lenovo ThinkStation
|
erstellt am: 25. Aug. 2011 10:52 <-- editieren / zitieren --> Unities abgeben:          Nur für ceronics
Benenne die Maße doch um. Wenn du das Maß selektierst, dann Kannst du es in dem Fenster auf der Linken Seite umbenennen. Von D1@Sketch1 in Höhe. Das Sketch+Nummer schreibt SWX dann wieder selber dahinter! Wenn deine Anforderung ist, per Makro die oberste und unterste Toleranzmaße zu erstellen, dafür gibt es was. Normalerweise ist aber eher die Anforderung, die auf Null modellierten Parts wegen der Fertigung auf Toleranzmitte zu switchen. ------------------ CSWST/CSWI/CSWP/ 3DVia
DPS-Niederlassung Apolda...strebe niemals nach den Dingen, die auch dümmeren gelingen..... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ceronics Mitglied

 Beiträge: 31 Registriert: 12.12.2008 SolidWorks Premium 2011 (SP2.0)
|
erstellt am: 25. Aug. 2011 11:08 <-- editieren / zitieren --> Unities abgeben:         
Hab mich grad auch mal durch die API Hilfe geschlagen und ein Beispiel gefunden. Dort geht es auch um genau das Thema. Dort werden alle Maße auf eine mittlere Toleranz gesetzt. Kennst du noch ein anderes vorhandenes Makro. Würde mir gern die Zeit dafür sparen und dan Rad nicht nochmal erfinden müssen Warum braucht man aber normalerweise die mittlere Toleranz? Ich muss doch wissen ob zwei Teile zu einander Passen, wenn sie die oberste/unterste Toleranz haben. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Olaf Wolfram Ehrenmitglied V.I.P. h.c. CAD-Mutti und Konstrukteur CSWP CSWI

 Beiträge: 2431 Registriert: 30.06.2008 I7-3770 CPU 3,40 Ghz 32 Gb RAM 64 bit WIN 10 SWX 2019 SP5 NVIDIA Quadro K2000<P> Lenovo ThinkStation
|
erstellt am: 25. Aug. 2011 11:23 <-- editieren / zitieren --> Unities abgeben:          Nur für ceronics
Das was du suchst ist (warscheinlich) für eine Toleranzanalyse notwendig. Das was ich meine,ist für die Fertigung notwendig! Der Fertiger versucht , immer in Toleranzmitte zu fertigen. Dadurch enstehen nicht immer gleich Ausschußteile, nur weil sich die Schneidengeometrie durch Abnutzung und Temperaturunterschiede "verändert" im CAD wird "eigentlich immer auf "0" konstruiert, die angetragene Toleranz/Passung ist eher eine Beschriftung und erzwingt keine Modelländerung. Das Makro, was ich meine, macht drei Konfigurationen im Teil Unteres Abmaß Oberes Abmaß Toleranzmitte... Das Makro ist nicht von mir Programmiert, deswegen kann ich es dir nicht senden. Du kannst mir aber ne PN schicken mit deinen Kontaktdaten, dann schicke ich dir die Adresse, von der Firma, die entwickelt hat! ------------------ CSWST/CSWI/CSWP/ 3DVia
DPS-Niederlassung Apolda...strebe niemals nach den Dingen, die auch dümmeren gelingen..... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 25. Aug. 2011 11:29 <-- editieren / zitieren --> Unities abgeben:          Nur für ceronics
Hallo ceronics, Zitat: Original erstellt von ceronics: Der Sinn des Ganzen ist, um es mal deutlicher zu machen, eine Schleife die jedes Maße vergrößert/verkleinert. Das Soll mir nachher ein Modell hinterlassen mit den obersten/unteresten Grenzmaße. Vielleicht stell ich mir das auch etwas zu einfach vor.
Ja, ich glaube, das stellst du dir viel zu einfach vor. Über alle Maße einer Skizze zu traversieren und die alle mit einem festen Wert zu multiplizieren ist sicher nicht so schwierig. Aber einen Algorithmus zu entwickeln, der abhängig von der Geometrie und den Maßen entscheidet, wann es ein Innen- oder Außenmaß ist, ob es in der Kett überhaupt skaliert werden muss usw. ist die Kunst. Deswegen ist Toleranzanalyse auch nicht so ganz trivial - bei einem Würfel mag das noch gehen, bei einer Nut wird das schon schwieriger, je nachdem, wie du deine Parameter setzt und die Konstruktionsabsicht ist. Als Basis kannst du doch das Beispiel aus der API Hilfe (Set Dimensions to Mid-Tolerance Example (VBA) ) nehmen, das klappert im Modell ja alle Parameter ab und macht was damit; du musst praktisch "nur" in der Routine ProcessDimension deine Logik unterbringen  Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ceronics Mitglied

 Beiträge: 31 Registriert: 12.12.2008 SolidWorks Premium 2011 (SP2.0)
|
erstellt am: 29. Aug. 2011 13:47 <-- editieren / zitieren --> Unities abgeben:         
Ja da hast du natürlich Recht mit dem Algorithmus. Villeicht sollte ich das Makro einfach mehr durch den Benutzer steuern lassen. Dass man einfach ein Feature anklickt und im Makro dann vorgibt ob + oder -. Hauptsache man muss das nicht alles selbst eintippen. gerade die Standardtoleranzen. Das Beispiel aus der API Hilfe ist auch dafür gut geeignet. Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
    
 Beiträge: 1764 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: 30. Aug. 2011 07:25 <-- editieren / zitieren --> Unities abgeben:          Nur für ceronics
Hallo dafür hätte ich auch gern eine Lösung siehe auch hier leider ist das Ganze wie Stefan schon geschrieben hat nicht so einfach. Wenn Du Dir die 2 Bilder ansiehst die ich bei dem Link oben angehängt habe dann wird es glaub ich verständlich. Die maximale Außenkontur ergibt sich eben leider nicht einfach dadurch, dass alle Maße auf das Größtmaß gesetzt werden. Und auch wenn man ein Makro hat, bei dem man die Maße einzeln wählen kann, bei etwas aufwendigeren Konturen ist es nicht mal so einfach gleich zu erkennen welches Maß die max. Kontur ergibt. Das Makro aus der Online Hilfe hab ich so abgeändert und hier angehängt, dass es möglich ist zu entscheiden ob die Maße auf Toleranzmitte, Größtmaß oder Kleinstmaße gesetzt werden. Aber Achtung, das ergibt eben nicht die max bzw. min Geometrie. PS ich weiß nicht ob das jetzt auch noch so ist, aber das Makro aus der Online Hilfe hat Maße mit Passungen falsch berechnet. ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ceronics Mitglied

 Beiträge: 31 Registriert: 12.12.2008 SolidWorks Premium 2011 (SP2.0)
|
erstellt am: 30. Aug. 2011 10:08 <-- editieren / zitieren --> Unities abgeben:         
Danke für den Link nahe! Hab das mal durchgelesen und denke ich werde mich in eine ganz andere Richtung bewegen - fast so wie geplant  Ich werde mich nun darauf beschränken einzelne Maße zu verändern um an dieser Stelle die Toleranzen zu überprüfen. Das Ganze will ich folgendermaßen machen: Es soll ein Minifenster geben sobald man das Makro startet, in der man eine neue Konfiguration für die Änderung anlegen oder auswählen kann (evtl. lass ich auch das erst mal weg, manuell geht das ja auch schnell). Zusätzlich gibt es einfach 4 Buttons: Plus, Minus, Mitte, ürspr. Wert. Klickt man auf einen der Buttons, kann man nun einfach Maße auswählen, die mit der Standardtoleranz oder angegebenen bemaßt werden. Wenn man das alles bestätigt hat, hat man das Modell an dieser Stelle in dem gewünschten Toleranzbereich. Das ist zwar nocht nicht super automatisch, aber besser als wenn ich jedes einzelne Maß anklicken, schauen in welcher Standarttoleranz es sich befindet und die dann eintragen muss. Mal sehen ob wenigstens das geht. Mit VBA kenn ich mich hauptsächlich in Office aus... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |