den Code, der verbessert wurde, finde ich es wichtig für 3d-Druck und Renderings.
Ich antworte, weil.
bei dieser Art von Zeichnungen besteht die Notwendigkeit, daß die von diesen Programmen verwendeten Punkte, wenn sie
gleich sie sind wirklich, während der Cad, nach Operationen in mobilen Komma (typischerweise Rotationen) Kompromisse seine Integrität.
auch hier auf dem Forum las ich Thema, das das Problem für Elemente mit nicht-perfekten Zufall berichtete.
Ich werde es erklären, in einem Mesh stl a
x = 13.7865000 ist überhaupt nicht gleich
13.7864999, erzeugt im Cad durch mobile Komma-Operationen, und wenn das Druckprogramm oder es zu Recht findet sie anders, kann es falsche Rückschlüsse auf die Integrität des Netzes ziehen.
mein Problem war nicht nur dies, sondern auch (siehe Thema Titel) nicht exponentielle Notation, die Cad propinatiert mich gelegentlich zum Schreiben von Dateien, auch wenn mit rtos ich erklären, dass
Ich will nicht. (erste Option angegeben zu "zwei" (dezimale Note).
die einzige Möglichkeit, es zu vermeiden war, vorübergehend die Komma von drei Orten zu bewegen. wenn ich 4, mit den *10000 dann zurück zu / 10000, nichts zu tun die Notation "und" stand heraus.
Ich stamme den Schwimmer (mit den * und / nur bis 1000) genau zu drei Dezimals, aber dass ich definitiv genug bin, sowohl auf den 3d-Druckarbeiten, wo meine
Einheit um den Assumo am Millimeter zu messen, sowohl für die Architektur, wo ich den Zähler nehme, und ich bin sicherlich nicht um das Zehntel eines Millimeters kümmern.
aber es gibt eine andere Frage, die autolisp gekürzt fix, nicht rund.
Ich möchte vielmehr auf drei Dezimals nach dem Komma reduzieren, die ich dem Runden annähern möchte
Nähere InformationenUnd nicht kurz. und ich habe daher die Routinen hinzugefügt, die ich für angemessen halte, da die runde Funktion im klassischen Autolisp nicht da ist.
so diese Funktion... dass jetzt ohne Fehler zu handeln scheint.
Es ist wahrscheinlich redundant, aber ich bevorzuge, und übrigens weiß ich nicht, ob ich das Konzept gut verstanden habe, aber es berührt mich "um das Argument, dass ich an die Funktion von einer internen Variable an die Funktion weitergeleitet habe, zurückzunehmen, weil (ich weiß nicht, ob ich falsch bin) aber der Defun hält nur fest.
in locale Die Veränderungen, die ich ihm an das Thema mache, das ich durchgemacht habe.
Wenn ich aus den Toten komme, finde ich es als solche und als ich es an den Ursprung weitergegeben habe. von hier aus, deshalb nehme ich von der "zwischen" in den Toten den neuen Wert lokal verarbeitet. und ich muss es dem Thema geben.
Ich weiß nicht, was du eleganter machen kannst. falls es eine Methode der am meisten gesendeten Art danke gibt...
Ich meine den toten Typ, den ich rufe(x) ... und out x enthält den neuen Wert, den ich in meinem Namen berechnet habe.
Ich war nicht erfolgreich, die x-Variationen bleiben immer lokal zur Funktion. .
Code:
(defun clean(a)
(zwischen a)
(zwischen (* zwischen 1000)
(zwischen gesetzt)
(setq hh (rtos zwischen 2 3))
(Einsatz zwischen (von hh)
(Satz zwischen (/ zwischen 1000)
; rundes Verfahren
(falls) zwischen 0 und positiv
(Progn)
(- zwischen)
(falls) diff
(zwischen (+ 0.001))
)
)
(Progn)
(- zwischen)
(falls (< diff -0.000)
(zwischen (- zwischen 0,001))
)
)
)
); Ende defun sauber
im Haupt, jeder verarbeitete Wert, nach dem Aufruf zu den Toten, muss ich es von "tra", verarbeitet innerhalb der Funktion auf einer Kopie von ax, und es dem Thema zuordnen
(sauber ax)
(Einsatz ax zwischen)
aber wie ich sagte, ich kann nichts anderes tun, weil das ax-Argument durch die Funktion geändert wird, sondern nur als lokale Variable.