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

Lisp per misurare

  • Ersteller Ersteller mobile
  • Erstellt am Erstellt am

mobile

Guest
Verdammt alle!
Dies ist der Code, den ich schrieb, es würde nehmen, um die Länge in Metern einer Entfernung auf dem Bildschirm gegeben zu berechnen, ich weiß, dass es möglich ist, dies auch mit Quoten zu tun, aber seit ich vor kurzem begann, wollte ich etwas Einfaches tun.
Mein Problem ist, dass ich die gemessene Länge (Distmis) nicht zulassen kann, m (was die Längenzähler angibt) als Suffix, also nach der Zahl, hinzugefügt und mit einem Raum gelöst werden.

(setq distmis (getdist "zeichnet die Länge: ")

(setq Länge (+ distmis m))

(Befehl "_text" bricht "0.15"" Länge)

Vielen Dank im Voraus!
 
m, in der Tat ist "m" ein String.
dann, um eine String zu der Maßnahme hinzuzufügen, müssen Sie auch die Messung in String transformieren:
(setq Länge (strcat (rtos distmis 2 2) "m")
 
Vielen Dank an Dieva, jetzt funktioniert es perfekt!

Ich habe eine andere Frage, wenn ich zum Beispiel 3 verschiedene Längen habe, immer auf mein Design genommen und möchte sie zusammenfassen, wie ich kann? so, dass im Ergebnis durch einen "+" Mond auf dem anderen getrennt werden? es: 34+56+82m können Sie einen Code machen, der gut geht, auch wenn die Längen 5 werden oder sogar 2 sind?
 
wird aufgrund der Variabilität der Anzahl der Operationen ein etwas komplexerer Code.

Sie können jede Dist in einer Liste (Setq-Liste) hinzufügen
nachdem Sie "Messen" sollten, wie viele Artikel es in der Liste gibt (Längenliste)
Sie sollten diese Nummer einem Zyklus zuordnen und einen Strkat des Textes machen, der durch die Aufnahme des neuen Eintrags der Liste bis zum Ende der Artikel erhalten wird.
eine Sache des Typs (Setq Text (Strcat Text "+" (nth n list))
wobei n von 0 auf die Gesamtzahl der Elemente der Liste variieren muss -1

Es wird etwas komplizierter, aber wenn Sie nicht verletzt werden, werden Sie nie in der Lage sein:)
 
Danke für den Tipp! Ich glaube, es ist kompliziert, ich habe bereits einen guten Führer heruntergeladen, und für die Dinge, die ich vorher wollte, werde ich erst beginnen, nachdem ich die Grundlagen gut verstehe:)

Ich habe noch eine Frage... Wenn ich zum Beispiel als Präfix auf eine Daten setzen möchte, die ich in der Autocad-Befehlsleiste geben möchte, zum Beispiel 2x 3 m, mit diesem Code lisp:

(setq distmis (getdist "zeichnet die Länge: ")

(setq Länge (strcat (rtos distmis 2 2) "m")

(setq nx (getstring "put wie oft die Länge multiplies, es 2x, 3x, etc.)

(Setq-Länge2 (Strcat (rtos nx 2 2) (rtos-Länge 2 2))

(Befehl "_text" bricht "0.13" bricht Länge 2)

Ich arbeite an dem Punkt, an dem ich den Wert von 2x betrete, dann schließe ich das Programm ab:

Kann mir jemand helfen?
 
Code:
(seq n 0 l2 nil)
(sing)
(falls (setq distmis (getdist (strcat "\nindiziert die Länge (" (rtos (setq n (1+ n) 2 0)")): ")
(setq l2 (falls l2 (strcat l2 "+" (rtos distmis 2 2))) (rtos distmis 2 2))
(setq l2 (strcat l2 " m") nl)
)
)
(princ "\Einfügen und Verdrehen von Texten angeben")
(Befehl "_text" bricht "0.13" bricht l2)
 
Vielen Dank für Ihre Hilfe!! es funktioniert 10%% :)
Eine letzte Sache nur....wenn ich die gemessene Länge (/2) weanieren möchte, wo ich die Aufteilung in den oben genannten Code anwenden kann, z.B. (/ 15 2) -->, wo 15 Sata für 15m ... dies, weil ich die Änderung der Skala optimieren will... Ich versuchte, aber ich ständig kneten:(
Vielen Dank!!
 
Sie müssen zuerst verstehen, was Typ Daten gehen zu einer Variablen und/oder Typ einer bestimmten Anzahl.

getstring können Sie einen String (Text) eingeben, unabhängig davon, welches es ist. sogar eine Zahl, weggegeben getstring ist ein Text.
getreal macht Sie geben echte Zahlen (Zählerzahlen, um zu verstehen, positiv oder negativ)
getint macht Sie nur ganze Zahlen eingeben (ohne Dezimals)

Wenn Sie einen String nicht multiplizieren können (wenn würde 2xabc? )
geht vorbei, wenn Coe nicht zwei Realitäten konkatieren kann (wie viel würde 1.234 Angriff auf 3,456? )
dann, wenn Sie eine Variable haben, die einen String enthält (nx) Sie können es nicht in String verwandeln (entspricht nx 2 2). Es ist schon.

Sie müssen zunächst klären, welche Typen bestimmte Befehle und/oder Operationen zurückgeben
z.B. assimilieren wir, dass aa ein Int val ist. 3 und bb ist ein echtes val.3 und cc ist ein string val. 3
Ist ein Int 10 geteilt aa möglich? Wenn ja, welche Ergebnisse werden Sie geben?
Ist eine Int 10 geteilte bb möglich? Wenn ja, welche Ergebnisse werden Sie geben?
Ist ein Int 10 geteilt cc möglich? Wenn ja, welche Ergebnisse werden Sie geben?
 
so.... wie es richtig Kristall beobachtet, muss die arithmetische Operation erfolgen, wenn die Variable einen Zahlenwert hat:

(rtos distmis 2 2) --> "3.80"

(rtos (/ distmis 2.0) 2 (2) --> "1.90"
 
Crystal, der erste ist möglich, während die anderen beiden nicht urteilten? Danke für die Erklärung!

gp, dass du mir vorher eine Spitze auf die Variablen gegeben hast, ich versuchte, in Platz zu setzen, aber in der dritten Zeile gibt es ein Problem, das heißt, es ist nicht möglich, um Null zu teilen...

(seq n 0 l2 nil)
(sing)
(wenn (setq distmis) (getdist (strcat "\nindiziert die Länge (" (rtos))/ (setq n (1+ n) 2 0) 2.) "
(setq l2 (falls l2 (strcat l2 "+" (rtos distmis 2 2))) (rtos distmis 2 2))
(setq l2 (strcat l2 " m") nl)
)
)
(princ "\Einfügen und Verdrehen von Texten angeben")
(Befehl "_text" bricht "0.13" bricht l2)

Dank wieder und gute Fortsetzung des Tages an alle!!
 
Diese Anleitung, die Sie geändert haben, bezieht sich auf die progressive Nummer, die bei jedem Längenanzeigeruf (1), (2), (3) usw. angezeigt wird, und vor allem haben Sie die Klammerposition falsch gemacht.

wenn Sie den Abstand, den Sie benötigen, teilen müssen, um die nächste Zeile, d.h. die Distmis-Variable, genau wie in meinem Beispiel oben.
 
Danke für die Hilfe Dieva, Gp und Kristall!
...aber auch zu diesem Forum:)
Jetzt funktioniert mein Lsp großartig:)))
gute Fortsetzung des Tages zu allen!
 

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