Die AutoLISP-Funktion member gibt eine Liste beginnend ab dem zuerst gefundenen Ausdruck, der gesucht ist, zurück. Wird der Ausdruck nicht gefunden ist die Rückgabe nil.
(member "C" '("A" "B" "C" "A" "D" "E" "B")) => ("C" "A" "D" "E" "B")
(member "X" '("A" "B" "C" "A" "D" "E" "B")) => nil
In memory of Rolf Wischnewski
Die Funktion ssget unterstützt nicht, wie die Funtionen (n)entsel, eine eigene Meldung am Eingabefenster (Befehlsprompt) auszugeben. Schade eigentlich, denn oftmals möchte man gerne den CAD-Anwender informieren, daß er nur bestimmte Objekte wählen soll. Als Abhilfe gibt es natürlich die Möglichkeit vor dem ssget-Aufruf einen Hinweistext auszugeben, aber mal ehrlich, dass sieht irgendwie nicht ganz so toll aus wenn da steht
Bitte nur Kreise auswählen
Objekte wählen
Mich hat vor einiger Zeit interessiert, wie eigentlich die beiden Lispfunktionen min und max mathematisch ohne Vergleichsoperatoren beschrieben werden.
Na gut, braucht man nicht wirklich, trotzdem fand ich es interessant.
Hier also die Formel für den Mindest- und den Maximalwert von zwei reelen Zahlen.
Jörn Bosse von Bosse-Engineering hat eine kleine aber feine Schnellstart-Anleitung für den VisualLISP-Editor zusammengestellt, der seit vielen Versionen in AutoCAD integriert ist. Er ist ein unverzichtbares Werkzeug für jeden, der sich mit Auto-, bzw. VisualLISP beschäftigt.
Das zweite Tutorial zum Thema Zufallszahlen geht auf die standardnormalverteilten Zufallszahlen ein und baut auf den ersten Teil "Zufallszahlen erzeugen 1. Teil" auf.
Was heißt nun "Standardnormalverteilt"?
Normalverteilt heißt einfach ausgedrückt, daß sich die zu generierenden Zahlen ungefähr glockenförmig (siehe auch "Gaußsche Glockenkurve") verteilen. Also vom Ausgangspunkt (Erwartungswert) verteilen sich die Zahlen dichter und werden mit zunehmender Größe eher seltener vorkommen.
Schauen wir uns eine typische Abfrage mal an.
(initget "Ja Nein")
(setq Abfrage (getkword "Soll ich wirklich alles löschen? [Ja/Nein] :"))
(if (and
(not Abfrage)
(= Abfrage "Nein")
)
'machwas-bei-nein
'sonst-tue-was-da-ja
)
Wie kann man einfach prüfen, ob 3 Punkte kollinear sind. Kollinear heisst, dass 3 oder mehr Punkte auf einer Geraden liegen. Eine Möglichkeit ist die hier bereits vorgestellte Dreiecksformel nach Gauss. Werden 3 Punkte übergeben und diese Punkte liegen auf einer Geraden, so ist die Fläche 0!
Aus der Hilfe wissen wir, dass bei der Funktion set beide übergebenen Argumente evaluiert werden, doch wie kann man das nun sinvoll einsetzen?
Sehen wir uns die Funktion set einmal genauer an.
In VLX kompilierte Dateien lassen sich unter anderem DCL-Dateien integrieren, was einige Vorteile mit sich bringt. So braucht man z.B. nur eine Datei und man ist nicht an einem Suchpfad von Autocad gebunden. Mittels Drag&Drop lassen sich so bequem Tools in Autocad laden.
Schön wäre es doch, wenn man das auch mit Lisp-Quelldateien machen könnte. Mit dem hier vorgestellten Trick ist das umsetzbar und bietet darüber hinaus sogar den Vorteil gegenüber der VLX-Variante, dass man vor dem Start des Dialoges dynamisch am DCL-Design noch arbeiten kann. Somit ist die etwas größere Lisp-Datei, als einzigen Nachteil betrachtet, vernachlässigbar.
Gerade bei einem größeren Quellcode ist es oft hilfreich eine Funktion zu haben, die nicht lokalisierte Variablen auflistet. Der VisualLISP-Editor (Vlide) hat diese Funktion, jedoch ist sie standardmäßig nicht aktiviert. Also wird es Zeit dies umgehend nachzuholen...
Sind drei Punkte P1=[x1,y1],P2=[x2,y2],P3=[x3,y3] eines Dreiecks gegeben, so kann durch die Flächen A der Trapeze
die Dreiecksfläche ausgedrückt werden:
Diese Internetseite ist urheberrechtlich geschützt. Alle Rechte vorbehalten. © 2024 Markus Hoffmann (─┼──) www.CADmaro.de