| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: OOP-Autolisp (1571 mal gelesen)
|
reltro Mitglied student
Beiträge: 125 Registriert: 08.11.2009 Acad 2012 - VBA,Lisp Revit 2012 3dsMax 2012 Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3
|
erstellt am: 02. Jun. 2013 11:59 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Menschen... Ich habe mich erst kürzlich gefragt ob ich fähig bin einer funktionalen Sprache wie Lisp es ist, Objekte beizubringen wie man es zb. aus VB oder anderen kennt... nun ja, ich hab mich mal dahinter geklemmt und es versucht und folgendes (im Anhang) ist dabei rausgekommen. Ob es nun sinnvoll ist oder nicht, es freut mich dass es funktioniert =) Ich bin kein Imformatiker; also keine Ahnung ob das ganze OOP auch nur nahe kommt, aber denke schon :P Wie gesagt, im Anhang das Konstrukt... Leider noch unkommentiert, bis auf das eine Beispiel zum Ausprobieren: das Zip irgendwo hin entpacken und dann in "system.lsp" den Pfad ändern... (den Ordner-Pfad in dem die Datei liegt) Drag and drop nach Autocad -> neue Funktion mit dem Namen 'CLASS nun entweder eines der 2Beispiele drag'n'droppen oder selber was basteln... Zum selber basteln kann ich, sofern überhaupt interesse besteht, gerne anleitung geben... lg reltro Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
reltro Mitglied student
Beiträge: 125 Registriert: 08.11.2009 Acad 2012 - VBA,Lisp Revit 2012 3dsMax 2012 Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3
|
erstellt am: 03. Jun. 2013 10:04 <-- editieren / zitieren --> Unities abgeben:
Guten Tag... bin ein wenig neugierig ob es denn schon jemand getestet hat? und ob es gegebenfalls kommentare oder Fragen dazu gibt? bzw. ob überhaupt interesse besteht... Den Code ohne kommentare zu verstehen erkenne ich leider als schwierig... ich hab ihn im Blick und werde ihn bei vorhandener Zeit ausführlich kommentieren... den Vorteil den ich an dem ganzen erkenne ist, dass man zb. für eine PseudoRandomNumber ja zwingend eine globale Variable benötigt. Hier kann man diese auf einfach Weise in der entstehenden Funktion/Objekt direkt speichern ohne den gloablen Namespace zu verunreinigen... das jedoch nur als einfachstes Beispiel
Damit es sinnvoll wird, würde man natürlich verschiedene grundsätzliche FunktionsObjekte benötigen, welche ich in nächster Zukunft zu schreiben erwäge... sollte jemand interesse haben sich anzuschließen - gerne... Außerdem würde das ganze noch einen Kurzschluss zu den Reaktoren benötigen... Es gibt zwar schon ein internes Event die das Verhältnis von FunktionsObjekte zu anderen regelt, dieses müsste um unnötige rechnerei zu verhindern noch "geplant" werden... lg
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 03. Jun. 2013 10:14 <-- editieren / zitieren --> Unities abgeben: Nur für reltro
|
reltro Mitglied student
Beiträge: 125 Registriert: 08.11.2009 Acad 2012 - VBA,Lisp Revit 2012 3dsMax 2012 Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3
|
erstellt am: 03. Jun. 2013 10:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas... danke für deine Einschätzung... Sie ist natürlich vollkommen nachvollziehbar und auch richtig so... Natürlich wird ein Mehraufwand an Rechnerei betrieben der eigentlich nicht notwendig, bzw. gar nicht so für Lisp "vorgesehen" ist... Wie gesagt; ich wollte es versuchen, und ja, nun mit euch hier teilen, da ich unter anderen www's, hier verdammt viel gelernt habe... Ich glaube dass in manchen Situationen ein Objekt hier und da nicht fehl am Platz sein kann, eben um globale Variablen zu vermeiden... Ich mag funktionales Programmieren in Lisp zu sehr um auf C# oder .net umzusteigen Ob es so angenommen wird oder nicht ist mir eigentlich egal, es ging wie gesagt um den Versuch... Ich werde mein zukünftigen Bibliotheken darauf aufbauen - u know, persönlicher Standard lg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
reltro Mitglied student
Beiträge: 125 Registriert: 08.11.2009 Acad 2012 - VBA,Lisp Revit 2012 3dsMax 2012 Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3
|
erstellt am: 03. Jun. 2013 11:22 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 03. Jun. 2013 11:39 <-- editieren / zitieren --> Unities abgeben: Nur für reltro
|
reltro Mitglied student
Beiträge: 125 Registriert: 08.11.2009 Acad 2012 - VBA,Lisp Revit 2012 3dsMax 2012 Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3
|
erstellt am: 03. Jun. 2013 11:53 <-- editieren / zitieren --> Unities abgeben:
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 05. Jun. 2013 17:43 <-- editieren / zitieren --> Unities abgeben: Nur für reltro
Zitat: Original erstellt von reltro: Hallo liebe Menschen...Ich habe mich erst kürzlich gefragt ob ich fähig bin einer funktionalen Sprache wie Lisp es ist, Objekte beizubringen wie man es zb. aus VB oder anderen kennt...
Es gibt objektorientiertes Lisp. Am besten siehst Du Dir mal IronScheme an. Über das CLI kannst Du damit dann auch AutoCAD programmieren. CL kennt auch OO. Dem Beitrag von Cadmium widerspreche ich fundamental. Funktionales und objektorientiertes Programmierparadigma widersprechen sich nicht. Ganz im Gegenteil. Es gab schon sehr früh im ganz alten AutoLISP (d.h. in XLisp) eine von John Walker, einem der Gründer von Autodesk, programmierte OO-Erweiterung namens ClassWar. Vielleicht findest Du davon noch was im Netz. Ich habe dann Anfang der 1990er diese Idee weitergesponnen und habe objectiveCAD programmiert. Das ist zwar selbst vollständig objektorientiert und in AutoLisp/VisualLisp programmierbar, aber die eigentliche Idee war, CAD-Zeichnungselemente als Objekte zu betrachten, die frei definierbare Eigenschaften und Methoden haben, die aber auch miteinander kommunizieren können. Programm und Zeichnung waren also nicht mehr getrennt. Die Methoden der Objekte wurden in der Zeichnungsrepräsentation selbst gespeichert, so dass eine Simulation auch dann laufen konnte, wenn der Anwender nur die Zeichnung bekam und das RunTime-Modul zur Objektverwaltung. Sozusagen als ABfallprodukt war dieses System ein komplexes Variantenkonstruktionsprogramm, denn die Eigenschaften der Objekte konnten natürlich nach Belieben Wirkungen auf ihre Gestalt haben. objectiveCAD war kommerziell ein ziemlicher Fehlschlag, und ich habe es seit ca 15 Jahren nicht mehr weiter entwickelt. Aber es läuft noch immer in den aktuellen AutoCAD-Versionen. Wenn Du willst, schick' ich Dir mal was. [Diese Nachricht wurde von archtools am 05. Jun. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
reltro Mitglied student
Beiträge: 125 Registriert: 08.11.2009 Acad 2012 - VBA,Lisp Revit 2012 3dsMax 2012 Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3
|
erstellt am: 06. Jun. 2013 12:22 <-- editieren / zitieren --> Unities abgeben:
Hallo archtools... Ja, ich weiß eh dass es objektorientiertes Lisp gibt... wollts mir bei gelegenheit mal anschauen. Wusste bis jetzt nur nicht genau welches der zahlreichen Dialekte sinnvoll sein könnte... Wenn du meinst Ironscheme ist da geeignet und/oder dem Plain-Lisp ähnlich, dann werd ich mir das mal zu gemüte ziehen... Die Diskussion um die verschiedenen Paradigmen überlasse ich wohl eher den Profis Hab mir die dinge rund ums programmieren selbst, aus reinem interesse, beigebracht. Bin Student der Architektur und desswegen gabs bis jetzt nur oberflächlichen einblick in diese Dinge... Zwecks dem angsprochenen ClassWar... Hab einige Suche bemüht etwas darüber herauszufinden; das einzigste was ich gefunden hab, war ein von dir(?) verfasster Beitrag hier auf diesem Board... Dabei gings eben auch um dein objectiveCad Zu diesem: klingt sehr spannend und wäre in weiterer Folge bzw. war ein Ansatz zu dem was ich vor habe/hatte... Mich würde es sehr intressieren wie du denn die Methoden und Eigenschaften an die ZeichnungsObjekte bzw. die Zeichnung selbst geknüpft hast. Demnach wär ich sehr daran intressiert wenn du mir etwas darüber erzählen könntest bzw. ein Beispiel oder was auch immer zu deinem Projekt in dern 90er zukommen lassen könntest... lg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 06. Jun. 2013 22:27 <-- editieren / zitieren --> Unities abgeben: Nur für reltro
Zitat: Original erstellt von reltro: Hallo archtools...Ja, ich weiß eh dass es objektorientiertes Lisp gibt... wollts mir bei gelegenheit mal anschauen. Wusste bis jetzt nur nicht genau welches der zahlreichen Dialekte sinnvoll sein könnte... Wenn du meinst Ironscheme ist da geeignet und/oder dem Plain-Lisp ähnlich, dann werd ich mir das mal zu gemüte ziehen...
Naja, schon CL ist ziemlich verschieden von AutoLisp/VisualLisp. Scheme und IronScheme sind schon sehr verschieden davon. Ohne ein gewisses Entdecker-Interesse und Spaß an intellektueller Herausforderung wird das nix. Wenn's um Produktivität geht, dann wende Dich besser C# zu, oder Python. Zitat:
Zwecks dem angsprochenen ClassWar... Hab einige Suche bemüht etwas darüber herauszufinden; das einzigste was ich gefunden hab, war ein von dir(?) verfasster Beitrag hier auf diesem Board... Dabei gings eben auch um dein objectiveCad
Warum verwendest Du nicht Google zum Suchen? Das findet immerhin noch was: http://www.fourmilab.ch/autofile/www/chapter2_112.html http://through-the-interface.typepad.com/through_the_interface/2008/09/an-interview --1.html Zitat:
Zu diesem: klingt sehr spannend und wäre in weiterer Folge bzw. war ein Ansatz zu dem was ich vor habe/hatte... Mich würde es sehr intressieren wie du denn die Methoden und Eigenschaften an die ZeichnungsObjekte bzw. die Zeichnung selbst geknüpft hast.
Es gibt XDATA, XDICTIONARIES usw.. [Diese Nachricht wurde von archtools am 06. Jun. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
reltro Mitglied student
Beiträge: 125 Registriert: 08.11.2009 Acad 2012 - VBA,Lisp Revit 2012 3dsMax 2012 Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3
|
erstellt am: 07. Jun. 2013 17:00 <-- editieren / zitieren --> Unities abgeben:
Heyho... Zitat:
Naja, schon CL ist ziemlich verschieden von AutoLisp/VisualLisp. Scheme und IronScheme sind schon sehr verschieden davon. Ohne ein gewisses Entdecker-Interesse und Spaß an intellektueller Herausforderung wird das nix.
Hab ich beides zur genüge und ja, Python hab ich mir schon zu gemühte gezogen; auch nett zur google-suche... wie die meisten verwende auch ich google :P bin auf das selbe gestoßen wie du verlinkt hast, nur scheint mir das nicht sonderlich informativ zu sein, bzw. hab ich nur wenig rauslesen können was das ClassWar betrifft... Dachte mir schon dass es sich beim ablegen in der Zeichnung um XData usw. handelt. Dachte, vielleicht hast du etwas anderes entdeckt XData ist jedoch soweit ich weis begrenzt und die Datentypen die man dort speichern kann sind ja auch nicht sonderlich hilfreich um Code darin abzulegen... Klar Xrecords kann es beliebig viele pro Objekt geben (stimmt das so?) nur glaub ich, das liegt dann eher schwer im Magen beim schreiben und lesen der Methoden und Eigenschaften... Da glaub ich lass ich mir die Dinge doch lieber in eine externe Datei schreiben und muss diese dann halt gegebenfalls mit der Zeichnung weitergeben (einwände oder hinweise?) Kannst du mir vielleicht mal etwas von objectiveCad zeigen? ein Beispiel, zum ausprobieren? würd mich freuen... lg reltro Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 07. Jun. 2013 17:14 <-- editieren / zitieren --> Unities abgeben: Nur für reltro
Zitat: Original erstellt von reltro: Dachte mir schon dass es sich beim ablegen in der Zeichnung um XData usw. handelt. Dachte, vielleicht hast du etwas anderes entdeckt XData ist jedoch soweit ich weis begrenzt und die Datentypen die man dort speichern kann sind ja auch nicht sonderlich hilfreich um Code darin abzulegen... Klar Xrecords kann es beliebig viele pro Objekt geben (stimmt das so?) nur glaub ich, das liegt dann eher schwer im Magen beim schreiben und lesen der Methoden und Eigenschaften...Da glaub ich lass ich mir die Dinge doch lieber in eine externe Datei schreiben und muss diese dann halt gegebenfalls mit der Zeichnung weitergeben (einwände oder hinweise?) Kannst du mir vielleicht mal etwas von objectiveCad zeigen? ein Beispiel, zum ausprobieren? würd mich freuen... lg reltro
Da man in XADA bzw XRECORDS Strings ablegen kann, kann man im Prinzip beliebige Datenformate dort ablegen. Symbole, Dotted Pairs, beliebig tief verschachtelte Listen, beliebig lange Strings, und auch Formate, die VisualLisp gar nicht kennt wie z.B. beliebig genaue Realzahlen usw. kann man problemlos ablegen. Damit ich Dir eine Demo von objectiveCAD senden kann, musst Du mir Deine E-Mail-Adresse mitteilen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
reltro Mitglied student
Beiträge: 125 Registriert: 08.11.2009 Acad 2012 - VBA,Lisp Revit 2012 3dsMax 2012 Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3
|
erstellt am: 13. Jun. 2013 10:01 <-- editieren / zitieren --> Unities abgeben:
Hello Archtools... Hab deine Mail bekommen... =) Danke... Werde das ganze so früh als bald mir möglich ist, testen und etwas dazu sagen. Das wird sich wohl noch eine oder 2 Wochen ziehen, kommt aber garantiert. Bis dahin, nochmals danke... lg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|