Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Hilfe - Wie kann ich Längen-Einheiten ändern?

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
  
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



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

Beiträge: 223
Registriert: 02.11.2000

erstellt am: 25. Okt. 2001 14:43    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

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)



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

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 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 JM 10 Unities + Antwort hilfreich

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 Variant

Sub 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


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

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 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 JM 10 Unities + Antwort hilfreich

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



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

Beiträge: 223
Registriert: 02.11.2000

erstellt am: 25. Okt. 2001 17:29    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

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


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

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 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 JM 10 Unities + Antwort hilfreich

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



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

Beiträge: 223
Registriert: 02.11.2000

erstellt am: 26. Okt. 2001 16: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

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


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

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 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 JM 10 Unities + Antwort hilfreich

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 >>)

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