| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Listenwerte an Command übergeben (671 mal gelesen)
|
flaschenpost Mitglied Architekt
Beiträge: 497 Registriert: 29.09.2004 ADT 2004 / Windows XP
|
erstellt am: 22. Nov. 2004 23:45 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe LISP-ler, schon wieder geht es nicht weiter ... Kann man Listenwerte an Command übergeben ? Mal ein Beispiel, so klappt es nicht : (defun Netz_zeichnen () (setq a (list 0 0)) (setq b (list 1 0)) (setq c (list 2 0)) (setq d (list 0 1)) (setq e (list 1 1)) (setq f (list 2 1)) (setq g (list 0 2)) (setq h (list 1 2)) (setq i (list 2 2)) (setq x (list a b c d e f g h i)) (setq n 0) (Command "3dnetz" 3 3 (while (<= n 9) (print (nth n x)) (setq n (+ 1 n)) ) "") ) (defun C:Netz () (Netz_zeichnen) ) Was meint Ihr ? Gruß Carsten
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 23. Nov. 2004 00:10 <-- editieren / zitieren --> Unities abgeben: Nur für flaschenpost
Na dann so: Code:
(DEFUN Netz_zeichnen () (SETQ a (LIST 0 0)) (SETQ b (LIST 1 0)) (SETQ c (LIST 2 0)) (SETQ d (LIST 0 1)) (SETQ e (LIST 1 1)) (SETQ f (LIST 2 1)) (SETQ g (LIST 0 2)) (SETQ h (LIST 1 2)) (SETQ i (LIST 2 2)) (SETQ x (LIST a b c d e f g h i)) (SETQ n 0) (COMMAND "3dnetz" 3 3) (WHILE (<= n 9) (COMMAND (NTH n x)) (SETQ n (+ 1 n)) ) ) (DEFUN C:Netz () (Netz_zeichnen) )
Optimiert sähe die Funktion dann so aus:
Code:
(DEFUN Netz_zeichnen (/ locallist) (SETQ locallist '(( 0 0)(1 0)(2 0)(0 1)(1 1)(2 1)(0 2)(1 2)(2 2))) (COMMAND "3dnetz" 3 3) (foreach element locallist (COMMAND element) ) )
Mit freundlichem Gruß
Udo Hübner ------------------ Man kann eine Menge sehen, wenn man nur hinschaut. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 23. Nov. 2004 00:21 <-- editieren / zitieren --> Unities abgeben: Nur für flaschenpost
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 23. Nov. 2004 10:52 <-- editieren / zitieren --> Unities abgeben: Nur für flaschenpost
@Axel Hallo Axel, das hab ich mir schon gedacht, das du den Code noch kompakter gestalten würdest. Also 3DNETZE (regelmäßige Polygonnetze) bestehen auch nur aus Dreiecks- bzw. Vierecksvermaschungen. Mit URSPRUNG zerfallen Sie in 3DFLÄCHEN. Das es eine 3DFLÄCHE mit 4 Stützpunkten in AutoCAD gibt, ist eine Besonderheit. Gerendert oder ausgewertet werden Sie aiber wie 2 Dreiecke. Jeweils die Verbindung Pkt 1-2-4 und 2-3-4. Ich wüsste nicht, was dagegen spricht, Polygonnetze (PNETZe oder 3DNETZe zum Rendern zu verwenden). Mit freundlichem Gruß Udo Hübner ------------------ Man kann eine Menge sehen, wenn man nur hinschaut. [Diese Nachricht wurde von CAD-Huebner am 23. Nov. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 23. Nov. 2004 13:25 <-- editieren / zitieren --> Unities abgeben: Nur für flaschenpost
Hi Udo, Code:
(defun 3dnetz-zeichnen (m n daten / ) (mapcar'command(append(list"_3dmesh"m n)daten)) )(3dnetz-zeichnen 3 3 '((0 0 0)(1 0 0)(2 0 0)(0 1 0)(1 1 1)(2 1 0)(0 2 0)(1 2 0)(2 2 0)) )
Die eine Abbildung (3dnetz.gif) zeigt das Rendergebnis dieses Programmaufrufs. Für die zweite Abbildung (3dfaces.gif) habe ich die vier Vierecke durch acht Dreiecke (3DFaces) ersetzt. Der Unterschied ist deutlich sichtbar: AutoCAD ist bei Vierecken nicht in der Lage, den zwei Teildreiecken unterschiedliche Farben zuzuweisen. Hinzu kommt, dass bei nichtplanaren Flächen oft störende Artefakte (Streifenmuster usw.) auftreten, das konnte ich aber jetzt nicht auf die Schnelle reproduzieren. Beim Verdecktrechen fehlen bei nichtplanaren Flächen die Knicklinien. Jedenfalls: Wäre deine Annahme richtig, müssten die Renderergebnisse in beiden Fällen gleich sein. Fazit: Vierecke sind tolerierbar, wenn die Planarität geprüft wird. Falls nicht: Nur Dreiecke, d.h. dreieckige 3DFlächen und triangulierte Pmeshs. 3dmeshs können nur Vierecke enthalten! PNETZ/3DNETZ sind ungefähr so zu verstehen wie POLYLINE/TRACE. In beiden Fällen wurde ein erster, verunglückter Versuch durch einen zweiten Ansatz ersetzt. Aus Gründen der Kompatibilität werden die verunglückten Modelle aber nicht entfernt, sondern tauchen aus ihrer Gruft nachts immer wieder auf. Wer 3DNETZ benutzt, zeichnet auch mit BAND und frißt kleine Kinder! Gruß, Axel Strube-Zettler ------------------ (defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flaschenpost Mitglied Architekt
Beiträge: 497 Registriert: 29.09.2004 ADT 2004 / Windows XP
|
erstellt am: 23. Nov. 2004 13:38 <-- editieren / zitieren --> Unities abgeben:
Besten Dank an Euch beide ! Ich nehm die Funktion von Udo, weil ich sie besser nachvollziehen kann. Dass man in einer command-zeile nochmal command verwenden darf, wußte ich nicht. Läßt sich das auch bei anderen Befehlen verwenden, wo zwischen den Punkteingaben ein "Enter" erfolgen muß ? Läßt sich "" in die foreach-schleife einfügen ? Axel kann keine 3DNetze leiden. AutoCad rechnet sicher mit Dreiecken. Aber für den Anwender sind die 3DNetze optimal - am besten die Quadratstruktur lassen und immer nur Z varieren. Dann bleibt das Ganze auch am 2-D-Schirm übersichtlich und läßt sich in ADT gut verwenden. Gruß Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 23. Nov. 2004 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für flaschenpost
> Axel kann keine 3DNetze leiden. Und wenn, was täte's zur Sache? Es hat nichts mit "leiden können" zu tun, wenn ich hier auf die Grenzen und Fehlern von Dingen hinweise. > AutoCad rechnet sicher mit Dreiecken Das wurde schon mal gesagt - wenn du den Unterschied auf den beiden von mir angefügten Bildern nicht wahrnehmen kannst, solltest du Helligkeit und Kontrast deines Monitors neu kalibrieren. Reine Wiederholung macht ein Argument nicht richtiger. Nochmal zum Thema 3DNetze: Ich vergaß zu erwähnen, dass bei nichtplanaren Vierecksflächen natürlich auch keine Normalenbestimmung möglich ist. Gruß, Axel Strube-Zettler
------------------ (defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flaschenpost Mitglied Architekt
Beiträge: 497 Registriert: 29.09.2004 ADT 2004 / Windows XP
|
erstellt am: 23. Nov. 2004 16:15 <-- editieren / zitieren --> Unities abgeben:
|
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 23. Nov. 2004 20:47 <-- editieren / zitieren --> Unities abgeben: Nur für flaschenpost
|