| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | Innovationstag mit SolidCAM und Plogmann bei HEDELIUS in Meppen |
Autor
|
Thema: API: Hilfe - Wie kann ich Längen-Einheiten ändern? (3940 mal gelesen)
|
JM Mitglied
Beiträge: 223 Registriert: 02.11.2000
|
erstellt am: 25. Okt. 2001 14:43 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe ein ganz akutes Problem. Wir geben bei uns in der Firma das Gewicht von Einzelteilen in kg an. Um dies automatisch tun zu können, möchte ich die Längen-Einheiten bei den "Eigenschaften Masse" per API von mm-Standard in Meter ändern. Aber weder mit - ModelDoc.SetUnits noch mit - ModelDoc.LengthUnit = LengthUnit klappt es. Ich bekomme meistens den Laufzeitfehler 449. Eine Lösung oder wenigstens ein Tip wäre supertoll. Tschüß Jana 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. Okt. 2001 15:18 <-- editieren / zitieren --> Unities abgeben: Nur für JM
Hallo Jana, das Setzen mit ModelDoc.SetUnits stellt die Maßeinheit des Teils um, hat aber keinen Einfluss auf die Umrechnungseinheit im Dialog "Eigenschaft Masse". SolidWorks rechnet intern mit SI-Einheiten, also auch z.B. die Masse direkt in Kilogramm. Lies doch einfach direkt die Masse aus:
Code:
Dim swApp As Object Dim Part As Object Dim MassProp As VariantSub main() Set swApp = CreateObject("SldWorks.Application") Set Part = swApp.ActiveDoc ' und die Masseeigenschaften auslesen MassProp = Part.GetMassProperties() MsgBox "Masse des aktiven Teils in kg: " & MassProp(5) End Sub
Hoffe das hilft dir weiter, Stefan ------------------ --Inoffizielle Solidworks Hilfeseite http://solidworks.cad.de EMail: Stefan.Berlitz@solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 25. Okt. 2001 16:10 <-- editieren / zitieren --> Unities abgeben: Nur für JM
hallo, das Problem hatte ich auch mal. http://www.cad.de/foren/ubb/Forum2/HTML/000403.shtml Die Antwort hat mich allerdings nicht so richtig weiter gebracht. Auslöser war, daß wir die SW2001-neue Funktion: assoziativer Link von Gewicht zu Dateieigenschaft nutzen wollten. Die Funktion ist allerdings (noch - hoffe ich) nicht brauchbar! http://www.cad.de/foren/ubb/Forum2/HTML/000433.shtml Die Einheit des eingelinkten Gewichts wird durch die Einstellungen der Meßoptionen festgelegt. mm -> g , m -> kg Wie bei Euch geben wir Gewichte in kg an, gemessen wird allerdings in mm! Weil die Funktion also nicht so das Gelbe vom Ei ist, war das o.g. Problem auch keins mehr - die gesamte Idee liegt auf Eis. Wenn Du allerdings wirklich nur das Gewicht - mal so zum nachschauen -ermitteln willst, dann gehts wirklich soam einfachsten, wie Stefan beschrieben hat. ------------------ mfg uc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JM Mitglied
Beiträge: 223 Registriert: 02.11.2000
|
erstellt am: 25. Okt. 2001 17:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan, hallo uc, machen wollte ich genau das was Du, uc, beschrieben hast (mit der Funktion in den benutzerdef. Eigenschaften. Genau deswegen wollte ich die Einheiten uf Meter umstellen. Die Lösung von Stefan ist für mich zwar vom Code länger, aber auch genial einfach , in der Nachvollziehbarkeit und man kann die Einheiten lassen wie sie sind, weil: - erst Gewicht auslesen - dann auf 2 Nachkommastellen runden - dann eine benutzerdef. Eigenschaft Masse festlegen - und den gerundeten Wert in einen String umwandeln und in die Eigenschaft schreiben
Code:
' nun das Gewicht auslesen Dim MassProp As Variant MassProp = Model.GetMassProperties() ' das Gewicht hat unendlich viele Stellen hinter dem Komma - die müssen gerundet werden ' (5) ist das Gewicht, muß separiert werden Dim Masse As Variant Dim MasseRound As Variant Masse = MassProp(5) MasseRound = Round(Masse, 2) ' und in die benutzerdefinierten Eigenschaften "Masse" eintragen Model.AddCustomInfo3 "", "Masse", 30, CStr(MasseRound) Model.CustomInfo2("", "Masse") = CStr(MasseRound)
Die Eigenschaft "Masse" wird wie gehabt mit der Zeichnung verlinkt, fertig und zufrieden. Also vielen Dank für die schnelle Antwort! Tschüß Jana [Diese Nachricht wurde von JM am 25. Oktober 2001 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 26. Okt. 2001 10:11 <-- editieren / zitieren --> Unities abgeben: Nur für JM
hallo Jana, naja so machen wir das auch schon seit Jahren, aber ... die so eingeschriebene Masse ist eine "dumme" Zahl, wenn Du danach noch etwas änderst, mußt Du jedesmal dran denken, das Makro zur Aktualisierung der Masse aufzurufen - d.i. eine potentielle Fehlerquelle, die so nicht sein müßte. Der assoziative Link Gewicht - Dateieigenschaft wäre die komfortablere Möglichkeit (dann bräuchte man sich nie mehr um die Aktualität kümmern), wenn die Funktion brauchbar wäre. So wie jetzt ist die Funktion für uns unbrauchbar, die Entwicklung vergebene Mühe - weil nicht zu Ende gedacht / auf halben Wege stehen geblieben. Gibt es denn in der weiten Welt da draußen einen, der einen kennt, der von einem gehört haben soll ... der diese Funktion verwendet ? Würde mich schon mal interessieren, wie und mit welchen Randbedingungen.
------------------ mfg uc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JM Mitglied
Beiträge: 223 Registriert: 02.11.2000
|
erstellt am: 26. Okt. 2001 16:00 <-- editieren / zitieren --> Unities abgeben:
Hallo uc, Du hast natürlich recht, denn mit dieser Methode muß man seine Kollegen dahingehend "erziehen" jedesmal das Macro zu starten, wenn eine Änderung gemacht wurde. Funktioniert garantiert nicht. Um auf ein Gewicht in kg zu kommen, muß man ja "nur" die Einheiten der "Eigenschaften Masse" umstellen. Warum also nicht die Dokumentvorlage ändern? Im leeren Dokument geht das nicht, also irgendein Basisfeature erzeugen, Einheit umstellen, Basisfeature wieder löschen und als Vorlage speichern. OK ist umständlich, aber ... Nun ist noch Aufklärung nötig, warum der User diese Einstellung nicht (oder nur temp.) ändern darf, dann könnte man die Funktion doch nutzen. Ich denke, ich werde es auf diesem Weg probieren. Tschüß Jana Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 26. Okt. 2001 16:42 <-- editieren / zitieren --> Unities abgeben: Nur für JM
nun muß ich auch noch mal meine Senf dazu geben. Zitat:
Um auf ein Gewicht in kg zu kommen, muß man ja "nur" die Einheiten der "Eigenschaften Masse" umstellen. Warum also nicht die Dokumentvorlage ändern? Im leeren Dokument geht das nicht, also irgendein Basisfeature erzeugen, Einheit umstellen, Basisfeature wieder löschen und als Vorlage speichern. OK ist umständlich, aber ...
genauso hat ich's auch schon gemacht, aber ... es gibt eben leider auch noch andere Probleme http://www.cad.de/foren/ubb/Forum2/HTML/000433.shtml Zitat:
Nun ist noch Aufklärung nötig, warum der User diese Einstellung nicht (oder nur temp.) ändern darf, dann könnte man die Funktion doch nutzen.
und wenn er's doch tut, oder vergißt wieder zurückzustellen ... ??? Dann kommt Schrott raus! Wir messen eben nun mal in Millimeter - und in Metern, womöglich noch mit nur 2 Kommastellen, ist auch Quatsch. Die Lösung dafür klingt doch eigentlich ganz einfach: Der assoziative Link zum Gewicht (u.ä.) muß sich unabhängig von den Meßoptionen formatieren lassen! Leider können wir User das nicht, da müssen die Entwickler dran drehen!
------------------ mfg uc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|