| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: große zahlen -> andere ergebnisse (1581 mal gelesen)
|
GottesGeschenk Mitglied Bauingenieur
Beiträge: 229 Registriert: 23.02.2007 winxp pro sp3 / intel p4 3GHz / 2,5GB RAM / CAD 2011
|
erstellt am: 15. Nov. 2011 15:36 <-- editieren / zitieren --> Unities abgeben:
hallo zusammen ich lasse mein lisp laufen und bekomme unterschiedliche ergebnisse je nach dem wo sich meine objekte befinden. wenn sich z.B. xy koordinaten der objekte im bereich von über 2.000.000 befinden rechnet acad falsch? es passiert sogar, dass lisp einen fehler meldet (irgendwas ist nil statt einem zu errechnenden schnittpunkt). ist euch dieses problem bekannt? wie würde eine lösung aussehen. vielen dank schon mal an eure wie immer prima antworten und hilfen. gruß theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 15. Nov. 2011 15:41 <-- editieren / zitieren --> Unities abgeben: Nur für GottesGeschenk
Ja, liegt in der Natur der Sache und ist auf den Punkt gebracht mit dem Stichwort: 'Rundungsfehler' abgetan. (Google/suche im Forum danach) EDIT: Die Lösung ist: Mit anderen Koordinaten, näher dem Nullpunkt zu rechnen. ------------------ CAD.de System-Angaben - User:FAQ(Acad) [Diese Nachricht wurde von cadffm am 15. Nov. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GottesGeschenk Mitglied Bauingenieur
Beiträge: 229 Registriert: 23.02.2007 winxp pro sp3 / intel p4 3GHz / 2,5GB RAM / CAD 2011
|
erstellt am: 15. Nov. 2011 15:52 <-- editieren / zitieren --> Unities abgeben:
danke für deine antwort. ich dachte mit rundungsfehler meint man immer die stellen nach dem komma. anscheinend nicht. wenn ich mir ein bks erstelle denke ich mal nicht, dass das problem behoben sein sollte oder? intern arbeitet doch acad immer im wks. wie meinst du das genau mit dem arbeiten näher am ursprung. soll ich meine zu berechnenden koordinaten verschieben, programm laufen lassen, und wieder zurückschieben. theoretisch natürlich machbar aber gefährlich. zusammengefaßt folgende ergebnisse bisher: 1. arbeiten näher am ursprung 2. bks erstellen (benutzer KS) - ob das geht müsste ich noch ausprobieren. vermute eher nicht vielen dank gruß theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 15. Nov. 2011 17:00 <-- editieren / zitieren --> Unities abgeben: Nur für GottesGeschenk
Hallo Theo, Zitat:
ich dachte mit rundungsfehler meint man immer die stellen nach dem komma. anscheinend nicht.
Meiner Meinung nach hast Du aber immer weniger Nachkommastellen zur Verfügung, je mehr Vorkommastellen benutzt werden. Auch ich habe da schon meine Erfahrung gemacht, Methoden wie Intersect-With funktionieren im hohen Koordinatenbereich sehr unzuverlässig und auch die meisten Command-Aufrufe wie Stutzen, Versetzen usw. Für solche Sachen habe ich es mir in der Tat angewöhnt AutoCAD-Objekte über einen Vektor zum Nullpunkt zu schieben, und nach der Operation wieder zurück. Wenn Du das machtst musst Du aber zusehen, daß alle möglichen Fehler abgefangen werden, so daß immer der ursprüngliche Zustand wiederhergestellt werden kann. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Stammtisch in Wolfsburg http://ww3.cad.de/foren/ubb/Forum491/HTML/000179.shtml Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GottesGeschenk Mitglied Bauingenieur
Beiträge: 229 Registriert: 23.02.2007 winxp pro sp3 / intel p4 3GHz / 2,5GB RAM / CAD 2011
|
erstellt am: 15. Nov. 2011 21:16 <-- editieren / zitieren --> Unities abgeben:
hallo joern vielen dank für die erklärung. deine erfahrungen sind sehr viel wert. hätt ich das mal vorher gewusst. werde es dann wohl auch so machen mit dem verschieben. aber was genau meinst du mit mögliche fehler abfangen. an was z.B. denkst du. wenn ich 100 3D-flächen verschiebe ändern sich ihre koordinaten über die weite reise hinweg? vielen dank theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 16. Nov. 2011 06:26 <-- editieren / zitieren --> Unities abgeben: Nur für GottesGeschenk
Hallo Theo, was ich meinte: Du verschiebst Deine 3D Flächen und führst dann irgendeine Funktion / Berechnung damit aus. Wenn diese dann bei der Funktion / Berechnung in einen Fehler läuft und das gesamte Programm an der Stelle abbricht, dann hast Du als Ergebnis die die verschobenen Flächen mit einem nicht ferigen Ergebnis. Daher verwende ich in solchen Situationen immer vl-catch-all-apply, damit die Routine auf jeden Fall fertig wird und die Objekte auch wieder zurückschieben kann. Anbei ein kleines Beispiel mit einer Linie, die wird erst nach 0.0 verschoben, dann wird in einer Funktion durch 0 geteilt, und obwohl das einen Fehler auslöst kann die Funktion noch sauber beendet werden (Meldung für den Benutzer und die Linie wird wieder zurückgeschoben)
Code:
(defun c:test ( / ARGUMENT1 OBJ VEKTOR) (if (and(setq obj (car(entsel "\nLinien auswählen:"))) (=(cdr(assoc 0 (entget obj)))"LINE")) (progn (setq vektor (cdr(assoc 10 (entget obj)))) (test:Schieben obj vektor 'T) (if(vl-catch-all-error-p (vl-catch-all-apply 'MachWas (list Argument1))) (alert "Funtion \"MachWas\" ist in einen Fehler gelaufen.")) (test:Schieben obj vektor nil) ) ) );;;Funktion, die zwangsläufig einen Fehler auslöst (defun MachWas (Argument1 / ) (/ 1.0 0.0) ) ;;;Linie um Vektor schieben (defun test:Schieben (obj vektor flag / LISTE) (setq liste (entget obj) liste (subst (cons 10 (mapcar (if flag '- '+) (cdr(assoc 10 liste))vektor)) (assoc 10 liste)liste) liste (subst (cons 11 (mapcar (if flag '- '+) (cdr(assoc 11 liste))vektor)) (assoc 11 liste)liste)) (entmod liste))
------------------ viele Grüße Jörn http://www.bosse-engineering.com Stammtisch in Wolfsburg http://ww3.cad.de/foren/ubb/Forum491/HTML/000179.shtml Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 16. Nov. 2011 14:02 <-- editieren / zitieren --> Unities abgeben: Nur für GottesGeschenk
Servus! Du kannst das ganze auch umgehen in dem Du die Zeichnung am Anfang der Bearbeitung im WKS in Richtung 0-Punkt verschiebst und die Verschiebewerte als externe Datei abspeicherst. So war das früher in Caddy geregelt, da gab es zu jeder Zeichnungsdatei eine sogenannte Fensterdatei mit den entsprechenden Verschiebe/Drehwerten, im Endeffekt eine 2-Parametertransformation. Bei der Datenweitergabe an Externe kannst dann mit der Fensterdatei wieder zurücktransformieren Ich glaube auch die Cremer-Software verwendet teilweise dieses Konzept. Vorteil: du sparst Dir x-Verschieboperationen, hast auch keine Probleme wenn die Zeichnung mal abraucht - einfach wieder öffnen denn Du befindest Dich immer im ACAD WKS. @CADFFM: ich denke es ist weniger ein Rundungsproblem als dass Rechenoperationen mit großen Zahlen schnell den Gültigkeisbereich von REAL oder DOUBLE übersteigen. Ciao Georg
------------------ http://www.xxx-tausend.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 16. Nov. 2011 14:04 <-- editieren / zitieren --> Unities abgeben: Nur für GottesGeschenk
|