| | |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | |  | NVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition, eine Pressemitteilung
|
|
Autor
|
Thema: code-schnipsel verwalten (1540 mal gelesen)
|
tappenbeck Mitglied Vermessungsingenieur
   
 Beiträge: 1222 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 14. Apr. 2003 14:29 <-- editieren / zitieren --> Unities abgeben:         
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
 
 Beiträge: 375 Registriert: 01.02.2001
|
erstellt am: 14. Apr. 2003 17:08 <-- editieren / zitieren --> Unities abgeben:          Nur für tappenbeck
|
mapcar Mitglied CADmin

 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 / zitieren --> Unities abgeben:          Nur für tappenbeck
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

 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 / zitieren --> Unities abgeben:          Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
   
 Beiträge: 1222 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 15. Apr. 2003 09:28 <-- editieren / zitieren --> Unities abgeben:         
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

 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 / zitieren --> Unities abgeben:          Nur für tappenbeck
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 >>)
 |