Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  code-schnipsel verwalten

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:  code-schnipsel verwalten (1295 mal gelesen)
tappenbeck
Mitglied
Vermessungsingenieur


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

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 14. Apr. 2003 14:29    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

jeder von uns hat eine vielzahl von funktionen die er verwalten muss.

mit dem programm ghosttyperXML (in der einfachen form freeware) kann man einen verzeichnisbaum zu verschiedenen themen anlegen. den code kann man dann direkt auch in den autocad-editor einkopieren. variablen (werte, listauswahl, etc.) im quellcode lassen sich auch deklarieren die dann beim einfügevorgang ausgetauscht werden.

ich finde das teil eine gute sache !!
http://www.sc-data.de/ghosttyper/de/index.php3?nav=Home

gruß Jan :-)

------------------
jan :-)

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

benwisch
Mitglied
Bautechniker, CAD-Konstrukteur


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

Beiträge: 375
Registriert: 01.02.2001

erstellt am: 14. Apr. 2003 17:08    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 tappenbeck 10 Unities + Antwort hilfreich

klingt interessant, werde ich mir mal anschauen/testen...
dank dir für die info

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: 14. Apr. 2003 23:08    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 tappenbeck 10 Unities + Antwort hilfreich

Hi Jan,

Entschuldigung, wenn ich da gleich anfange rumzunölen, aber ich denke, das ist das letzte, was man in Lisp braucht. Ich will's aber gern begründen:

Lisp hat in meinen Augen noch immer so ziemlich die höchste Effizienz von allen Sprachen - wenn man wirklich in Lisp programmiert. Das schöne an Lisp ist doch, dass man von den ewigen Code-Wiederholungen völlig verschont bleibt. In VB ist das anders, da muss in jede Funktion immer wieder OnErrorGoto usw. rein - Basic lebt geradezu vom Copy/Paste-Paradigma und dummem, ewig langem Code. Da macht der Einsatz von solchen Werkzeugen Sinn, denn sonst tippt man sich tot. Oftgenug habe ich erlebt, dass ich da zwanzig, dreissig Mal die (fast) gleiche Zeile hintereinander habe.

Aber so etwas in Lisp einsetzen? Codeschnipsel verwalten? Codeschnipsel heissen in Lisp Funktionen, und die gehören nun mal in eine Bibliothek. Schlimm schon, dass sich das bei den AutoLisp-Programmierern immer noch nicht rumgesprochen hat - die meisten ignorieren seit 15 Jahren die Tatsache, dass es z.B. ein ss-foreach für Auswahlsätze gibt und hampeln noch immer mit Funktionen wie ssname usw. herum (und in jedem 2. oder 3. Programm bauen sie sich dadurch wieder Fehler ein). Und seit es AutoLisp gibt, baut sich jeder für jedes noch so kleine Programm wieder einen neuen Errorhandler! Da wird dann wieder '(setq old-osmode(getvar "osmode"))' usw. ge-copied und ge-pasted auf Teufel komm raus.

Und diesen Schwachsinn jetzt noch mit XML-Technologie automatisieren? Selbst die hartgesottensten Assembler-Programmierer arbeiten seit Jahrzehnten mit Makros, damit sie nicht mehr jedes bißchen Code voll ausschreiben müssen, und eingefleischte C-Programmierer sollen sogar irgendwelche APIs benutzen, um sich die schlimmste Drecksarbeit zu ersparen. Nur die AutoLisper, die fangen mit jedem Progrämmchen wieder bei Null an.

Reini Urban hat das irgendwie schon vor wer weiss wieviel Jahren erkannt und wollte dem 'Sprachstandard AutoLisp' eine Fortentwicklung ermöglichen. Aber irgendwie wollte wohl niemand so richtig anbeissen, und daher unterscheiden sich die AutoLisp-Programme eigentlich durch nichts von denen, die vor 10 oder 15 Jahren geschrieben wurden. Und deshalb gibt es pro 1000 AutoLisp-Programme auch 998 Errorhandler.

Na klar, es hat ein paar kleine Erweiterungen an David Betz' ursprünglichem XLISP gegeben, darunter auch durchaus brauchbare. Aber das ganze Geschrei nach VLA-... gilt letztendlich nicht einer Erweiterung, sondern auch nur einer Bibliothek, die man importieren kann wie andere auch.

Ich glaube schon, dass ich des öfteren mal den Beweis angetreten habe, dass man eigentlich mit fünf Zeilen Code auskommen kann, wo
zunächst mal 50 oder 100 Zeilen vorliegen. Das Einkopieren von Textbausteinen (das geht ja auch mit Word usw.) führt nur dazu, dass wir dann demnächst statt der notwendigen fünf Zeilen dann 200 oder 500 Zeilen zu verwalten haben.

Um nun noch ein gutes Haar dran zu lassen: Für die DCL-Programmierung macht es Sinn mit diesem Tool. Ich habe das etwas anders gelöst, aber das kommt auf das selbe raus: Wenn ich in einer DCL-Datei irgend ein Tile aufmache, schreibt mir mein Editor sofort alle möglichen Attribute drunter. Die, die ich nicht brauche, lösche ich dann weg. Das geht schneller, als jedesmal nachzuschlagen, wie die Dingerchen alle heissen.

Gruß, Axel

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

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: 14. Apr. 2003 23: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 Nur für tappenbeck 10 Unities + Antwort hilfreich

Und wieder was vergessen:

Ich möchte gleich noch einem Argument vorbeugen, das jetzt kommen könnte: "Ich möchte nur die Bibliotheksfunktionen reinkopieren, die das Programm benötigt, damit ich es verschicken kann".

Sowas nennt sich Pack&Go, und das ist auch nur ein Fünfzeiler in Lisp, der Rest liegt in der Bibliothek;-)))

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

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

tappenbeck
Mitglied
Vermessungsingenieur


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

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 15. Apr. 2003 09:28    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 axel,

ich finde es gut wenn jeder seine meinung sagt.

mein gedanke beim schreiben meiner empfehlung war folgender:

wenn ich ein kleines tool schreibe und weitergeben möchte (dem empfänger liegt also nicht meine bib vor) dann benötige ich diverse kleine funktionen und ich möchte mir die zusammenstellung mit ghosttyper etwas erleichtern.

.. und vielleicht hat der eine oder der andere noch eine andere anwendung wo er dieses tool gebrauchen kann.

zu deinem nachtrag noch die frage:

kann man deine pack & go bekommen denn im grunde habe ich soetwas schon immer gesucht und nicht gefunden - oder mit anderen worten: mir ist auch nicht die passende lösung eingefallen !!!!

was die standards von reini betrifft kann ich leider meine codes nur schwerlich noch anpassen ohne neue fehler einzubauen !!!

gruß Jan :-)

Nachtrag: ob das mit dem XML gut ist oder nicht sei einmal dahingestellt - wichtig finde ich nur, dass der abgelegte code nicht in irgendwelchen verschlüsselten dateien abgelegt wird und man auch ohne ghost einmal irgendwie wieder an die daten kommen kann !

[Diese Nachricht wurde von tappenbeck am 15. April 2003 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: 15. Apr. 2003 23:55    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 tappenbeck 10 Unities + Antwort hilfreich

Mein Pack&Go-System... das erste Mal, dass ich einfach Nein sagen muss. Und zwar deshalb, weil mein System gleichzeitig die Dateien verschlüsselt. Sie sind dann zwar noch ausführbar, aber nur mit dem zehnfachen Aufwand der Neuprogrammierung lesbar.

Ich hoffe, die Ironie mit dem 'Fünfzeiler' war erkennbar - es ist seit der Einführung von VisualLisp als Compilersprache recht komplex geworden, da man ja keinen Zugriff mehr auf seine eigenen Funktionen hat, es sei denn, man arbeitet ausschliesslich mit defun-q, das ja schliesslich das bisher verwendete defun ist.

Es ist mühsam, Quellcodedatein nach irgendetwas wie z.B. der Verwendung von Bibliotheksfunktionen zu durchsuchen. Daher mein Tipp für eine Vorgehensweise:

1 Man schreibe sich ein defun-x, was (anhand eines globalen Schalters oder so) entweder defun (für den Arbeitsbetrieb) oder defun-x (für das Zusammenstellen eines Pack&go-Pakets) wird. defun-x wird in Programmen, aber nicht in den Bibliotheken verwendet.

2 Das Programm nach Bibliotheksfunktionen durchsuchen. Ein Beispiel:

Kurzes Programm:
(defun-q c:mach-was( / antwort)
  (if(richtige-antwort(setq antwort(frag-was)))
    (zeichne-was(berechne-was antwort))
    (huste-ihm-was)
  )
  (princ)
)
Alle Funktionen (ausser defun-q und setq) sind hier Bibliotheksfunktionen.

Mit (flatten defun-q-list-ref 'c:mach-was) kriegen wir so eine Art lokale Atomliste. defun-q-list-ref ist übrigens eine dummy-Funktion, sie macht absolut nix, sie gibt nur die Bindung des Symbols wieder:
(defun-q-list-ref 'c:mach-was) <=> c:mach-was

(flatten c:mach-was) oder
(flatten(defun-q-list-ref'c:mach-was))
=>(richtige-antwort frag-was setq zeichne-was berechne-was huste-ihm-was princ)

3 Duplikate aus dieser Liste entfernen (mit vl-sort und while)

4 Diese Liste kann man nun mit einer Liste aller bisher verfügbaren Bibliotheksfunktionen vergleichen - defun-q, setq, princ fliegen raus:

=>(richtige-antwort frag-was zeichne-was berechne-was huste-ihm-was)

5 Das, was übrigbleibt, muss reinkopiert werden, nicht aus der Quelldatei, sondern aus dem Arbeitsspeicher. Geht mit defun-q-list-ref.

Und so geht flatten:

; Macht aus jeder Liste eine lineare Liste, was auch für mit defun-q definierte Funktionen gilt:
(defun flatten(l / )
  (cond
    ((null l)nil)
    ((atom l)(list l))
    ('T(append(flatten(car l))(flatten(cdr l))))
  )
)

[Noch ein Tipp für die Hartgesottenen: Append in der Rekursion ist nicht langsamer als cond!]


Soweit also ein Lösungsansatz, wie man so ein Pack&Go realisieren kann.

Gruss, Axel


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

[Diese Nachricht wurde von mapcar am 15. April 2003 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