Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Objekte zählen

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:  Objekte zählen (3845 mal gelesen)
Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


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

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, ...,
AutoCADs 200X, SWX 2kX

erstellt am: 23. Jun. 2004 10:32    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

Habe ein gutes kleines Lisp unter cadditions.de gefunden. Wäre es möglich es so zu ändern dass es beim Anklicken von M und-D Texten anhand des Inhalts des Textobjektes (wie bei Blocknamen) die entsprechende Anzahl liefert, z.B. M-Text angeklickt z.B.: "M8-DIN-933" dann soll die Anzahl angezeigt werden, egal ob der Suchstring in einem M bzw D-Text Objekt sich versteckt.

Code:

;;; ZAEHLERUNG
;;;
;;; zählt alle Vorkommen des gewählten Objekts und gibt Objektname und Anzahl zurück.
;;; Wird ein Block gewählt wird auch der Name mit ausgegeben.
;;;
;;;
;;; Mai 2004
;;; www.cadditions.de

(defun c:Zaehlerung (/ ent entnam ssgetlist)
  (while (setq ent (entsel "\nObjekt wählen, das gezählt werden soll:"))
    (setq ent (entget (car ent)))
    (if (= (cdr (assoc 0 ent)) "INSERT")
      (progn
(setq entnam (cdr
       (assoc 2 ent)
     )
)
(setq ssgetlist
       (list
(assoc 0
ent
)
(assoc 2 ent)
       )
)
      )
      (progn
(setq entnam (cdr
       (assoc 0 ent)
     )
)
(setq ssgetlist
       (list
(assoc 0
ent
)
       )
)
      )
    )
    (alert
      (strcat "Gewähltes Objekt: "
      (if (= 2 (length ssgetlist))
(strcat "Blockreferenz \"" (cdr (assoc 2 ent)) "\"")
entnam
      )
      "\n\nGefundene Anzahl: "
      (itoa
(sslength (ssget "_X" ssgetlist))
      )
      )
    )
  )
  (princ)
)



------------------
    "Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?"  Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 23. Jun. 2004 10: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 Nur für Proxy 10 Unities + Antwort hilfreich

Teste mal einfach Spasseshalber ein Teil was es bei mir gibt unter Texte-  Suchtext heißt das.
Das arbeitet so, wie su suchst. Es haut auch noch Pfeile auf die Basispunkte (GC 10) der gefundenen Treffer.

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


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

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, ...,
AutoCADs 200X, SWX 2kX

erstellt am: 23. Jun. 2004 10:58    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

Das Programm von dir ist zwar sehr gut jedoch etwas für die Aufgabenstellung zu kompliziert und leicht fehlerhaft. Ich muss nach dem Programmstart Blöcke "Pfeil" zusätzlich immer löschen und es funktioniert nicht mit einfachem Anklicken des Text-Objektes. Beim Suchen von Texten die in verschachtelten Blöcken sind gibt es mit:

Befehl: suchtext
Definiert Block "pfeil" neu
"Fehler Fehlerhafter Argumenttyp: stringp nil" (INSERT)

------------------
"Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?"  Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF

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


Ex-Mitglied

erstellt am: 23. Jun. 2004 11:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von Proxy:
Habe ein gutes kleines Lisp unter [b]cadditions.de gefunden. Wäre es möglich es so zu ändern dass es [...]
[/B]

Mir stösst es immer sehr sauer auf, wenn ich sowas sehe: Urheberrechtsverstösse.

Nimm's nicht persönlich, aber das schleicht sich hier in den CAD.de Foren immer weiter ein, und so wäre vielleicht mal angebracht, darauf hin zu weisen, dass auch LISP Programme im Sourcecode dem Urheberrecht unterliegen.

Wenn jemand wie cadditions oder auch die hier pistenden LISPler LISP Programme oder Funktionen ins Netz stellt, dann bedeutet das ganz und gar noch nicht, dass diese Funktionen damit allgemein frei sind. Es bedeutet lediglich, dass jeder Interessent sie von der Stelle aus, an der der Urheber sie selbst in die Öffentlichkeit gestellt hat, downloaden und bestimmungsgemäß verwenden darf.

Wenn ein Urheber ein Programm wirklich frei geben will, dann muss er dies ausdrücklich (!) kund tun. Ich mache das beispielsweise in meinen Freebies so, dass ich in einem kurzen Disclaimer jeder Art des Gebrauchs und er Weiterverbreitung erlaube.

Dies ist hier nicht der Fall: cadditions hat die Rechte an dem Programm nicht aufgegeben, und das bedeutet zuerst mal, dass Du es nicht weiter verbreiten darfst (das hast Du hier gemacht), und dass niemand ohne Erlaubnis des Urhebers das Programm modifizieren darf (darum hast Du hier gebeten).

Lustigerweise begeht cadditions genau den selben Urhebererechtsverstösse, indem er auf seiner Webseite auch fremde LISP Programme weiter verbreitet, ohne die Genehmigung der Urheber dazu zu haben.

Bitte beachte dies zukünftig schon in Deinem eigenen Interesse, denn cadditions könnte Dich mit 100%igen Erfolgsaussichten auf Schadensersatz udn Unterlassung verklagen, was für Dich nicht ganz billig ausgehen würde. Außerdem wäre auch der Betreiber von CAD.de mit in der Schusslinie, denn er könnte eventuell für die Urheberrechtsverstösse hier mit haften.

Gruß
Tom Berger

------------------


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. Jun. 2004 13:07    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 Proxy 10 Unities + Antwort hilfreich

Tom, im Prinzip hast du wohl recht, aber in diesem Falle sehe ich das nicht so: Es handelt sich hier ja nicht um eine 'schöpferische Leistung', sondern um eine völlig triviale Funktion, und zwar so trivial, dass eine hohe Wahrscheinlichkeit vorliegt, dass mehrere oder viele AutoLisp-Anwender bei gleicher Aufgabenstellung zu genau diesem Ergebnis kommen würden - abgesehen vom Einrücken vielleicht;-)

In der Autodesk-Newsgroup gab es ja lang genug völlig lächerliche Diskussionen über 'Copyrights' an ein- oder zweizeiligen Funktionen. Auf meinen Lisp-Seiten habe ich das ja mal angesprochen: Ein C auf das hier:

Code:

(defun ungerade(zahl)(not(gerade zahl))


Diese Zeile ist m.E. weniger trivial als das hier vorliegende 'Programm' (und zwar weil sie eine Idee enthält und sauber programmiert ist - das cadditions-Dingens enthält keine und ist unsauber bzw. unstrukturiert, weil es das User-Interface und den Umgang mit der Geometrie durcheinander würfelt).

Aber ein C darauf anmelden? Einfach lächerlich - in beiden Fällen. Dafür muß schon *wesentlich* mehr kommen. Das Wort 'Programm' habe ich deshalb in Anführungszeichen verwendet, weil es keines ist - eine kleine, triviale Funktion, mehr nicht.

Man könnte das ja mal bei d.s.r.marken+urheber diskutieren - hast du doch auch im Abo, wie ich sehe. Direkt zum Thema habe ich auf die Schnelle nichts gefunden. Wenn's da um Programme geht, dann immer um 'richtige'.

Gruß, Axel

------------------

Meine AutoLisp-Seiten
Meine private Homepage
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


Ex-Mitglied

erstellt am: 23. Jun. 2004 13:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von mapcar:
Tom, im Prinzip hast du wohl recht, aber in diesem Falle sehe ich das nicht so: Es handelt sich hier ja nicht um eine 'schöpferische Leistung', sondern um eine völlig triviale Funktion, [...]

Da gebe ich Dir im konkreten Fall durchaus Recht :-) und will das deshlab nicht so sehr auf diesen Einzelfall abstellen. Im Zweifelsfall entscheidet das sowieso ein Richter, und wenn die Rechtsschutzversicherung eines LISP-Anfängers eine Klage bzgl eines vermeintlichen Urhebererechtsverstosses finanziert, dann hat der OP zumindest schon mal 'ne Menge Ärger an der Backe - selbst wenn der Richter dann wg fehlender Schöpfungshöhe zu seinen Gunsten entscheidet.

In de.soc.recht.marken+urheber müssen wir das nicht weiter diskutieren, denn die Rechtslage ist - bis auf die sowieso im Einzelfall zu klärende Frage nach der Schöpfungshöhe - hier ziemlich eindeutig und wirft eigentlich keine weiteren Fragen auf. Für diskussionswürdig halte ich eher den Umgang mit der Gesetzeslage hier im Forum, und deshalb habe ich einen eigenen Thead dazu aufgemacht.

Vielleicht sollte CAD.de die AGB bei der Anmeldung dahin gehend erweitern, dass die Autoren von LISP Funktionen ihre Rechte daran prinzipiell aufgeben, wenn sie diese in einem CAD.de Forum veröffentlichen, so weit das eben möglich ist (im Gegensatz zum amerikanischen Copyright kann der Urheber nach dem deutschen UrhG prinzipiell nicht alle seine Rechte an seinem Werk aufgeben, selbst wenn er wollte).

Und vielleicht sollte man hier öfter mal auf die Risiken hiweisen, denen man sich aussetzt, wenn man fremden Code hier veröffentlicht, ohne vom Urheber die Erlaubnis dazu zu haben.

Gruß
Tom Berger


------------------


CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 23. Jun. 2004 22:18    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 Proxy 10 Unities + Antwort hilfreich

Hochverehrte Lisp-Götter, liebes Proxy,

ich war einfach mal so frech und habe meine triviale Funktion entsprechend Proxys Wunsch erweitert. Ich hoffe, ich verletze damit nicht mein eigenes Urheberrecht. 

Was die übrige Diskussion betrifft: Ihr könnt durchatmen, ich werde Proxy nicht verklagen. Wieso auch? Er hat die Quelle genannt, aus der er das Tool hat und weiß, dass ich mich hier hin und wieder rumdrücke.
So what?

Im übrigen bitte ich um etwas mehr konstruktive Kritik.
Es handelt sich zwar nur um eine "unstrukturierte" und "triviale" Funktion von einem unprofessionellen Lispler, aber der würde vielleicht auch noch gerne etwas lernen.
<Wagemut ein>Ich halte nichts davon, Mini-Funktionen wie hier, die man auch bei einer Auflösung von 640x480 noch ohne zu scrollen lesen kann (nicht getestet), der Allgemeingültigkeit wegen in mehrere Unterfunktionen aufzuteilen. Die paar Zeilen kann man von oben nach unten lesen ohne unten vergessen zu haben, was oben los war.<Wagemut aus>
Damit mir/uns die Lisp-Götter zeigen können, wie diese die Augen beleidigende Trivialität strukturierter auszusehen hat, stelle ich das Ganze hier nochmal rein, vielleicht erbarmt sich ja einer. 

@mapcar: Die Einrückungen aus der VLIDE werden vom UBB-Code irgendwie ignoriert. Aus Notepad scheints besser auszusehen:

Code:

;| ZAEHLERUNG

zählt alle Vorkommen des gewählten Objekts und gibt Objektname und Anzahl zurück.
Wird ein Block gewählt wird der Name mit ausgegeben,
Wird ein Attdef, Text oder MText gewählt werden nur Objekte mit gleichen Textinhalten ausgegeben.


Juni 2004
www.cadditions.de
|;
(defun c:Zaehlerung (/ ent entnam ssgetlist)
  (vl-load-com)
  (while (setq ent
(entsel "\nObjekt wählen, das gezählt werden soll:")
)
    (setq ent (entget (car ent)))
    (cond ((= (cdr (assoc 0 ent)) "INSERT")
  (setq entnam (cdr (assoc 2 ent)))
  (setq ssgetlist (list (assoc 0 ent) (assoc 2 ent)))
  )
  ((wcmatch (cdr (assoc 0 ent)) "*TEXT,ATTDEF")
  (setq ssgetlist (list (assoc 0 ent) (assoc 1 ent)))
  )
  (T
  (setq entnam (cdr (assoc 0 ent)))
  (setq ssgetlist (list (assoc 0 ent)))
  )
    )
    (alert
      (strcat "Gewähltes Objekt: "
      (cond ((= (cdar ssgetlist) "INSERT")
    (strcat "Blockreferenz \"" entnam "\"")
    )
    ((wcmatch (cdar ssgetlist) "*TEXT,ATTDEF")
    (strcat (cdar ssgetlist)
    "\nTextinhalt: "
    "\""
    (cdadr ssgetlist)
    "\""
    )
    )
    (T entnam)
      )
      "\n\nGefundene Anzahl: "
      (itoa (sslength (ssget "_X" ssgetlist)))
      )
    )
  )
  (princ)
)



Gruß
CADchup

------------------
www.cadditions.de

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

Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


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

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, ...,
AutoCADs 200X, SWX 2kX

erstellt am: 24. Jun. 2004 17:06    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

Dank an CADchup !


P.S. hoffe dass ich hier nicht irgendein bösen, schweren jedoch sehr elastischen Stein ins Rollen gebracht habe. 

------------------
"Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?"  Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF

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


Ex-Mitglied

erstellt am: 24. Jun. 2004 17:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von CADchup:
ich war einfach mal so frech und habe meine triviale Funktion entsprechend Proxys Wunsch erweitert. Ich hoffe, ich verletze damit nicht mein eigenes Urheberrecht. 

Dein sarkastischer Beitrag beweist, dass Du gar nicht verstanden hast, um was es geht.

Tom Berger

------------------


CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 24. Jun. 2004 22:44    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 Proxy 10 Unities + Antwort hilfreich

Tom,

ich habe sehr wohl begriffen, um was es hier geht. Unter anderem um den Begriff Schöpfungshöhe.
Und die Funktion in diesem Beitrag erreicht möglicherweise nicht die nötige Schöpfungshöhe um urheberrechtlich geschützt zu sein, wenn ich Dich richtig verstanden habe.

Aber lassen wir das hier. Du hast dafür extra einen neuen Beitrag aufgemacht.


Gruß
CADchup

------------------
www.cadditions.de

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: 25. Jun. 2004 18:12    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 Proxy 10 Unities + Antwort hilfreich

Hi CADchup,

da ich es war, der dein Programm als 'unstrukturiert' und 'trivial' bezeichnet hat, komme ich deiner Bitte natürlich gerne nach. Das Wort 'unstrukturiert' beinhaltet natürlich tatsächlich Kritik, 'trivial' aber nicht: Hier geht es doch nur um den korrekten Gebrauch von ein paar elementaren Lisp-Funktionen, mehr nicht. Aber das Wort 'Schö...he' möchte ich jetzt vermeiden;-)

Zur Kritik also: Ich habe das Ganze mal richtig formatiert, und zwar nach der einfachen Regel: Wo eine Klammer aufgeht, findet man die dazugehörende schließende Klammer etwas weiter rechts (kurze Ausdrücke) oder aber *genau* senkrecht darunter (längere Ausdrücke). Das ermöglicht eine extrem hohe Lesbarkeit.

Den Code habe ich mit Zeilennummern versehen, damit ich mich darauf beziehen kann. Änderungen am Code habe ich keine vorgenommen, ich gebe nur meine Hinweise dazu ab. Keine 'göttlichen' Hinweise übrigens, sondern durchaus (mehr oder weniger) streitbar. 

Ausprobiert habe ich den Code übrigens nicht!

Code:

01:  (defun c:Zaehlerung (/ ent entnam ssgetlist)
02:    (vl-load-com)
03:    (while(setq ent(entsel "\nObjekt wählen, das gezählt werden soll:"))
04:      (setq ent (entget (car ent)))
05:      (cond
06:        ( (= (cdr (assoc 0 ent)) "INSERT")
07:          (setq entnam (cdr (assoc 2 ent)))
08:          (setq ssgetlist (list (assoc 0 ent) (assoc 2 ent)))
09:        )
10:        ( (wcmatch (cdr (assoc 0 ent)) "*TEXT,ATTDEF")
11:          (setq ssgetlist (list (assoc 0 ent) (assoc 1 ent)))
12:        )
13:        (T
14:          (setq entnam (cdr (assoc 0 ent)))
15:          (setq ssgetlist (list (assoc 0 ent)))
16:        )
17:      )
18:      (alert
19:        (strcat "Gewähltes Objekt: "
20:          (cond
21:            ( (= (cdar ssgetlist) "INSERT")
22:              (strcat "Blockreferenz \"" entnam "\"")
23:            )
24:            ( (wcmatch (cdar ssgetlist) "*TEXT,ATTDEF")
25:              (strcat
26:                (cdar ssgetlist)
27:                "\nTextinhalt: "
28:                "\""
29:                (cdadr ssgetlist)
30:                "\""
31:              )
32:            )
33:            (T entnam)
34:          )
35:          "\n\nGefundene Anzahl: "
36:          (itoa (sslength (ssget "_X" ssgetlist)))
37:        )
38:      )
39:    )
40:    (princ)
41:  )


01:  Der Name der Funktion ist nicht deskriptiv - sieht aus wie ein Tippfehler
02:  Wozu? Ist doch gar kein ActiveX drin
04:  ent ist ein schöner Name für einen Enamen, aber für die entget-Liste würde ich eine andere Variable mit einem Namen wie 'entdata' verwenden - ist besser lesbar und vermindert Verwechslungsgefahr
07:  in einer Variablen namens 'entnam' würde ich einen GC -1 erwarten. Hier wird aber ein GC 0 oder auch ein GC 2 gespeichert
08:  (setq ssgetlist ...) kann aus dem cond-Ausdruck herausgezogen werden. Dann steht es nur einmal im Code, also (setq ssgetlist(cond ...)). Macht's übersichtlicher.
11:  MTEXT kann mehr als einen GC 1 enthalten, wenn der Text mehr als 250 Zeichen enthält. In diesem Fall liefert die Funktion falsche Ergebnisse.
13:  Falscher Gebrauch eines Symbols: Das T soll doch nicht evaluiert werden - in den neueren AutoLisp-Versionen evaluiert es ja sowieso immer zu T. Diese Evaluation kann man einsparen: (cond ... ('T ...)). Besser noch ist ein anderes Symbol wie (cond ... ('sonst ...)) oder (cond ... ('default ...)).
18:  Ab hier unstrukturiert - grundsätzlich würde ich nie innerhalb einer Funktion sowohl den Geometrieteil als auch das User Interface implementieren. Also aufteilen in eine Zählfunktion, die das eigentliche Zählen vornimmt einschl. ssget) und ein User-Interface, in dem die Objektwahl und das abschließende (princ) drinstecken. Die Ausgabe würde ich in einen dritten Teil packen. Eine solche Vorgehensweise erleichtert das Code-Recycling enorm: Das UI kann für andere andere Aufgaben verwendet werden, das Zählen kann aus anderen Aufgabenstellungen heraus aufgerufen werden.
18:  Unsachgemäßer Gebrauch von 'alert'. Das Problem liegt darin, dass  'AutoCAD-Meldung' in der Titelleiste drinsteht. Zitat AutoCAD-Hilfe: Displays a dialog box containing an error or warning message. Warum also dem User erstmal einen Schreck einjagen? Alert sollte nicht mit MsgBox in VBA verwechselt werden - das hat eine andere Funktion.
33:  siehe 13


Gruß, Axel

------------------

Meine AutoLisp-Seiten
Meine private Homepage
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


Ex-Mitglied

erstellt am: 25. Jun. 2004 18:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von mapcar:
[b]13:  Falscher Gebrauch eines Symbols: Das T soll doch nicht evaluiert werden - in den neueren AutoLisp-Versionen evaluiert es ja sowieso immer zu T. Diese Evaluation kann man einsparen: (cond ... ('T ...)). Besser noch ist ein anderes Symbol wie (cond ... ('sonst ...)) oder (cond ... ('default ...)).
[/B]

Hi Axel,

an dem Punkt bin ich anderer Ansicht - ein LISPler wird sich immer erst mal wundern, dass da ein quotiertes Symbol steht, während T halt immer wahr ist. IMOIn my opinion = Meiner Meinung nach kommt Dein Vorschlag aber den Leuten entgegen, die mit anderen Programmiersprachen aufgewachsen sind, und IF THEN ELSE Konstruktionen gewohnt sind.

Vom Laufzeitverhalten dürfte es keinen Unterschied geben, denn auch das (quote ...) muss evaluiert werden. Je nachdem, wie der Interpreter gebaut ist, wird das sogar deutlich länger dauern als die Evaluierung des Symbols T, aber das sollte hier ganz und gar keine Rolle spielen und ganz deutlich hinter der Lesbarkeit des Codes zurück stehen.

'T sieht IMOIn my opinion = Meiner Meinung nach ganz besonders unschön aus.

Ansonsten hab' ich nix zu meckern :-)

Gruß
Tom Berger

------------------


MaxiMei
Mitglied
Dipl.Ing.


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

Beiträge: 25
Registriert: 30.12.2002

Autocad 2005

erstellt am: 25. Jun. 2004 18:57    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 Proxy 10 Unities + Antwort hilfreich

ziemlich arrogant herr Berger

------------------

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


Ex-Mitglied

erstellt am: 25. Jun. 2004 19:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von MaxiMei:
ziemlich arrogant herr Berger

Vielleicht - wobei ich nicht glaube, dass Du in der Lage bist, das zu beurteilen. Ich jedenfalls würde meine Dämlichkeit nicht so offen bekannt geben, wie Du das hier machst.

Bitte pack' mich in den Filter, damit ich mich mit Geschmeiss wie Dir nicht mehr abgeben muss.

Tom Berger

------------------


MaxiMei
Mitglied
Dipl.Ing.


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

Beiträge: 25
Registriert: 30.12.2002

Autocad 2005

erstellt am: 25. Jun. 2004 19:20    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 Proxy 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von tom.berger:
Vielleicht - wobei ich nicht glaube, dass Du in der Lage bist, das zu beurteilen. Ich jedenfalls würde meine Dämlichkeit nicht so offen bekannt geben, wie Du das hier machst.

Bitte pack' mich in den Filter, damit ich mich mit Geschmeiss wie Dir nicht mehr abgeben muss.

Tom Berger
Woher nimmst du das Recht mich als dämlich zu betiteln.
Ich könnte das Gleiche von dir behaupten; was ich nicht getan habe.
Du hast; ich muss es ja leider zugeben sehr viel drauf; das gibt ddir aber nicht einen Freifahrtschein die anderen zu kritisieren:


------------------

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

MaxiMei
Mitglied
Dipl.Ing.


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

Beiträge: 25
Registriert: 30.12.2002

Autocad 2005

erstellt am: 25. Jun. 2004 19:24    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 Proxy 10 Unities + Antwort hilfreich

Bitte pack' mich in den Filter, damit ich mich mit Geschmeiss wie Dir nicht mehr abgeben muss.

Hab ich es mir nicht gedacht:
Nur ein bißchen reizen und schon kommt der wahre Berger zu Tage

------------------

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


Ex-Mitglied

erstellt am: 25. Jun. 2004 19:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von MaxiMei:
Bitte pack' mich in den Filter, damit ich mich mit Geschmeiss wie Dir nicht mehr abgeben muss.

Hab ich es mir nicht gedacht:
Nur ein bißchen reizen und schon kommt der wahre Berger zu Tage


Na, wenn Du es als Deine Aufgabe erachtest, kompetentere Leute als Dich zu reizen, dann kann es schon mal vorkommen, dass Dir einer - ganz zurecht, übrigens - mal kräftig auf die Finger klopft. Ja, ich bin der "wahre Herr Berger", der, wenn er provoziert wird, gerne auch mal mit gleicher Münze heimzahlt.

Tom Berger

------------------


startrek
Mitglied
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 25. Jun. 2004 20: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 Nur für Proxy 10 Unities + Antwort hilfreich

Abend,

konstruktive Kritik sollte man nun wirklich nicht als arrogant betrachten,
ich selbst seh' das eher als 'welcome'

Aber ...

@Maximei???
Ich vermute einfach mal, Du hast den Grundtenor nicht verstanden,
man beachte auch [manchmal die ;-)]

@Tom:
dein Reply auf's Reply fand ich aber nun auch nicht besonders hübsch,
besser wär's gewesen dann gar nicht zu_re_ply_en,
als sowas ..., empfinde ich als bissel schade.

Ich hätt einfach mal tief durchgeatmet und vergessen is ...

Naja nur [m]eine Meinung zur 'Entwicklung' dieses Threads

lg Nancy 

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


Ex-Mitglied

erstellt am: 25. Jun. 2004 21:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von startrek:
@Tom:
dein Reply auf's Reply fand ich aber nun auch nicht besonders hübsch,
besser wär's gewesen dann gar nicht zu_re_ply_en,
als sowas ..., empfinde ich als bissel schade.

Ich hätt einfach mal tief durchgeatmet und vergessen is ...


Ich bin jemand, der sachliche Themen sehr gerne auch mit einem gewissen Engagement diskutiert. Vom dabei entstehenden Spaß an der Diskussion abgesehen finde ich auch, dass man damit auch schneller auf den Punkt kommt, und dass, wenn die Teilnehmer Form und Anstand wahren, auch durchaus tiefer schürft.

Dass der Anonymling Maximei erstens nicht verstanden hat, um was es geht, ist offensichtlich. Dass zweitens er derjenige ist, der den akzeptierten Rahmen von Form und Anstand verlassen hat, kann auch niemand übersehen.

Ich verfolge bei Diskussionen im Usenet oder in Internetforen eine Regel der mathematischen Spieltheorie. Diese besagt, dass die efolgreichste Strategie in offenen Spielen (dazu zählt beispielsweise auch das Handeln in der Wirtschaft, oder auch die Teilnahme an einem Forum wie diesem hier) diejenige ist, sich erstens fair zu verhalten, zweitens, berechenbar zu sein, und drittens, unfaire oder unsachliche Angriffe sofort und in derselben Weise zu beantworten.

Ich halte das für das Funktionieren dieses Forums genau so wichtig wie für das der Gesellschaft insgesamt. Dieses Forum funkioniert ja nur, wenn alle Beteiligten das Gefühl haben, durch ihre Teilnahme individuellen Nutzen daraus ziehen zu können. Altruismus ist gut und schön, aber er hat immer eine egoistische Basis: ich verhalte mich altruistisch, weil es mir nützt.

Wenn ich nun einen persönlichen Angriff unbeantwortet lasse, dann zeige ich damit, dass man mit mir so umspringen kann. Und dann wird man auch mit mir so umspringen, weil die anderen Mitspieler so noch größeren Nutzen ziehen können ("Nutzen" ist sehr vielfältig, und selbstverständlcih zählt auch eine Steigerung des Selbstwertgefühls dazu). Indem ich jemandem wie Maximei die Grenzen seines Verhaltensspielraums innerhalb der Gemeinschaft aufzeige, sobald er diese Grenzen überschreitet, helfe ich nicht nur mir, sondern der Gemeinschaft insgesamt. Und aus objektiver Sicht helfe ich damit sogar Maximei. Früher hat man sowas "Erziehung" genannt, und wer davon zu wenig von Hause aus mitgekriegt hat, der holt sie sich halt auf die Weise eines Maximei.

Also: ich verhalte mich fair und stelle sachliche Themen zur Diskussion, und ich helfe gern. Wenn mir jemand dumm kommt, dann schlucke ich das nicht herunter, um dann irgend wann unkotntrolliert zu explodieren, sondern da gibt's gleich was auf die Mütze. Damit ist mein Verhalten berechenbar - wer gerne mit großem Engagement diskutiert, der ist mein Freund, solange er dabei die Form wahrt. Du wirst weder hier noch irgend wo sonst im Usenet erlebt haben, dass ich jemals als erster "ad hominem" argumentiert hätte, wo es um inhaltliche Differenzen ging.

Gruß
Tom Berger

------------------


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: 25. Jun. 2004 22:24    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 Proxy 10 Unities + Antwort hilfreich

Hmmm... Ich wollte mit meinem Beitrag eigentlich nur meiner Schuldigkeit nachkommen, meine Kritik an CADchups Programm zu begründen, aber dass das hier gleich wieder soooo losgeht, verstehe ich überhaupt nicht.

Toms Antwort auf meine Programmkritik sehe ich nach wie vor als einen sachlichen und konstruktiven Beitrag (damit ist der beitrag gemein, wo es vor allem um das quoten von T geht, damit jetzt nicht noch neue Mißverständnisse entstehen) - was daran nun arrogant sein sollte, ist mir völlig unverständlich. MaxiMei, hättest du *mir* Arroganz vorgeworfen und nicht Tom, dann könnte ich's ja verstehen, denn schliesslich war ich derjenige, der hier ein Programm 'runterputzt' (CADchup, ich hoffe, du weißt, dass das nicht irgendwie persönlich gemeint ist, sondern nur der Sache dienen soll).

Tom, auf diese unsachliche Kritik reagierst du aber völlig *über*! Das hier ist keine NG im Usenet (wo ich sehr oft mal das Gefühl habe, dass die nur existieren, um den ganzen Frust eines offensichtlich unschönen Alltags an anderen Teilnehmern abzureagieren). Das hier ist ein Forum im Web, wo es eigentlich recht freundlich zugeht - und das sollte meiner Meinung nach auch so bleiben. Hier Teilnehmer als 'Geschmeiss' zu bezeichnen, ist in meinen Augen untragbar - und es ist nicht nur eine Stufe mehr als 'arrogant', sondern du überspringst da ein paar. Wenn deine Sozialkompetenz auch nur annähernd so ausgeprägt ist wie deine (von mir sehr geschätzte) Fachkompetenz, sollte es doch für eine Entschuldigung deinerseits ausreichen. Ach ja, apropos Usenet: Ich glaube, hier gibt es keinen Filter;-)

Aber nun zur Sache an sich: Mir geht es bei der 'T-Frage nicht so um Laufzeit. Da ist es wohl egal, denn entweder muss das QUOTE oder das T rausgefischt werden, d.h. ggf. Hashwert berechnen, Symboltabelle durchsuchen und da durch alle Environments bes zur *special*-Ebene. Da ich den VLISP-Interpreter aber nur von außen kenne, weiß ich nicht, ob da vielleicht auch schon auf oberster Ebene aufgefangen wird(bei den readmacros). Keine Ahnung, wie die das implementiert haben.

Das Problem liegt woanders: Urprünglich war T ein Symbol wie jedes andere: völlig bedeutungslos und an nil gebunden, solange man keine andere Bindung erzeugt hat (boundp 'T) => nil. Irrtümlicherweise waren aber die meisten User (auch Entwickler bei AutoDesk) davon überzeugt, es gebe in AutoLisp sowohl ein false als auch ein true. Irrtum - Die ursprüngliche Implementierung von Betz sah nur Vereinbarungen vor:

Es gab in XLISP/AutoLISP keine Booleschen Variablen. Nil, der einzige Node im Speicher, dessen CAR und CDR wieder auf diesen Node selbst zeigen (leere zyklische Liste, deswegen (cdr nil) => nil), wurde zum 'Stellvertreter' für false, und true wurde schlicht und einfach mit (not nil) angenommen. Das ist der Gund, warum jeder String und jede Zahl, jeder Ename und jeder Auswahlsatz als true gewertet werden. Es wurden also kein Datentyp 'Boolean' eingebaut, weder von Betz noch von AutoDesk. Wirklich 'einprogrammiert' wurde nur eines: Die Umsetzung der Vereinbarung, dass der Ausdruck (not nil) das Symbol T zurückgibt - es hätte genauso die Zeichenkette "T" oder die Zahl 42 sein können.

Wie gesagt, die meisten waren damit überfordert und nahmen an, dass dieses T ein besonderes Symbol sei und im Interpreter irgendeine Bedeutung habe. Insbesondere überfordert von der Tatsache, dass man dem Symbol T auch Werte zuweisen konnte und auch (setq T nil) kein Problem darstellte. Es hätte auch alles wunderbar weiterfunktionieren können, wenn nicht die Lispler-Gemeinde hartnäckig vergessen hätte, beim cond-default das Symbol T zu quoten. Da muss nur ein Ausdruck stehen, der mit Sicherheit nicht zu nil evaluiert. Am effektivsten ist das hier: (cond ... (1 ...)), denn eine Zahl erspart das Suchen in der Symboltabelle - aber es dient nicht sehr der Lesbarkeit. Etwas weniger effektiv, aber lesbarer, sind (cond ...("true" ...)) oder besser (cond ...("default" ...)). Da es hier aber nicht um Zeichenketten geht, könnte auch das verwirren. Deshalb nach wie vor für mich die beste Lösung: (cond ...('default ...))

Hier ein kleines Beispiel, das früher ohne das geringste Problem gelaufen ist:

Code:

(defun f(T)
  (cond
    ( (< T 0) -1)
    ( (> T 0) 1)
    ('T 0)
  )
)

Es lief, weil der Apostroph korrekt verwendet wurde. In den neueren Versionen geht es aber nicht mehr: AutoDESK hat sich der Wunschliste gebeugt und zugunsten der User, die das einfach nicht gepeilt haben, die Bindung des Symbols T verhindert. Das bedeutet: In die Sprache AutoLisp, die ja bis dahin weder Operatoren (ausser Klammern und Punkt) kannte, wurde plötzlich ein dämliches KEYWORD eingeführt - wie in Basic! Zur Beschreibung der Sprache AutoLisp, deren drei Regeln in 30 Sekunden erklärt waren, kommt jetzt noch ein Nachtrag hinzu: "Ach ja, dann gibt es da noch die Ausnahme, dass ein bestimmter Name für Symbole ungültig ist..." (Na gut, es sind noch ein paar mehr geworden - aber das Thema hatten wir schon mal).

Nochmal zu dem Beispiel, das nun leider nicht mehr läuft: Es gibt keine Lösung. Falls hier jemand vorschlagen möchte "nimm doch einfach einen anderen Variablennamen..." -- nee, darum geht's nicht. Das wäre keine Lösung, sondern ein Workaround.

Gruß, Axel

------------------

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze

[Diese Nachricht wurde von mapcar am 26. Jun. 2004 editiert.]

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

Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


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

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, ...,
AutoCADs 200X, SWX 2kX

erstellt am: 25. Jun. 2004 23:48    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

Danke an mapcar für die tollen Erklärungen und sein Einsatz fürs Forum, das macht das Lisp lernen leichter.


Die andere Geschichte sollte doch bitte eher via PM oder Kritikforum geregelt werden.

------------------
"Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?"  Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF

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


Ex-Mitglied

erstellt am: 26. Jun. 2004 00:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von mapcar:
Tom, auf diese unsachliche Kritik reagierst du aber völlig *über*!

Wenn das sein einziger beleidigender Beitrag gewesen wäre, dann hättest Du ja Recht. Aber was zu viel ist, ist zu viel, und solche bösartige Gehässigkeit hat die kräftige Ohrfeige wirklich verdient.

Zitat:

Es gab in XLISP/AutoLISP keine Booleschen Variablen.

Aha. Wie die meisten anderen LISP Programmierer ausserhalb der AutoLISP Gemeinde habe ich auch mit Common Lisp angefangen zu programmieren, und das kennt beide Bool'sche Werte T und nil als reservierte Symbole. Dass auf jeden Fall bis zu meinem AutoCAD 2002 das Symbol T nicht reserviert ist, habe ich immer als einen lässlichen Bug von AutoCAD gehalten.

Zitat:

Wie gesagt, die meisten waren damit überfordert und nahmen an, dass dieses T ein besonderes Symbol sei und im Interpreter irgendeine Bedeutung habe. Insbesondere überfordert von der Tatsache, dass man dem Symbol T auch Werte zuweisen konnte und auch (setq T nil) kein Problem darstellte.

In meinem AutoCAD 2002 stellt das immer noch kein Problem dar:

setq T nil)
nil
Befehl: !T
nil
Befehl: (if T 1 2)
2
Befehl: (if 'T 1 2)
1

In welcher Version wurde das geändert? Und ist das dann die vor langer Zeit von Autodesk offiziell versprochene Annäherung von VisualLISP an Common LISP? :-)

Wenn Überladen von Funktionen klappen würde und die Variablen "lexikalisch gebunden" (hört sich blöd an auf deutsch) würden, dann würde mir das schon völlig ausreichen.

[/B][/QUOTE]
Es hätte auch alles wunderbar weiterfunktionieren können, wenn nicht die Lispler-Gemeinde hartnäckig vergessen hätte, beim cond-default das Symbol T zu quoten. Da muss nur ein Ausdruck stehen, der mit Sicherheit nicht zu nil evaluiert.
[/B][/QUOTE]

So gesehen hast Du Recht mit 'T. Aber Keywords jetzt als BASIC-Stil zu bezeichnen, führt schon ein wenig zu weit. Genauer: es ist falsch. Wenn man Bool'sche Werte hat, dann benötigt man auch reservierte Symbole, also Keywords dafür. Das ist ganz analog zu einigen anderen Datentypen auch, wie z.B. Integerzahlen, die im selben Sinne wie T reservierte Symbole sind: das Keyword T evaluiert zum bool'schen Wert T, das Keyword 1 evaluiert zum Integer-Wert 1.

Gruß
Tom Berger

------------------


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: 26. Jun. 2004 03:04    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 Proxy 10 Unities + Antwort hilfreich

Hi Tom,

na gut, noch eine kleine Nachtdiskussion;-)

Ich habe es übrigens selbst nochmal ausprobiert: (setq T nil) geht mal auf der Kommandozeile, mal geht's nicht und es erscheint eine Alertbox: "Ungeeignetes Symbol zum Binden T. In Unterbrechungsschleife wechseln?" Warum es mal geht und mal nicht - keine Ahnung. Wenn ich versuche, mein Beispielprogrämmchen (defun f(T) ...) mit (load ...) zu laden, geht es jedenfalls gar nicht.

Dass AutoLisp was von einer 'Unterbrechungsschleife' meldet, zeigt mir zwei Dinge: Zum Ersten läuft da immer noch der alte Code von D. Betz aus '84, da war nämlich eine echte BREAK LOOP drin. Die ist wohl nur aus dem Code rauskommentiert worden - genauso wie die Makrofunktionen. Du erinnerst dich sicher an den Thread, wo es darum ging, dass man manche Funktionen mit setq umbiegen kann (nämlich die echten Funktionen) und manche nicht (nämlich die 'special forms'), die gar nicht in der Symboltabelle gesucht werden. Und auch die Tatsache, dass irgendeine vla-irgendwas-Funktion einen Punkt im Namen hat (oder hatte), zeigt, dass es Makros in AutoLisp gibt, nur dass der User sie nicht benutzen kann. Ich würde auch meinen Arsch drauf verwetten, dass da nur ein paar /* ... */ rausgenommen werden müssten, und wir hätten im nächsten Release optionale Argumente usw.

Die einzige wirkliche Änderung war die formale Argumentenliste: Das Symbol für die Division da als Trennzeichen zwischen Argumente und lokale Symbole zu setzen, war ja eigentlich eine Schnapsidee - das war bei betz natürlich etwas anders. Aber selbst das hat in anderthalb Jahrzehnten nie ein Problem verursacht - ausser einem: Genau wie bei dem 'T dauert es bei manchen Usern lange - wieviel Mal wurde da von Einsteigern (ich auch!) mal eine Leerstelle vergessen? Wenn AutoLisp nicht auf dem absteigenden Ast wäre, würde wahrscheinlich AutoDesk den Schrägstrich in Symbolnamen verbieten. Aber das wär jetzt ein Arbeitsaufwand, der sich nicht amortisiert.

Jedenfalls: Diese beiden Dinge sind sehr vergleichbar, das T und der Schrägstrich - bedeutungslose Symbole eben, nur die Bindung macht den Unterschied. defun ist aber das ausgeprägteste Makro in AutoLisp - es verhindert nicht nur die Evaluation seiner Argumente, sondern auch die des Schrägstrichs. Anything goes...

AutoLisp ist nun mal nicht CommonLisp! Herr Betz hatte auch ganz andere Vorstellungen: Er hat eben nicht auf lexikalische, sondern dynamische Bindung gesetzt und nicht auf Closures, die gleich ein komplettes Environment mit einpacken. Sein Motto war eher "klein aber fein". Da fällt mir wieder der Spruch ein, der hier von einem Forumsteilnehmer in seiner Signatur zitiert wird: "Why did they pick the most arcane ..." John Walker hat da einen weisen Griff getan: Nirgends sonst auf dieser Welt gibt es eine so große Entwicklergemeinde, die sich mit der Programmierschnittstelle eines *einzigen* Standardsoftware-Programms befasst. Natürlich gibt es inzwischen mehr VBA-Programmierer - aber da geht es um einen ganzen Haufen Programme.

Apropos John Walker: Seit der weg ist, ist AutoCAD ja nur noch halb so schön. Waren das noch Zeiten, als man über Autodesk in der Schweiz noch die Free- und Shareware-Programme von Rudy Rucker zu Themen wie 'Zelluläre Automaten', 'Fleißige Biber' und 'Turing-Maschinen' zu beziehen waren. Na ja, lang ist's her...

Also: Hier geht's nicht um Common Lisp, hier geht's um AutoLisp. Die nicht-lexikalische Bindung ist für mich in erster Linie eine Sicherheitsfrage: Natürlich kann mir jede von mir aufgerufene Funktion meine eigenen Variablen zerschießen - AutoLisp ist nicht teamfähig, wenn man seinen Kollegen misstraut. ich mache in letzter Zeit viel in .NET - das kann ganz schön nervig werden, wenn ich meine eigenen Konzepte nicht realisieren kann, weil ich mir (nach Ansicht des Compilers) selbst misstraue;-) Auch CommonLisp ist da schon sehr viel umständlicher und schwerfälliger. Du sprichst doch auch von 'Eleganz' - da ist SCHEME eher angesagt, und AutoLisp macht reichlich Anleihen bei Scheme (aus XLISP wurde ja dann auch XSCHEME).

Jedenfalls: Keywords in AutoLisp hat's nie gegeben, und ich bin von der Einführung derselben, wenn's auch nur eines ist, nicht begeistert.  Überleg doch mal: Eine Sprache, die ein einziges Keyword hat! Was für ein Blödsinn! K&R-C mit 34 Keywords, das lasse ich ja noch durchgehen. Die Keywords waren übrigens auch der Grund, warum ich nach zwei Stunden Beschäftigung der hochgelobten Sprache Python wieder den Rücken gekehrt habe. Wenn ich Appetit auf Krautsalat habe, dann mache ich mir eine Dose Perl auf - da gibt's keine Ausnahmen von der Regel, da gibt's nur die Regeln von den Ausnahmen - und selbst davon gibt's wieder Ausnahmen. Das ist wenigstens sportlich!

Zurück zur Sache: Heutzutage wird man natürlich nicht mehr arm, wenn man für das Speichern von einer Null oder einer Eins 32 oder 64 Bit Speicherplatz verbrät - früher musste da ein Bit reichen. Oder überhaupt keins - das war ja die Zielsetzung von Betz! Genial - aber Hunderttausende von AutoLisp-Anwendern habe Zeilen wie (if (/= v nil)...) produziert. Sollte es mit AutoLisp doch weitergehen, wird es bald so aussehen wie in VBA: Selbst Microsoft ist offensichtlich nicht mehr in der Lage zu sagen, was da die Keywords sind. Hunderte von Listen im Netz widersprechen sich.

Über die Versprechungen von Autodesk zu Common Lisp weiss ich nichts - ich wäre auch eher dagegen. SCHEME wäre mir lieber, und da wären wir uns vielleicht einig: Lexikalische Bindung, aber keine Closures, keine (hygienischen) Makros, keine Keywords, nur true und false. Und das Ganze für den Preis ein paar Klammern mehr;-)

Vielleicht sollte man auch einfach mal BRAINFUCK in AutoCAD implementieren. Macht Spaß, damit zu programmieren! Fast so schön wie Rudy Rucker!

Gruß, Axel

 

------------------

Meine AutoLisp-Seiten
Meine private Homepage
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


Ex-Mitglied

erstellt am: 26. Jun. 2004 10:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von mapcar:
Apropos John Walker: Seit der weg ist, ist AutoCAD ja nur noch halb so schön. Waren das noch Zeiten, als man über Autodesk in der Schweiz noch die Free- und Shareware-Programme von Rudy Rucker zu Themen wie 'Zelluläre Automaten', 'Fleißige Biber' und 'Turing-Maschinen' zu beziehen waren. Na ja, lang ist's her...

Hast Du Dir damals auch mal Walkers "classwar" angesehen? Ich kam dadurch auf die Idee für mein objectiveCAD.

Walkers Abgang von Autodesk war eine extreme Zäsur, aber dieser Paradigmenwechsel war für das Unternehmen natürlich auch notwendig. Letztlich markiert das den Wechsel von der Garagenklitsche zum international operierenden Konzern.

Zitat:

Jedenfalls: Keywords in AutoLisp hat's nie gegeben, und ich bin von der Einführung derselben, wenn's auch nur eines ist, nicht begeistert.  Überleg doch mal: Eine Sprache, die ein einziges Keyword hat! Was für ein Blödsinn!

Nöö, überleg' Dir noch mal mein Argument mit dem Wertebereich der Datentypen. Wenn Bool'sche Datentypen, dann nur mit geschützten Symbolen für die feststehenden Werte - ganz analog zu den Zahlen beim Integer-Typ.

Zitat:

Vielleicht sollte man auch einfach mal BRAINFUCK in AutoCAD implementieren. Macht Spaß, damit zu programmieren! Fast so schön wie Rudy Rucker!

Das sagt mir gar nichts, aber ich werd' mal danach googeln. Ich hatte mir ja schon immer ein Prolog für AutoCAD gewünscht. Meine Diplomarbeit habe ich in Prolog geschrieben: automatisches Entwerfen ausgehend von einem "Wortschatz" aus Bauelementen und einer "Grammatik", mit der sich die Bauelemente zu "Sätzen" zusammen setzen lassen. Ein komplettes Gebäude ist dann einfach eine mehr oder weniger gelungene Geschichte :-)

Ich hab' vor sehr langer Zeit auch mal Tiny Prolog nach AutoLISP übersetzt, das war dann natürlich vom Laufzeitverhalten nicht gerade berauschend ;-). Ich weiss gar nicht mehr, ob's das noch gibt. Da werd' ich auch gleich mal nachsehen :-)

Gruß
Tom Berger

------------------


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: 26. Jun. 2004 12:37    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 Proxy 10 Unities + Antwort hilfreich

Zitat:
Hast Du Dir damals auch mal Walkers "classwar" angesehen?

Ja, irgendwie klingelt's - lang her. War das nicht das, wo man die Hälfte seines verfügbaren Arbeitsspeicher auf andere gehetzt hat?
Zitat:

Wenn Bool'sche Datentypen, dann nur mit geschützten Symbolen für die feststehenden Werte


Ich war damit zufrieden, dass es diesen Datentyp gar nicht gibt. nil und (not nil) genügen mir. Aber es ist ja sowieso der Fall, dass es inzwischen eine ganze Menge geschützter Symbole in AutoLisp gibt. Ich sage nur noch: Was soll's - die Tage von Lisp in AutoCAD sind gezählt. Weiss nicht, ob du hier mitgelesen hast:
http://ww3.cad.de/foren/ubb/Forum259/HTML/000224.shtml

Zitat:
Ich hatte mir ja schon immer ein Prolog für AutoCAD gewünscht

Erinnere mich gut - darüber haben wir uns ja kennengelernt. Zu XLisp von Betz gab's übrigens einen Prolog-Interpreter (in Xlisp geschrieben) als Sample dazu - aber wirklich performant war der natürlich auch nicht;-)

BRAINFUCK war natürlich mehr als ein Joke zu sehen. Da ging's mehr darum, ob man es schafft, einen kompletten Interpreter mit weniger als 1KB zu implementieren - jedenfalls irgend so etwas in der Art.

Übrigens steht immer noch mein Lisp-Interpreter mit dem schönen Namen PILS im Netz und wartet darauf, getestet zu werden:

http://www.mapcar.de/pils/pils.html

Allerdings hatte ich in letzter Zeit keine Gelegenheit, daran weiter zu arbeiten. Aber wenn ich mal Zeit habe, kommt noch eine Funktion rein, mit der man die lexikalische Bindung ein- und ausschalten kann. Kannst gerne mal was dazu sagen.

So, nun wende ich mich mal wieder der nicht halb so schönen Sprache C# zu und tue was;-)

Axel

------------------

Meine AutoLisp-Seiten
Meine private Homepage
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


Ex-Mitglied

erstellt am: 26. Jun. 2004 13:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:

> classwar

Ja, irgendwie klingelt's - lang her. War das nicht das, wo man die Hälfte seines verfügbaren Arbeitsspeicher auf andere gehetzt hat?


Nein, das war ein objektorientiertes Entwicklungssystem in und für AutoLISP, von Walker selbst noch geschrieben. Laut Walker ist classwar ein Akronym für "Class Language Application Support System Within AutoCAD, Really!". Es kann sein, dass es noch irgend wo bei ADGE verfügbar ist (hab's über Google aber nicht gefunden). Ich selber müsste es auch noch auf irgend einem Bandarchiv haben, wenn Du also eine alte SUN Unix Workstation hast mit 'nem Bandlaufwerk, dann kann man das dort vielleicht noch lesen :-)

Zitat:

Ich war damit zufrieden, dass es diesen Datentyp gar nicht gibt. nil und (not nil) genügen mir. Aber es ist ja sowieso der Fall, dass es inzwischen eine ganze Menge geschützter Symbole in AutoLisp gibt. Ich sage nur noch: Was soll's - die Tage von Lisp in AutoCAD sind gezählt. Weiss nicht, ob du hier mitgelesen hast: http://ww3.cad.de/foren/ubb/Forum259/HTML/000224.shtml

... hatte ich noch nicht gelesen, aber man kann ein schönes Kompendium draus ziehen. Ich habe mich nur ganz, ganz kurz mit VBA befasst und mich dann voller Grauen abgewandt. Letztlich würde ich das als eine Mischung aus Pascal- und BASIC-Interpreter bezeichnen, der als FrontEnd vor C++ geschnallt wurde, wobei man aber die Dokumentation der Klassenbibliothek weggelassen hat, damit man das auch als Adventure-Spiel benutzen kann :-)

Autodesk wird wohl das AutoLISP bis ans nicht mehr allzuferne Ende aller Tage für AutoCAD mitschleppen, ohne daran noch was zu machen. Reini Urban hat mir schon vor Jahren mitgeteilt, dass Autodesk alle Programmierer entlassen hat, die VisualLISP überhaupt noch hätten weiter entwickeln können.

Zitat:

> Prolog

Erinnere mich gut - darüber haben wir uns ja kennengelernt. Zu XLisp von Betz gab's übrigens einen Prolog-Interpreter (in Xlisp geschrieben) als Sample dazu - aber wirklich performant war der natürlich auch nicht;-)


Ja, habe ihn gerade im Netz gefunden. Deinen LISP Interpreter sehe ich mir gerne mal an.

Gruß
Tom Berger

------------------


Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 26. Jun. 2004 18: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 Nur für Proxy 10 Unities + Antwort hilfreich

Es freut mich ja zu lesen, dass hier endlich wieder zur sachlichen Diskussion zurück gefunden wurde.
Dennoch möchte ich die beiden Forumsteilnehmer MaxiMei und Tom.Berger auffordern, ihren persönlichen Kleinkrieg auf einem anderen Feld auszutragen.
Ich lasse es nicht zu, dass das bisherige sehr hohe Niveau im Umgang miteinander im Forum aufgrund solcher Beiträge leidet, was (wie in anderen Einrichtungen dieser Art bereits geschehen) auch zum 'Abwandern' der bisher vertretenen Kompetenz führt. Das kann von keinem Teilnehmer gewollt sein!

Das Forum ist eine Plattform zur sachlichen Diskussion. Zukünftig werde ich Beiträge, welche diese Plattform zur persönlichen Auseinanderstzung nutzen, auf die sachlichen Inhalte kürzen!
Es ist mir Bewusst, dass dies Zensur ist!

stinksauer Holger (in Funktion des Moderators dieses Forums)
PS: Ich erwarte hierauf keine weiteren Stellungnahmen.
Diesen Beitrag belasse ich unbeschnitten im Forum und betrachte diesen nach dem Motto: Nichts ist unnütz, es kann immer noch als schlechtes Beispiel dienen.

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: 08. Jul. 2004 23:51    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 Proxy 10 Unities + Antwort hilfreich

Zitat:
Tom Berger schrub:
automatisches Entwerfen ausgehend von einem "Wortschatz" aus Bauelementen und einer "Grammatik", mit der sich die Bauelemente zu "Sätzen" zusammen setzen lassen. Ein komplettes Gebäude ist dann einfach eine mehr oder weniger gelungene Geschichte :-)

Bin erst heute wieder auf diesen Thread gestoßen - jedenfalls ist das mein Geschwätz seit über 10 Jahren! Muß so 92 gewesen sein, da habe ich immer was von "sowas wie Postscript, aber für Gebäude" gefaselt. Eigentlich glaube ich immer noch daran: Eine 50MB-Architekturzeichnung für ein Einfamilienhaus lässt sich wahrscheinlich auf 50 KB "text/xml" und ein paar Stylesheets reduzieren...

Wir könnten das ja mal persönlich diskutieren - sind doch nur fünf Minuten zu Fuß;-)

Gruß, Axel

------------------

Meine AutoLisp-Seiten
Meine private Homepage
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


Ex-Mitglied

erstellt am: 09. Jul. 2004 10:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von mapcar:
Eigentlich glaube ich immer noch daran: Eine 50MB-Architekturzeichnung für ein Einfamilienhaus lässt sich wahrscheinlich auf 50 KB "text/xml" und ein paar Stylesheets reduzieren...

Wir könnten das ja mal persönlich diskutieren - sind doch nur fünf Minuten zu Fuß;-)


Hey, gerne! Wenn's Wetter mal wieder wird, dann auf meiner Terrasse.

So 'nen automatischen Entwurf macht man mit Shape-Gramars oder L-Systemen (nach Aristid Lindenmayer). Aber im Gegensatz zu Dir glaub' ich nicht an sowas, das ist nur eine nette Spielerei, halt 'ne intellektuelle Herausforderung für jemanden, der gerne Rätsel löst :-)

Aber in dem Zusammenhang eine wirklich wichtige Lektüre: The Algorithmic Beauty of Plants von Prusinkiewicz und Lindenmayer. Außerdem ist das das schönste Informatik-Buch, das ich je in Händen hatte.

Gruß
Tom Berger

------------------


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