Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Listenwerte an Command übergeben

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Listenwerte an Command übergeben (670 mal gelesen)
flaschenpost
Mitglied
Architekt


Sehen Sie sich das Profil von flaschenpost an!   Senden Sie eine Private Message an flaschenpost  Schreiben Sie einen Gästebucheintrag für flaschenpost

Beiträge: 497
Registriert: 29.09.2004

ADT 2004 / Windows XP

erstellt am: 22. Nov. 2004 23:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 23. Nov. 2004 00:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für flaschenpost 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von mapcar an!   Senden Sie eine Private Message an mapcar  Schreiben Sie einen Gästebucheintrag für mapcar

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für flaschenpost 10 Unities + Antwort hilfreich

Ich meine nur: Oh je!

Klassischer Einzeiler in Lisp - du brauchst keine Variaben usw. !

Code:

(defun 3dnetz-zeichnen (m n daten / )
  (mapcar'command(append(list"_3dmesh"m n)daten))
)

(3dnetz-zeichnen 2 2 '((0 0)(0 1)(1 0)(1 1)))


Die Länge der Datenliste muss nur m x n sein. Das ist dann noch etwas weiter optimiert, weil die jedes 3DNETZ zeichnet, nicht nur 3x3.

Hinweis: 3DNetze sind zum Rendern nicht zu gebrauchen, weil sie nichtplanare Flächen enthalten (können).

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 23. Nov. 2004 10:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für flaschenpost 10 Unities + Antwort hilfreich

@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



Sehen Sie sich das Profil von mapcar an!   Senden Sie eine Private Message an mapcar  Schreiben Sie einen Gästebucheintrag für mapcar

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für flaschenpost 10 Unities + Antwort hilfreich


3dmesh.gif


3dfaces.gif

 
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


Sehen Sie sich das Profil von flaschenpost an!   Senden Sie eine Private Message an flaschenpost  Schreiben Sie einen Gästebucheintrag für flaschenpost

Beiträge: 497
Registriert: 29.09.2004

ADT 2004 / Windows XP

erstellt am: 23. Nov. 2004 13:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von mapcar an!   Senden Sie eine Private Message an mapcar  Schreiben Sie einen Gästebucheintrag für mapcar

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für flaschenpost 10 Unities + Antwort hilfreich

> 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


Sehen Sie sich das Profil von flaschenpost an!   Senden Sie eine Private Message an flaschenpost  Schreiben Sie einen Gästebucheintrag für flaschenpost

Beiträge: 497
Registriert: 29.09.2004

ADT 2004 / Windows XP

erstellt am: 23. Nov. 2004 16:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Nein Axel, das liegt nicht am Monitor - sondern daran, dass Deine letzte Antwort zum Zeitpunkt der Eingabe noch gar nicht zu sehen war.
Gruß Carsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Teamleiter Mission Stowage (m/w/d)

Als Teamleiter (m/w/d) übernehmen Sie die fachliche Führung eines Konstruktionsteams, welches für die ganzheitliche mechanische Integration von Rüstsätzen/ Gerätesätzen in militärischen Systemen verantwortlich ist.


Zu Ihrem Aufgabenfeld gehören unter anderem folgende Punkte:

  • Fachliche Führung eines Konstruktionsteams mit Schwerpunkt auf der Konstruktion ...
Anzeige ansehenTeamleitung, Gruppenleitung
mapcar
Mitglied
CADmin



Sehen Sie sich das Profil von mapcar an!   Senden Sie eine Private Message an mapcar  Schreiben Sie einen Gästebucheintrag für mapcar

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für flaschenpost 10 Unities + Antwort hilfreich

Ach so,

ja, das war kurz hintereinander. Das ist natürlich eine Erklärung. Dann ist das mit dem Monitor natürlich ungültig;-)

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

[Diese Nachricht wurde von mapcar am 23. Nov. 2004 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz