| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| myCAD 2024 Visiativ-Kundentag in Rosenheim, Veranstaltung am 29.10.2024 |
Autor
|
Thema: Neues Makro: Masse und Oberfläche in gefälligen Einheiten (10320 mal gelesen)
|
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 07. Mrz. 2005 11:11 <-- editieren / zitieren --> Unities abgeben:
Es ist soweit: mein erstes Makro ist IMHO so weit, das ich es veröffentlichen kann. Na ja, der ursprüngliche Code ist von Stefan Berlitz, aber ich habe noch einiges drangestrickt. Was das Makro macht: Es wurde schon wiederholt diskutiert, dass SWX die Angaben für die gesamte Oberfläche und die Masse eines Teils nicht unbedingt in anschaulichen Einheiten anzeigt. Dieses Makro liest die Masse und Oberfläche eines Teils aus, rechnet sie in gefällige Einheiten um und trägt diesen Wert als benutzerdefinierte Eigenschaft ein. Im einzelnen: Ist die Masse größer als 1000 kg, wird der Wert in Tonnen angezeigt. Ist er kleiner als 1 kg, wird die Masse in Gramm angezeigt, bei einer Masse kleiner 1 Gramm erfolgt die Anzeige in Milligramm. Die Oberfläche wird entsprechend in m², dm², cm² oder mm² angezeigt. Auf Angström und Hektar hab ich verzichtet. ;o) Damit lässt sich auf einer Zeichnung leicht ein Bezugshinweis setzen, der einen dieser Werte wiedergibt. Das Makro funktioniert nur bei Einzelteilen, bei Baugruppen oder Zeichnungen erfolgt kein Eintrag. Ich schicke das Ding auch noch an die Makro-Tauschbörse und hoffe, das jemand es gebrauchen kann und sich hierüber freut. Piet
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Teddibaer Ehrenmitglied V.I.P. h.c. Struktur-Experte
Beiträge: 2125 Registriert: 09.02.2004
|
erstellt am: 07. Mrz. 2005 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
Für die Mühe gibt's gleich mal 10Unities. Trotzdem mal die Frage gestellt (wer immer hier auch mitliest): Bekommen wir das hin, dass zu automatisieren? d.h. wenn's vergessen wird (Makro ausführen), soll der Wert trotzdem irgendwie aktualisiert werden?!?! ------------------ Gruß, der Teddibaer Besucht mich doch mal ... ---------------- Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob WINDOWS installiert ist. Sehen sie einfach nach, ob die Aufschrift auf der Reset Taste noch lesbar ist. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 07. Mrz. 2005 11:59 <-- editieren / zitieren --> Unities abgeben:
Ja, das wäre natürlich sehr edel. Ich bin aber gerade mal vom programmiertechnischen Eunuchen zum Praktikanten aufgestiegen und habe dazu noch nicht mal eine Idee, wie man das verwirklichen könnte. Ich glaube nicht, dass man in den benutzerdefinierten Eigenschaften eine if-then Abfragen direkt unterbringen kann. Ebenso wenig in Gleichungen oder Bezugshinweisen, denke ich. Für Ideen und Anregungen bin ich gerne offen, es darf sich natürlich auch jeder an Verbesserungen meines Makros austoben. Piet Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Müller Mitglied Masch. Ing. HTL / Betriebsing. STV
Beiträge: 1151 Registriert: 11.04.2001
|
erstellt am: 07. Mrz. 2005 14:31 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
|
Jan Mitglied Dipl.-Ing.
Beiträge: 1270 Registriert: 23.12.2000 Dienstl. Lenovo 64GB, nVidia, Win10, SW 2019, 2021 u. 2022 Priv. Dell M7740 16GB, nVidia , Win10, SW 2012, SW 2021 und SW 2022 Prem.
|
erstellt am: 08. Mrz. 2005 06:47 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
Moin! @Teddibär Es gibt die Möglichkeit Macro-Feature zu erzeugen! Findet man in der API Hilfe. Unter den Whats New in 2003 gibt es dazu Beispiel! Vielleicht kann man da ja was draus machen! Jan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas5 Mitglied Konstrukteur, SWX-Admin
Beiträge: 420 Registriert: 14.07.2003 SWX2013
|
erstellt am: 08. Mrz. 2005 11:31 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
Hallo Jan, die Methode MassProp = ModelDoc.GetMassProperties2(status) liefert für status immer nur "unbekannter Fehler". Wäre halt zu einfach, wenn´s auf Anhieb funktionieren würde. Vielleicht hat noch jemand eine Idee, die Sache in Schwung zu bringen. Viele Grüße Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jan Mitglied Dipl.-Ing.
Beiträge: 1270 Registriert: 23.12.2000 Dienstl. Lenovo 64GB, nVidia, Win10, SW 2019, 2021 u. 2022 Priv. Dell M7740 16GB, nVidia , Win10, SW 2012, SW 2021 und SW 2022 Prem.
|
erstellt am: 08. Mrz. 2005 15:14 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
Habe das hier gefunden! Ist ein Macrofeature und liest das Volumen in Fuß aus. Wenn man es startet, dann erscheint das Macro-Feature im Featurebaum und es wird ein Eintrag in die Eigenschaften geschrieben. Vieleicht hilft es dir wieter. Jan [Diese Nachricht wurde von Jan am 08. Mrz. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas5 Mitglied Konstrukteur, SWX-Admin
Beiträge: 420 Registriert: 14.07.2003 SWX2013
|
erstellt am: 08. Mrz. 2005 17:47 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
|
Jan Mitglied Dipl.-Ing.
Beiträge: 1270 Registriert: 23.12.2000 Dienstl. Lenovo 64GB, nVidia, Win10, SW 2019, 2021 u. 2022 Priv. Dell M7740 16GB, nVidia , Win10, SW 2012, SW 2021 und SW 2022 Prem.
|
erstellt am: 14. Mrz. 2005 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
Moin Thomas, habe noch eine Anregung! Gibt es die Möglichkeit, dass sich das FeatureMacro nach einem z.B. Strg+Q immer an das Ende des Featurebaum stellt? Das Macro liest sonst nur die Volumina und Oberflächen die oberhalb des Macros stehen! Man kann es sicherlich im Featurebaum an das Ende schieben, aber ob da jeder drann denkt?!? Jan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas5 Mitglied Konstrukteur, SWX-Admin
Beiträge: 420 Registriert: 14.07.2003 SWX2013
|
erstellt am: 14. Mrz. 2005 16:47 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
|
u.clemens Mitglied Konstrukteur
Beiträge: 964 Registriert: 04.07.2000 engineer's law o cheap o fast o good check only two !
|
erstellt am: 15. Mrz. 2005 12:13 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
Zitat: Original erstellt von Thomas5: Hallo Jan, soweit ich das rausbekommen habe, geht das nicht.
Das geht schon! Die Funktion FeatureMgr.INsertMacroFeature hat einen Parameter namens options. Dieser Parameter kann 2 Werte annehmen: - swMacroFeatureByDefault - swMacroFeatureAlwaysAtEnd Du solltest also den zweiten nehmen, wenn das "fette M" immer am Ende stehen sollte ... ------------------ mfg uc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas5 Mitglied Konstrukteur, SWX-Admin
Beiträge: 420 Registriert: 14.07.2003 SWX2013
|
erstellt am: 15. Mrz. 2005 13:35 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
Hallo uc, vielen Dank! Es geht doch. Prima, klasse... Also für alle, die das noch korrigieren wollen... So muß die Zeile aussehen: swModel.FeatureManager.InsertMacroFeature "Masseinheiten", "", (methods), (paramNames), (paramTypes), (paramValues), Nothing, 1 Also den letzten Parameter von "0" in "1" ändern. Viele Grüße Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 29. Sep. 2005 17:19 <-- editieren / zitieren --> Unities abgeben:
Nach längerer Zeit hab ich mich jetzt endlich daran gesetzt, das Makro-Feature bei mir einzuführen. Die Variante von Thomas funktioniert bei mir nicht richtig, ich kriege immer falsche Werte für die Masse eingetragen. Also versuche ich es neu. Mein ursprüngliches Makro (siehe oben) funktioniert immer noch tadellos, wenn ich auch nicht recht verstehe warum. Der Code MassProp = ModelDoc.GetMassProperties2(status) hat m.E. eigentlich eine falsche Syntax, haut da aber hin. Wenn ich denselben Code in das Makro-Feature eintrage, funktioniert es nicht. Hmm. Dann versuche ich es so: MassProp = swDocExt.GetMassProperties(0, status) , aber hierbei bekomme ich immer den status=1, d.h. swMassPropertiesStatus zeigt "Unknown error". Nach einigem Suchen versuche ich es mit der Luxusversion: GetBodies und AddBodies, damit würden auch Multibody-Parts richtig verarbeitet. Beim Durchlauf bleibt das Makro hängen mit "Automatisierungsfehler: Das aufgerufene Objekt wurde von den Clients getrennt". Die Zeile, in der das passiert, habe ich unten markiert. Ich bin mir nicht sicher, ob die Objekte richtig aufgerufen werden, "Extension" zum Beispiel. Hat jemand eine Idee? Es darf natürlich jeder nach Herzenslust selber probieren und programmieren. Piet Anmerkung: Aus Platzgründen den alten Code hier gelöscht. Piet, 18.10.05 [Diese Nachricht wurde von Piet am 18. Okt. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rhrumpel Mitglied Konstrukteur
Beiträge: 652 Registriert: 21.03.2004 Firma: SWX 2017 Premium SP3.0 (Primär) SWX 2021 Premium SP3.0 SWX 2022 SP3.1 Lenovo P70 32 GB RAM i7-6820HQ 2,7Ghz Quadro M4000M WIN10 PRO 64bit 3d Connexion SpacePilot
|
erstellt am: 30. Sep. 2005 08:22 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
Guten morgen zusammen, habe das Makro gerade mal ausprobiert, funktioniert soweit auch ganz gut. Jedoch rechnet das von Thomas falsch. Wenn ich einen Würfel mit 1 dm³ zeichne (100x100x100mm) rechnet Solidworks mit einem Stahl aus meiner Mat-Datenbank 7800 gr. aus. Das Makro von Thomas trägt Oberfläche 6,0 dm² und Masse 1,0 g ein !? Das Original von Piet rechnet richtig: Oberfläche 6,0 dm² und Masse 7,8 kg. Gruß Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 19. Okt. 2005 09:35 <-- editieren / zitieren --> Unities abgeben:
Jetzt ist es (anscheinend) endlich so weit: Das MakroFeature funktioniert und rechnet richtig. Aus wirklich rätselhaften Gründen ist es sauschwer, die Masseneigenschaften korrekt in die swmRebuild Funktion zu bekommen, da hab ich mir lange die Zähne dran ausgebissen. Um ehrlich zu sein, verstehe ich nicht genau, warum das jetzt funktioniert, aber ich hab keinen Fehler mehr gefunden. Hier nochmal die Funktion: Dies Makro fügt in Teilen ein Makrofeature an das Ende des Featurebaums an. Bei jedem Rechendurchlauf werden Gesamtoberfläche, Volumen und Gewicht ausgelesen und in anschaulichen Eigenschaften ausgegeben (z.B. Gewicht in kg). Diese Werte werden als benutzerdefinierte Eigenschaften in das Teil eingetragen, so dass man in einem Zeichnungsrahmen leicht einen Verweis darauf machen kann. Wenn das Makro einmal eingefügt ist, braucht man nichts mehr machen, die Werte werden bei jedem Durchlauf aktualisiert. Piet Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 19. Okt. 2005 10:47 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
Hallo Piet! Super Ding, Dein Makro!! Doch, woher nimmt Dein Makro das spez. Gewicht? Wir habe eine eigene Matrerial Datenbank (eifach eine neue definiert) und dort haben wir "unsere" Daten drin. Doch Dein Makro stimmt nicht mit den SolidWorks Eigenschaften Masse überein...?!?! EDIT: Egal welches Material ich wähle (SWX Standard, unsere db), das Teil bleibt immer gleich schwer... [Diese Nachricht wurde von G. Dawg am 19. Okt. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 19. Okt. 2005 13:18 <-- editieren / zitieren --> Unities abgeben:
Wir nutzen die Materialdatenbank nicht, von daher bin ich nicht auf dieses Problem gestoßen. Ich kann den Fehler nachvollziehen. Solange keine Materialdatenbank ausgewählt ist, und die Dichte über die Materialeigenschaften gesetzt wird, funktioniert alles. Wenn man die Dichte ändert, wird die Masse allerdings erst nach einem Ctrl-Q aktualisiert, nicht nach einem Ampeldurchlauf. Anscheinend benutzt SWx bei Verwendung der Materialdatenbank eine andere Variable für Dichte als vorher. In meinem Makro passiert es hier: Dim swApp As SldWorks.SldWorks Dim ModelDoc As SldWorks.ModelDoc2 Dim swDocExt As SldWorks.ModelDocExtension Dim swMass As SldWorks.MassProperty ... Set swApp = CreateObject("SldWorks.Application") Set ModelDoc = swApp.ActiveDoc ... Set swDocExt = ModelDoc.Extension Set swMass = swDocExt.CreateMassProperty masse = swMass.Mass Zitat aus der Onlinehilfe über CreateMassProperty: The MassProperty object obtains mass property information about one or more solid bodies in the document from which the MassProperty object is obtained. Man sollte meinen, dass damit die Masseneigenschaften zu kriegen sind, aber das gilt wohl für die Materialdatenbank nicht, verstehe das, wer wolle. An dieser Stelle passe ich. Ich hab erbärmlich viel Zeit reingesteckt, damit das Ding soweit läuft, und da wir die Materialdatenbank nicht nutzen, lass ich es dabei. Wenn sich damit noch jemand auseinandersetzen will, gerne. Zum Zugriff auf die Materialdatenbank per API ist dieser alte Beitrag von mir eventuell hilfreich: http://ww3.cad.de/foren/ubb/Forum2/HTML/008295.shtml Piet Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 19. Okt. 2005 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
Ok! Ich habe in zusammenarbeit mit unserem Makro-Spezialisten herausgefunden woran es liegt: Solidworks! Nachdem das Material geändert wurde, das Teil speicher, dann das Teil NEU LADEN und CTRL+Q (STRG+Q für alle die, die keine schweizer Tastatur haben ) drücken ... die Masse wird aktualisiert! Vielen Dank nochmals für Dein Makro!!! ------------------ you can't change the world but you can leave a dent ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 19. Okt. 2005 14:28 <-- editieren / zitieren --> Unities abgeben:
Na super! Ich häng das Makro noch mal an, nachdem ich noch ein paar überflüssige Zeilen rausgeschmissen hab, um Verwirrung zu vermeiden. Den Volumenwert hab ich auskommentiert, wer das braucht, kann es leicht wieder aktivieren. An die Makro-Tauschbörse schick ich es auch noch. Piet Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 25. Jan. 2006 17:15 <-- editieren / zitieren --> Unities abgeben:
|
Jan Mitglied Dipl.-Ing.
Beiträge: 1270 Registriert: 23.12.2000 Dienstl. Lenovo 64GB, nVidia, Win10, SW 2019, 2021 u. 2022 Priv. Dell M7740 16GB, nVidia , Win10, SW 2012, SW 2021 und SW 2022 Prem.
|
erstellt am: 26. Jan. 2006 07:42 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
|
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 26. Jan. 2006 10:44 <-- editieren / zitieren --> Unities abgeben:
Hallo Jan, da haben wir wieder mal das alte Problem: Ich hab das Makro in Early Binding geschrieben, d.h. das Makro enthält diverse Verweise auf SWX-Libraries, in diesem Fall auf Version 2006. Mit 2004 wird es daher nicht laufen. Wieso es bei 2006 nicht läuft, ist mir nicht klar. Bei uns läuft SP 3.0, habt ihr eine frühere? Ich hab eben auf die Schnelle eine Version in Late Binding versucht, bei der diese Verweise nicht enthalten sind, aber die hat dann auf die Schnelle auch nicht funktioniert. Weiß nicht, ob ich das hinkrieg. Piet Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Projektleiter Engineering (m/w/d) | Technologischer Fortschritt gelingt nur, wenn Visionen zur Realität werden. Dazu bringen wir bei FERCHAU als eine der führenden europäischen Plattformen für Technologie-Dienstleistungen die smartesten und innovativsten Köpfe mit Unternehmen verschiedenster Branchen zusammen. Wir suchen dich: als ambitionierte:n Projekleiter:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir ... | Anzeige ansehen | Projektmanagement |
|
CASIOfx-991ES Mitglied Techniker
Beiträge: 1 Registriert: 19.12.2013
|
erstellt am: 19. Dez. 2013 11:56 <-- editieren / zitieren --> Unities abgeben: Nur für Piet
Hallo, erstmal möchte ich mich für dieses super Makro, bei allen Mitwirkenden bedanken, echt super! Ich habe aber noch eine Frage: Gibt es die Möglichkeit dieses Makro vielleicht auch auf eine Baugruppe anzuwenden? Also ich meine damit, dass ich diese Funktion gerne nutzen würde, um in einer Baugruppenzeichnung das Gewicht in einer sinnigen Einheit im Schriftfeld anzugeben. Ich bin für jede Anregung/Idee dankbar. MFG CASIOfx-991ES ------------------ nää ne!!??!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |