• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Verwendung

  • Ersteller Ersteller Angelo2449
  • Erstellt am Erstellt am

Angelo2449

Guest
Hallo alle,
Ich möchte gerne wissen, warum diese einfache Routine nicht exakte Werte liefert:
Code:
(Defun c: Ecef (/)

(Setq eck1 "4420568.319, 698901.058.4529365.156")

(setq cooxx (atof (vl- string- links- trim "" (substr eck1 1 11))); corordinata ecef x
(setq cooyyyy (atof (vl- string- links- trim "" (substr eck1 13 11)))
(setq coozz (atof (vl- string- links- trim "" (substr eck1 25))); corordinata ecef z

(pr "n")
(prc (vl- string- links- trim ")
(pr "n")
(prc (vl- string- links- trim ")
(pr "n")
(prc (vl- string- links- trim ")

(pr "n")
(Kuchenfalle)
(pr "n")
(Kojoy Prinz)
(pr "n")
(Koozz Snap)
(pr "n")
)
die Routine zurückgibt:
4420568.
69890
4529365.156
4.42057e+06
69890
4.52937+06

wo 698901.0 eindeutig falsch ist.
Danke.
 
Sie müssen immer davon ausgehen, dass es nicht das Programm ist, "falsch", sondern dass Sie, die nicht verstehen, was das unerwartete Ergebnis erzeugt.
das Problem liegt im Dach, ich weiß nicht, warum, aber (von was ich sehe) es scheint, dass es immer ein Ergebnis von 8 Zeichen zurückgibt, Dezimalpunkt enthalten.
in diesem Fall trunca coyy, weil es schafft, das Dezimal nach der vollen Zahl zu setzen, die anderen setzen sie in wissenschaftliche Notation, weil mit 8 Zeichen würde es nicht gehen, um die Zahl zu vervollständigen (auf den Punkt von coxx), so verwandelt es die Zahl in wissenschaftliche Notation, geben Sie den Punkt und die Verwendung der letzten Zeichen als Exponent (die mit e+06 repräsentiert).
aber alles und ich sage, alle Zahlen sind irgendwie abgerundet.

in allen Fällen in ecef1 Sie nicht in den Raum zwischen Kojen und Cozz

Ist es nicht besser, ecef1 als Liste zu erstellen?
der Übergang von Strings zu Zahlen kann Probleme geben, Grund direkt mit den Zahlen nein.

wenn Sie einen Punkt (Punkt als Objekt) aa haben, können Sie seine Koordinatenliste durch
(Satzkoord)
und von hier aus die einzelnen Koordinaten
(setq coxx (nth 0 coord)
(setq coyyy (nth 1 coord)
(setq cozz (nth 2 coord)

dann können Sie ecef1 mit Strings rekonstruieren, wenn Sie es nur im geketteten String-Format benötigen
(setq ecef1 (strcat (rtos coxx 2 3) ", " (rtos coyy 2 3) ", " (rtos cozz 2 3))
 
Dank Kristall,
wie Sie bemerken können, dass die drei Koordinaten in ecef1 gleiche Länge haben, aber Koy enthält einen Raum, der dann aus gelöscht wird (vl-string-left-trim "....)
die in ecef1 vorhandenen Koordinaten sind nicht diejenigen des Punktes, die mit setq coord (cdr (assoc '10 (entget aa))) erhalten werden, sondern bilden die Zeichenfolge des Namens ecef1 und daher muss ich sie mit substr extrahieren.
bleibt die Frage, denn mit 7 ganz + 3 Dezimals ist das Ergebnis richtig und mit 6 ganz + 3 Dezimals nicht?
Danke.
 
reale Zahlen werden im doppelten Präzisions-Mobilfunkformat gespeichert, mindestens 14 signifikante Präzisionsfiguren, trotz Compaiano solo 6 im autocad Kommandozeilenbereich.
Sie können mit diesem Test überprüfen:
(princ cooyyy) Wiedereinsetzung 69890.
(Rtos cooyyy 2 6)
Wiedereinsetzung "698901.058000"

p.s. die Verwendung von princ setzt die Verwendung eines Strings voraus, nicht eine Zahl
 
Vielen Dank, also, unabhängig vom beobachteten Wert mit Princ, werden Berechnungen und Ergebnisse mit 14 Präzisionsziffern ausgedrückt.
 
Nein, er sagt etwas anderes.
wenn Sie von einer realen Anzahl (als Art von Daten) autocad Grund in mobilen Komma starten.
wenn Sie von einem gegebenen "stringa" nein (obvily)
Dafür frage ich Sie: Warum ecef1 ein String ist und keine Liste?
 
... wenn Sie von einer echten Anzahl (als Art von Daten) autocad Gründe in mobilen Komma starten.
wenn Sie von einem gegebenen "stringa" nein (obvily)
in den verschiedenen Schritten von String zu real, und umgekehrt, die letzten Werte immer entsprechen.
Es ist drin Befehlszeile die nicht kommen Blick mehr als 6 Ziffern.
princ gibt auch den Wert einer realen Größe zurück, mit Rundungen der aktuellen Einheiten. .
Perched not supera 6 cifre :)
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben