| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Der größte Rechenreiniger der Welt bei MUHR (SOLIDWORKS, SOLIDWORKS Simulation), ein Anwenderbericht
|
Autor
|
Thema: Jemand da der Makros programmiert? (2955 / mal gelesen)
|
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 07. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben:
|
Baumjäger Mitglied CAD/PDM Administrator
Beiträge: 339 Registriert: 21.06.2006 SW2017 - S5.0 AutoCAD Mechanical 2018 Win10 Intel Xeon E3-1240 V2 3,4GHz 16GB RAM NVIDIA Quadro 4000
|
erstellt am: 07. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
|
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 07. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben:
|
Baumjäger Mitglied CAD/PDM Administrator
Beiträge: 339 Registriert: 21.06.2006 SW2017 - S5.0 AutoCAD Mechanical 2018 Win10 Intel Xeon E3-1240 V2 3,4GHz 16GB RAM NVIDIA Quadro 4000
|
erstellt am: 07. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Also irgendwie verstehe ich deine Vorgehensweise nicht. Das Problem vom angehängten Thread ist gar nicht gelöst. Du machst einen neuen auf und verweist da auf den alten...Aber egal. Ich verstehe nämlich noch ganz andere Sachen nicht: - Der Wert der auf den Bildern ein unterschiedliches Ergebnis hat, um welches Maß handelt es sich überhaupt? Die Dicke des Gesamten Teils? Länge der Fase? - Wie wird dieses Maß überhaupt ermittelt? Über ein Makro (wenn ja, kannst du das nochmal anhängen?, das am Anfang des Thread scheint ja ein anderes zu sein, als dass das du später verwendest), oder ist das jetzt nur eine zum Maß verknüpfte Eigenschaft? - Wieso soll eine Rille die gleichen Werte haben wie eine Fase? Bzw. was hat Bild 3 mit den Bilder 1 und 2 zu tun? Wenn du jetzt sowieso einen neuen Thread hast. fasse doch bitte das Problem nochmal zusammen, dann ist die Chance dass jemand helfen kann weitaus größer. Gruß Andy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 07. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Andy, es ist richtig, mein alter Thread ist leider nicht gelöst. Ich habe jetzt neuen eröffnet um gezielt Programmierer anzusprechen. Du hast es richtig erkannt, ich habe zwei Makros mit derselben Funktion „Teil vermessen und die gesamte L x B x H des Teils ins Eigenschaften zu schreiben) ausprobiert. Makro Nr.1: „SetDimensionProperty“ Dieses Makro rundet die Zahlen auf, somit habe ich keine nach Komma Zahlen (siehe Bild Rohteil). Da wir über 90% vorgefräste Rohlinge bestellen, ist es uns wichtig, dass Makro auch bis auf 0,1 genau ermittelt.
Makro Nr.2: „Box_Props“ Bei diesem Makro habe ich das Problem, dass mit bestimmten Feuture (in dem Fall Fase Bild2 und Rillen Bild3) den Wert aus unerklärlichen Gründen verfälschen. Mach ich statt Fase ein Rotierenden Schnitt (Bild1), habe ich plötzlich richtiges maß.
Ich hoffe, dass ich mich jetzt verständlicher ausgedrückt habe.
Ich danke dir schon mal im Voraus. Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Winni-two Mitglied Ing. Maschb.
Beiträge: 154 Registriert: 12.03.2010 SW 2021 SP5 Intel Xenon W2135 @3.7GHz Win 10 64 bit Graka: Nvidia Quadro P4000 32 GB Ram
|
erstellt am: 07. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
|
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 07. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben:
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 07. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Hallo D.S.K bei dem Macro "SetDimensionProperty" musst du die Zeilen Code: .X = Ceiling(Round(.X * 10000) / 10) .Y = Ceiling(Round(.Y * 10000) / 10) .Z = Ceiling(Round(.Z * 10000) / 10)
im PMPClass Modul oder die Funktion die hinter "Ceiling" steckt anpassen das dein gewünschtes Ergebnis raus kommt. 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 |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 07. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben:
Hallo bk.sc, was ich da schon alles ausprobiert habe Ich bekomme einfach keine Komma rein. Ich habe absolut keine Kenntnisse um Makros zu Schreiben. Gruß [Diese Nachricht wurde von D.S.K. am 07. Feb. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 07. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Hallo, wo soll das Macro den hin Runden, normal runden, immer aufrunden, immer abrunden, weitere Nachkommastellen einfach wegschneiden? Und wieviele Nachkommastellen sollen es am Ende den noch sein? 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 |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 07. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben:
|
Baumjäger Mitglied CAD/PDM Administrator
Beiträge: 339 Registriert: 21.06.2006 SW2017 - S5.0 AutoCAD Mechanical 2018 Win10 Intel Xeon E3-1240 V2 3,4GHz 16GB RAM NVIDIA Quadro 4000
|
erstellt am: 07. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Hallo, ich habe mir die Makros mal angeschaut. Beide Makros verwenden die Funktion getbodyBox bzw. getBox. Diese Funktion nähert sich nur den Außenmaßen an und liefert gar keine exakten Werte wenn ich die Hilfe richtig verstehe. (The values returned are approximate and should not be used for comparison or calculation purposes. ) Im Prinzip ist das kein Fehler dass sie keine Kommastellen liefert sondern so gewollt, liefert dafür auch Ergebnisse wenn du kein rechteckiges Teil hast. (Wenn ich das auf die schnelle richtig verstehe, geht da Makro vom Ursprungspunkt in alle drei Richtungen nach außen, und zwar jeweils ins - und ins + solange bis es nicht mehr im Modell ist. Aus den Werten werden dann die äußeren Eckpunkte berechnet und zurückgegeben. (Ich habe die Funktion nie verwendet, man korrigiere mich wenn das nicht stimmt) Im Makro SetDimensionProperty wird das aus meiner Sicht mit Absicht so verwendet. Die Ceiling(Round) Funktion wird hier gar nicht zum Runden verwendet, sondern um zu prüfen ob das Ergebnis größer als ein bestimmtes Maße ist. Entsprechend wird dann korrekt gerundet. Es ist also gewollt dass aus 100,5 101 wird. Das Rohmaße werden bewusst größer gewählt. (Deshalb hat die Änderung der Werte '.X = Ceiling(Round(.X * 10000) / 10) '.Y = Ceiling(Round(.Y * 10000) / 10) '.Z = Ceiling(Round(.Z * 10000) / 10) auch gar keinen wirklichen Effekt. Die Kommastelle ist da bereits abgeschnitten bzw. war nie da. Im anderen Makro funktioniert das ähnlich, weshalb auch hier wahrscheinlich die Werte ungenau werden und je nach Feature etwas variieren. Ein Makro kann ja eigentlich nie von selbst wissen welches Maß dein längstes, Höchstes bzw. breitestes ist. Um genaue Werte zu bekommen müsstest du also die Maße explizit immer gleich benennen. Dann genau nach diesen Maßen suchen und die Werte aus den Maßen explizit verwenden. [Diese Nachricht wurde von Baumjäger am 07. Feb. 2019 editiert.]
[Diese Nachricht wurde von Baumjäger am 07. Feb. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 08. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Baumjäger, vielen Dank für die Erklärung. Kann man bei "SetDimensionProperty" die Funktion Kommastelle einbauen? Dieses Makro gefällt mir am besten, weil ich selber die Reihenfolge L x B x H oder Ø x L auswählen kann. Danke Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 08. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben:
Eine spontane Idee ist mir durch Kopf geschossen. Man kann doch ein Makro schreiben, die mich auffordert Fläche, Punkte, Kante oder Ebene auszuwählen um diese Maße dann in die Eigenschaften zu schreiben. Platte: 1. Um Länge „L“ zu bestimmen zwei Flächen; Punkte oder Ebene auszuwählen. 2. Um Breite „B“ zu bestimmen zwei Flächen; Punkte oder Ebene auszuwählen. 3. Um Höhe „H“ zu bestimmen zwei Flächen; Punkte oder Ebene auszuwählen. Drehteil: 1. Um Durchmesser „Ø“ zu bestimmen eine Fläche oder Kante auszuwählen. 2. Um Länge „L“ zu bestimmen zwei Flächen; Punkte oder Ebene auszuwählen. Was hält ihr davon? Ist es so realisierbar?
[Diese Nachricht wurde von D.S.K. am 08. Feb. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Baumjäger Mitglied CAD/PDM Administrator
Beiträge: 339 Registriert: 21.06.2006 SW2017 - S5.0 AutoCAD Mechanical 2018 Win10 Intel Xeon E3-1240 V2 3,4GHz 16GB RAM NVIDIA Quadro 4000
|
erstellt am: 08. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Hi, prinzipiell ist das möglich. Du bewegst dich da aber aus meiner Sicht schon in ziemlich komplexen Vorgängen. D.h. wenn du, wie du sagst keine Erfahrungen mit Makros hast, wirst du da einen ziemlich rauchigen Kopf bekommen. (Oder du beauftragst jemanden damit) Falls du wirklich selbst (in angemessener Zeit) zu einem Ergebnis kommen willst, ist es aus meiner am besten du benennst die Maße fest um, und liest genau diese Maße aus. Das umbenennen der Maße könntest du in einem zweiten Makro machen. Das beinhaltet natürlich dass ihr eure Konstruktionen so aufbaut dass die entsprechenden Maße auch vorhanden sind. Hier solltest du aber mittels Makro-Aufzeichnung (für das Maß auswählen) und kleinen Beispielen aus dem Web (Alle Features durchlaufen, Maße auslesen) eine Erfolgschance haben.
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: 08. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Hallo, ich gebe hier auch nochmals meinen Senf dazu. Mit dem Thema habe ich mich vor einiger Zeit etwas beschäftigt und es dann wieder auf Eis gelegt, weil ich keine vernünftige Lösung gefunden habe. Der Ansatz mit den 3 bzw. 2 Maßen die dann die Hauptabmessungen bestimmen, hatte ich auch. Das Problem dabei ist, wenn sich die Geometrie ändert, dann müssen diese Maße angepasst werden. (ich meine damit, wenn an der Außengeometrie Features angefügt werden, oder was weggeschnitten wird) Es ist absehbar, dass drauf vergessen wird und dann ist wieder alles für die Katz. (ich spreche da natürlich nur für mich, ev. haben andere das so im Griff, dass so etwas nicht vergessen wird ) ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3743 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 08. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
|
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 08. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Baumjäger, wenn ich keine fertige Makros dafür bekomme, muss ich mir überlegen wie ich es lösen kann. So wie bis jetzt läuft (Teil XY öffnen, ausmessen und die Masse in die Stückliste schreiben) wird bei einer Baugruppe von 200-300 Bauteilen auf Dauer einiges an Zeit und Kosten in Anspruch nehmen. Wir würden so ein Makro natürlich kaufen. Brauche aber erst paar Ideen (Konzept). Gruß 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: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 08. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
|
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: 08. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Schöne Idee, nur glaube ich nicht, dass das jemand, auf die Schnelle, aus dem Ärmel schüttelt, damit es auch in allen Fällen funktioniert. Aber vielleicht bin ich diese Woche einfach zu pessimistisch PS erinnert mich ein wenig an meinen Wunsch, auf Knopfdruck ein max und min Volumenmodell eines Teils, an Hand der Modell-Bemaßungen und -Toleranzen zu erhalten. Das hört sich auch einfacher an, als es ist. ------------------ Grüße Heinz 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: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 10. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Aus dem Ärmel schütteln glaub ich auch nicht ganz ... aber wenn ich mal Zeit habe und dann noch eine SWX -Version und ... das mit dem vermitteln bzw. max oder min kann - glaub ich - solidCAM. erzeugt dann Konfigurationen. Aber wenn die Skizzenbeziehungen und so das nicht zulassen, wird das auch nichts ...
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: 11. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Hallo Christian, alles auf Toleranzmitte oder Größtmaß/Kleinstmaß ist nicht das Problem. Das Problem ist max/min Volumen, weil dabei bilden nicht immer die Größtmaße das max. Volumen und umgekehrt
------------------ Grüße Heinz 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: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 11. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
|
Winston Wolf Mitglied Braucht der Mensch einen Beruf?
Beiträge: 561 Registriert: 12.08.2003 überlegen macht überlegen
|
erstellt am: 11. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Zitat: Original erstellt von D.S.K.: Wir würden so ein Makro natürlich kaufen.
Mit 2018 ist die Bounding Box schon dabei. Ergo: Wartungsgebühr zahlen... Alternative1: mach aus Deinen Teilen Schweißteile. Dann kannst Du mit dem "Rahmen" auch die Hauptabmessungen abrufen. Alternative2: frag die SolidWorks Entwickler, die haben dass in 2018 implementiert. Sind vielleicht nur ein paar Zeilen code WW ------------------
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 11. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Winston Wolf, Alternative 1 kommt bei 200-300 Bauteilen nicht in Frage. Alternative 2 ist lauf SolidWorks nicht möglich. Ein Makro die Feature "Schweißteil" erstellt, LxBxH ins Eigenschaften schreibt und hinterher Feature "Schweißteil" wieder entfernt. Wird es so funktionieren? [Diese Nachricht wurde von D.S.K. am 11. Feb. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3743 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 11. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 11. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Hallo D.S.K, ersetzte mal Code: .X = Ceiling(Round(.X * 10000) / 10) .Y = Ceiling(Round(.Y * 10000) / 10) .Z = Ceiling(Round(.Z * 10000) / 10)
durch Code: .X = Ceiling(Round(.X * 10000 + 0, 5)) / 10 .Y = Ceiling(Round(.Y * 10000 + 0, 5)) / 10 .Z = Ceiling(Round(.Z * 10000 + 0, 5)) / 10
beachte aber das bei dem Macro die Abmasse immer nur parallel zu den Hauptebenen ermittelt werden, also dass bei Teilen die "wild" im Raum liegen nicht zwangsweise auch die kleinsten Rohlingsmaße ermittelt werden. 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 |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 12. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben:
Hallo bk.sc, Vielen Dank. Mit der Kommastelle hat es funktioniert. Allerdings habe ich dasselbe Problem wie auch bei zweiten Makro, sobald die Rillen oder Fase drin sind, zeigt Makro mir ein anderes Maß an. [Diese Nachricht wurde von D.S.K. am 12. Feb. 2019 editiert.]
[Diese Nachricht wurde von D.S.K. am 12. Feb. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Winston Wolf Mitglied Braucht der Mensch einen Beruf?
Beiträge: 561 Registriert: 12.08.2003 überlegen macht überlegen
|
erstellt am: 12. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Zitat: Original erstellt von D.S.K.: Allerdings habe ich dasselbe Problem wie auch bei zweiten Makro, sobald die Rillen oder Fase drin sind, zeigt Makro mir ein anderes Maß an.
...vielleicht weil es auch ein anderes Teil ist? Immerhin sind die "falschen" Werte die gleichen Werte wie unter "Format" angezeigt (wie auch bei dem "richtigen" Teil). Kannst Du die beiden Dateien mal hochladen. Dann kann man probieren ob das mit 2018 und der Rahmenfunktion auch "falsche" Werte anzeigt. WW ------------------
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 12. Feb. 2019 14:00 <-- editieren / zitieren --> Unities abgeben:
|
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 14. Feb. 2019 14:09 <-- editieren / zitieren --> Unities abgeben:
|
Winston Wolf Mitglied Braucht der Mensch einen Beruf?
Beiträge: 561 Registriert: 12.08.2003 überlegen macht überlegen
|
erstellt am: 14. Feb. 2019 15:05 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
|
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 18. Feb. 2019 10:46 <-- editieren / zitieren --> Unities abgeben:
|
Winston Wolf Mitglied Braucht der Mensch einen Beruf?
Beiträge: 561 Registriert: 12.08.2003 überlegen macht überlegen
|
erstellt am: 18. Feb. 2019 14:36 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Zitat: Original erstellt von D.S.K.: ...aber nicht ins Eigenschaften .
Stimmt, ich hatte das mal für mich angepasst... Jetzt für Dich weiter angepasst Code: 'Ursprung: https://ww3.cad.de/foren/ubb/Forum2/HTML/014451.shtml#000007 'Ersteller: https://ww3.cad.de/cgi-bin/ubb/ubbmisc.cgi?action=getbio&UserName=PaulB&number=2 'Datei: https://ww3.cad.de/foren/ubb/uploads/PaulB/Begrenzungsbox.zipConst MinDouble As Double = -1.79769313486231E+308 Const MaxDouble As Double = 1.79769313486231E+308 Dim X_max As Double Dim X_min As Double Dim Y_max As Double Dim Y_min As Double Dim Z_max As Double Dim Z_min As Double Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swPart As SldWorks.PartDoc Dim vBodies As Variant Dim vBox As Variant Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc If swModel Is Nothing Then MsgBox "Nichts geladen!" Exit Sub End If ' Initialise to large/small values X_max = MinDouble: X_min = MaxDouble Y_max = MinDouble: Y_min = MaxDouble Z_max = MinDouble: Z_min = MaxDouble Select Case swModel.GetType Case swDocPART Set swPart = swModel ' Solid bodies vBodies = swPart.GetBodies2(swSolidBody, True) If Not IsEmpty(vBodies) Then: ProcessBodies vBodies, X_max, X_min, Y_max, Y_min, Z_max, Z_min ' Surface bodies vBodies = swPart.GetBodies2(swSheetBody, True) If Not IsEmpty(vBodies) Then: ProcessBodies vBodies, X_max, X_min, Y_max, Y_min, Z_max, Z_min Case Else Exit Sub End Select vBox = Array(X_min, Y_min, Z_min, X_max, Y_max, Z_max) bool = swModel.DeleteCustomInfo2("", "LxBxH") bool = swModel.AddCustomInfo3("", "LxBxH", 30, (CStr(Round(X_max - X_min, 4) * 1000) & "x" & CStr(Round(Y_max - Y_min, 4) * 1000) & "x" & CStr(Round(Z_max - Z_min, 4) * 1000))) Set swPart = Nothing Set swModel = Nothing Set swApp = Nothing End Sub Function GetMax(Val1 As Double, Val2 As Double, _ Val3 As Double, Val4 As Double) As Double ' Finds maximum of four values GetMax = Val1 If Val2 > GetMax Then GetMax = Val2 End If If Val3 > GetMax Then GetMax = Val3 End If If Val4 > GetMax Then GetMax = Val4 End If End Function Function GetMin(Val1 As Double, Val2 As Double, _ Val3 As Double, Val4 As Double) As Double ' Finds minimum of four values GetMin = Val1 If Val2 < GetMin Then GetMin = Val2 End If If Val3 < GetMin Then GetMin = Val3 End If If Val4 < GetMin Then GetMin = Val4 End If End Function Sub ProcessTessTriangles(vTessTriangles As Variant, _ X_max As Double, X_min As Double, _ Y_max As Double, Y_min As Double, _ Z_max As Double, Z_min As Double) Dim i As Long For i = 0 To UBound(vTessTriangles) / (1 * 9) - 1 X_max = GetMax((vTessTriangles(9 * i + 0)), (vTessTriangles(9 * i + 3)), (vTessTriangles(9 * i + 6)), X_max) X_min = GetMin((vTessTriangles(9 * i + 0)), (vTessTriangles(9 * i + 3)), (vTessTriangles(9 * i + 6)), X_min) Y_max = GetMax((vTessTriangles(9 * i + 1)), (vTessTriangles(9 * i + 4)), (vTessTriangles(9 * i + 7)), Y_max) Y_min = GetMin((vTessTriangles(9 * i + 1)), (vTessTriangles(9 * i + 4)), (vTessTriangles(9 * i + 7)), Y_min) Z_max = GetMax((vTessTriangles(9 * i + 2)), (vTessTriangles(9 * i + 5)), (vTessTriangles(9 * i + 8)), Z_max) Z_min = GetMin((vTessTriangles(9 * i + 2)), (vTessTriangles(9 * i + 5)), (vTessTriangles(9 * i + 8)), Z_min) Next i End Sub Sub ProcessBodies(vBodies As Variant, _ X_max As Double, X_min As Double, _ Y_max As Double, Y_min As Double, _ Z_max As Double, Z_min As Double) Dim swBody As SldWorks.Body2 Dim swFace As SldWorks.Face2 Dim vTessTriangles As Variant Dim i As Long ' Probably empty if no reference surfaces If IsEmpty(vBodies) Then Exit Sub For i = 0 To UBound(vBodies) Set swBody = vBodies(i) Set swFace = swBody.GetFirstFace While Not swFace Is Nothing vTessTriangles = swFace.GetTessTriangles(True) ProcessTessTriangles vTessTriangles, X_max, X_min, Y_max, Y_min, Z_max, Z_min Set swFace = swFace.GetNextFace Wend Next i End Sub Sub ProcessComponent(swApp As SldWorks.SldWorks, _ swModel As SldWorks.ModelDoc2, swComp As SldWorks.Component2, _ nLevel As Long) Dim vChildComp As Variant Dim swChildComp As SldWorks.Component2 Dim swCompConfig As SldWorks.Configuration Dim vBody As Variant Dim i As Long vBody = swComp.GetBodies2(swSolidBody) ' Solid bodies If swComp.Visible And Not IsEmpty(vBody) Then ProcessBodies vBody, X_max, X_min, Y_max, Y_min, Z_max, Z_min End If vChildComp = swComp.GetChildren For i = 0 To UBound(vChildComp) Set swChildComp = vChildComp(i) ProcessComponent swApp, swModel, swChildComp, nLevel + 1 Next i End Sub
WW ------------------
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Winston Wolf Mitglied Braucht der Mensch einen Beruf?
Beiträge: 561 Registriert: 12.08.2003 überlegen macht überlegen
|
erstellt am: 18. Feb. 2019 14:38 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
|
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 20. Feb. 2019 12:59 <-- editieren / zitieren --> Unities abgeben:
|
Winston Wolf Mitglied Braucht der Mensch einen Beruf?
Beiträge: 561 Registriert: 12.08.2003 überlegen macht überlegen
|
erstellt am: 20. Feb. 2019 13:36 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Zitat: Original erstellt von D.S.K.: Makro macht jetzt kein Mucks mehr
Soll ja auch keinen Mucks machen Hab den Text oben in ein neues Makro eingefügt - funktioniert einwandfrei. Der Eintrag in den Dateieigenschaften LxBxH zeigt das was er soll. Was ich im nachhinein vielleicht noch ergänzen würde: Code: Option Explicit Dim bool As Boolean
Ist aber für die Funktion nicht weiter erforderlich... WW ------------------
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 20. Feb. 2019 15:21 <-- editieren / zitieren --> Unities abgeben:
Hallo Winston Wolf, es funktioniert . Vielen Dank. Eine Zwischenfrage: Die anderen Makros haben Ø erkannt und haben Bsp. Ø20x50 ins Eigenschaften geschrieben. Kann man diese Funktion in dieses Makro integrieren? Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |