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

Bücherregal von "moduli" AutoLisp

x11start

Guest
als ich klein war, gab es ein Spielzeug (von dem ich immer träumte und nie empfangen!), das aus vielen bunten Würfeln und mit elektrischen Kontakten auf einigen Seiten bestand. Diese Würfel enthielten elektrische und elektronische Schaltungen, die eine bestimmte Funktion erfüllten. Durch die Annäherung dieser Würfel zueinander war es möglich, Geräte mit einer gewissen Komplexität nach den Anweisungen eines kleinen Handbuchs zu erstellen.
das Konzept ist genau das von autolisp subs.
Bis jetzt, als ich einen neuen Befehl erstellen wollte, begann ich meine alte Liste zu öffnen und ging zu "Kopier & Paste". Nun möchte ich beginnen, getrennt in meinen "Cubes" in einzelnen Dateien zu halten und den neuen Befehl "durch die Montage" der verschiedenen Würfel durch (Last-"Name des Thecubo") erstellen.
Diese Idee von separaten Dateien ist ähnlich dem Ansatz, der mit Projekten in visuellen Lisp (prj) erhalten wird, aber auch in diesem Fall die Dateien des Projekts Ich legte sie alle in einen Ordner und dann ich neu schreiben die Routinen jedes Mal.

Ich möchte in diesem Beitrag beginnen, eine Reihe von "Modulen" zur Verfügung zu stellen, so dass sie eine "Freiheit" werden, von der aus die Module (oder Würfel) geladen werden, die ich brauche. der Vorteil ist, ein Ergebnis viel schneller zu erhalten und in späteren Zeiten das einzelne Modul zu verbessern, die Verbesserung auf alle Befehle, die es verwenden.
Dies beinhaltet die Notwendigkeit, sehr gut strukturierte Module zu erstellen, mit klaren Indikationen der input benötigten Variablen und denen, die im Output gewonnen werden und vor allem darauf achten, die n. und die Art der Variablen in Input und Output nicht zu variieren, wenn die vorherige Liste nicht funktioniert. für mehr Klarheit Ich dachte, dass die abgehenden, "globals" zu sein, ich möchte sie mit einem & vor dem Namen markieren, um sie zu erkennen: autolisp im Gegensatz zu anderen Sprachen geht nicht viel für den subtilen auf den Zeichen verwendet für die verschiedenen Arten von Variablen!
Starten Sie dann mit 2 Modulen namens 'x11:tasto' und 'x11:messaggio' (Anmerken Sie die x11 als Präfix: es ist ein kleines Vezzo!), diese werden im Befehl 'Auswahl' und 'Auswahl' verwendet, beide in der 'choice.lsp'-Datei enthalten.

Nun: Ich warf den ersten Stein.... Ihnen die Aufgabe von "lapidarmi" mit anderen Modulen!
 

Anhänge

in dieser zweiten Episode ist das Hauptprogramm Auswahl. lsp, dass einmal geladen mit (load"selections") ---ipotizing, dass alle Dateien in einem Pfad, der von autocad erkannt wird -- dann geht gestartet mit:

Selektion zur Auswahl eines einzelnen Objekts oder mit
selezmult zur Auswahl vieler Objekte

der erste Teilvorschlag ist x11:gword im gword enthalten. lsp-Datei, die dient, um einen Buchstaben oder ein Wort zwischen den "autorisierten" durch den Initget-Befehl einzugeben. Es ist das klassische System autolisp zu sagen, was zu tun ist. Im Gegensatz zu x11:key muss man hier auch nach der Wahl eingeben, weil in diesem Fall die Wahl ein Wort (ja/nein) und nicht nur ein einziger Schlüssel sein kann. ein Parameter (bit) erlaubt uns, nichts zu akzeptieren oder nicht die Antwort (zum Senden oder Raum) und die Antwort nichts mit einem Standardwert zu ersetzen.

der Hauptzweck dieser neuen Modulreihe ist jedoch ein anderer: die Auswahl von 1 oder mehr Entitäten des Designs.

mit dem in der selsingola.lsp-Datei enthaltenen Sub x11:selsingola werden wir gebeten, auf eine einzelne Instanz der Zeichnung zu klicken: daraus werden die durch eine Liste mit Gruppencodes benötigten Daten extrahiert. zum Beispiel eines Wesens können wir daran interessiert sein zu wissen, welche Schicht sich befindet, seine Farbe kennen usw.

das sub x11:gword erlaubte uns, für Blöcke und Polylinien, zu wählen, ob die Entitäten "extern",

oder diejenigen, die im Inneren gefunden werden, während für andere Wesen, die 2 Wahlen sind gleich:
im Falle von Blöcken, Klicken auf jedes Element, das Teil davon ist, wenn die Wahl war, die externe Einheit zu erhalten, werden wir den Namen des Blocks zurückgegeben; umgekehrt werden wir die Linie zurückgegeben, der Kreis... Ich meine, diese Einheit, die wir bekommen würden, wenn wir den Block explodierten. durch Anklicken eines Attributs erhalten wir die Attributdaten.

- die auslaufende Liste ist so:
((0 . "line") (8 . "assi") (10 6540.91 6920.91 0.0) (11 2540.91 6920.91 0.0)

die Wahl des einen oder des anderen Typs hängt von der später durchzuführenden Verarbeitung ab.

als Beispiel haben wir eine Zeile ausgewählt und den folgenden Gruppencode verwendet:

Code Beschreibung gefunden
0 Name Entity (linea) "line"
8 Name der "assi"-Schicht
10 Koord. Ausgangspunkt (6540.91 6920.91 0.0)
11 Endpunktkoord (2540.91 6920.91 0.0)

die Sub x11:selezmult im selezmult enthalten. lsp-Datei ist viel artikulierter als die vorherige, da es erlaubt, die Objekte des Designs zu wählen, mit allen Modalitäten, die von den verschiedenen Arten der Auswahl zur Verfügung gestellt werden: wenn Sie keinen Modus eingeben (durch Senden der Anfrage), können Sie die Einheiten auswählen, indem Sie einzeln klicken und (oder entfernen) neue Einheiten mit Fenstern usw. und dann mit dem Senden akzeptieren; umgekehrt, wenn der Fenstermodus (Fenster) gewählt wird, werden wir für die 2 vertic aufgefordert.
um das Unterprogramm nicht weiter zu komplizieren (im Grunde nur demonstrativ), Ich habe kein System hinzugefügt, das Filter der Auswahl von Einheiten oder Daten erstellt, die angezeigt werden. Diese Aufgabe wird dem Benutzer übertragen, der, wenn Sie Filter wollen, Werte lstc und lstfilt Variablen zuordnet und sie durch manuelle Änderung der Datei tut. umgekehrt, wenn diese Variablen nil-Wert haben, wird keine Filterung auftreten.
 

Anhänge

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