| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Ausdruck zu komplex (1274 mal gelesen)
|
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 21. Mrz. 2010 19:04 <-- editieren / zitieren --> Unities abgeben:
Moin! Das verstehe ich nicht. Dieser Ausdruck wird klaglos gerechnet:
Code: dX = Round((oCD.RangeBox.MaxPoint.X - oCD.RangeBox.MinPoint.X) * 10, 3)
Bei dem folgenden deutlich einfacheren Version kommt: "Ausdruck zu komplex":Code: dX = oCD.RangeBox.MaxPoint.X - oCD.RangeBox.MinPoint.X
dX ist deklariert als Double------------------ Roland www.Das-Entwicklungsbuero.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 21. Mrz. 2010 20:40 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
Hallo Roland, da wie Du sagst die Rechnung einfacher ist, würde ich tippen, dass oCD.RangeBox.MaxPoint.X - oCD.RangeBox.MinPoint.X einen Datentyp liefert, der nicht Double ist und die Funktion Round diesen ohne Probleme umwandeln kann, die direkte Übergabe aber "zu komplex" ist. Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 21. Mrz. 2010 20:54 <-- editieren / zitieren --> Unities abgeben:
|
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 22. Mrz. 2010 21:31 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
Hallo Roland, vielleicht ist "Triple" besser, weiß ich aber nicht. Als Lösung würde ich Dir raten zu prüfen was deine Rechnung liefert um dann zu entscheiden ob Du das konvertieren kannst oder ob vielleicht am Ausdruck selbst etwas nicht passt. Führst Du beide Code-Schnipsel mit der gleichen RangeBox aus oder sind es unterschiedliche Boxen? Alternativ könntest Du auch die Round-Funktion im Code belassen. Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 22. Mrz. 2010 22:04 <-- editieren / zitieren --> Unities abgeben:
Moin! Triple gips nich. Lustigerweise geht Code: dZ = oCD.RangeBox.MaxPoint.Z
Erst bei der Differenz gibt es den Mecker.Ich probier da immer an derselben Stelle und habe nach dem negativen Testen der Vereinfachung längst wieder Round eingetragen, damit es läuft. Ist jetzt halt nur doppelt. Anlass das fraglich Round zu entfernen war nämlich, dass ich neuerdings im Nachgang noch ein Mal runde, um bei wachsenden Werten mit und mit die Anzahl der Stellen nach dem Komma zu verringern und irgendwann auch die mm und cm auf Null zu runden, denn es ist ja nur zur Orientierung und, wie sich zeigte, in sich schon nicht all zu präzise. Für das Einregeln der Komamstellen muss zuerst die Größe der Werte bestimmt werden, also diese Differenz, und die wäre als unbearbeiteter Wert gut genug. Ich finde es halt unelegant, zwei Mal zu runden, wenn eigentich ein Mal reicht. Aber es ist jetzt halt so. ------------------ Roland www.Das-Entwicklungsbuero.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 22. Mrz. 2010 22:21 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
Hallo Roland, vielleicht hilft es auch eine Vafriable zu definieren in die Du die RangeBox ausliest und mit diesen Varaiblen rechnest. Dim oMax as Double, oMin as Double oMax = oCD.RangeBox.MaxPoint.X oMin = oCD.RangeBox.MinPoint.X dX = oMax - oMin Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 22. Mrz. 2010 22:53 <-- editieren / zitieren --> Unities abgeben:
|
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 22. Mrz. 2010 23:13 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
|