Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

könnte LISP so etwas?

32 views
Skip to first unread message

Steffen Bertz

unread,
Jan 10, 2006, 2:32:10 PM1/10/06
to
Hallo,
ich kann leider kein LISP, aber mich interessiert trotzdem, ob es mit
einer Routine möglich ist:
a) in einem Verzeichnis liegen dwg-Files, die der Reihe nach bearbeitet
werden sollen durch
b) öffnen
c) wenn im Layoutbereich, dann in Modellbereich wechseln
d) wenn nicht in Welt, dann auf Koordinatensystem Welt wechseln
e) aus einem anderen Verzeichnis eine X-Ref einfügen
f) Datei speichern
g) und schließen

Die Dateibezeichnung sieht in etwa so aus
zu bearbeitende Datei: Lageplan_1.dwg
die einzufügende X-Ref: XREF_1.dwg
die letzten Zeichen sind also immer identisch (weniger als 100 Pläne, es
reicht also 2 Stellen zu prüfen)

So, jetzt bin ich mal gespannt, was die CAD-LISP-Experten sagen.

Vielen Dank
Steffen
--
visit me: http://people.freenet.de/steffeniminternet
Das gefährlichste aller Bücher in weltgeschichtlicher Hinsicht ist doch
wohl unstreitig die Bibel, weil wohl leicht kein anderes Buch so viel
Gutes und Böses im Menschengeschlecht zur Entwicklung gebracht hat. (Goethe)

Tom Berger

unread,
Jan 10, 2006, 2:55:19 PM1/10/06
to
Am Tue, 10 Jan 2006 20:32:10 +0100 schrieb Steffen Bertz:

> So, jetzt bin ich mal gespannt, was die CAD-LISP-Experten sagen.

Ja, geht problemlos.

Tom Berger

--
ArchTools: Architektur-Werkzeuge für AutoCAD (TM)
ArchDIM - Architekturbemaßung und Höhenkoten
ArchAREA - Flächenermittlung und Raumbuch nach DIN 277
Info und Demo unter http://www.archtools.de

Peter Niessen

unread,
Jan 10, 2006, 3:45:00 PM1/10/06
to
Am Tue, 10 Jan 2006 20:32:10 +0100 schrieb Steffen Bertz:

> So, jetzt bin ich mal gespannt, was die CAD-LISP-Experten sagen.

Das geht allemal und AFAIK sogar ohne die graphische Oberfläche von ACAD zu
starten (ging zumindest früher). Ich bin selber kein LISP-Experte, aber
LISP ist eine obercoole Sprache. Es lohnt sich also zumindest die Basics zu
lernen. Das ist noch einfacher als BASIC. Und mit dem richtigen LISP-System
kann man nicht nur ACAD programmieren sondern auch Windows Programme
schreiben. Unter Unix/Linux ist LISP schon fast Pflicht EMACS so als
Beispiel.
--
Mit freundlichen Grüßen
Peter Nießen

Thorsten Meinecke

unread,
Jan 10, 2006, 4:29:06 PM1/10/06
to
Tom Berger <use...@archtools.de> schrieb:

>Am Tue, 10 Jan 2006 20:32:10 +0100 schrieb Steffen Bertz:
>
>> So, jetzt bin ich mal gespannt, was die CAD-LISP-Experten sagen.
>
>Ja, geht problemlos.

Finde ich nicht. Designentscheidung: entweder Script und Zugriff
auf den Befehlszeileninterpreter mit command/vl-cmdf oder
Dokumentenmanagement und Flusskontrolle in VisualLisp.

Beides zusammen spielt nicht.

Gruß,
--Thorsten

Tom Berger

unread,
Jan 10, 2006, 4:33:15 PM1/10/06
to
Am 10 Jan 2006 21:29:06 GMT schrieb Thorsten Meinecke:

>>Ja, geht problemlos.
>
> Finde ich nicht. Designentscheidung: entweder Script und Zugriff
> auf den Befehlszeileninterpreter mit command/vl-cmdf oder
> Dokumentenmanagement und Flusskontrolle in VisualLisp.
>
> Beides zusammen spielt nicht.

Doch gerade beides zusammen geht erst richtig.

Mittels Lisp ermitteln, welche Dateien bearbeitet werden sollen, dann aus
Lisp heraus ein Skript generieren und auch von hier aus gleich aufrufen.
Schrupp. Fertig.

Aber Mit VisualLISP könnte man die gestellte Aufgabe sogar auch ohne Skript
erledigen, und ohne die DWG-Dateien richtig in AutoCAD öffnen zu müssen -
Du kannst beispielsweise das komplette DesignCenter in Lisp
nachprogrammieren ...

Paul Lenz

unread,
Jan 11, 2006, 4:56:49 AM1/11/06
to
"Peter Niessen" <peter-...@arcor.de> schrieb:

> LISP ist eine obercoole Sprache. Es lohnt sich also zumindest die
> Basics zu lernen. Das ist noch einfacher als BASIC.

Na ich weiß nicht...
a = b + 5
oder
(setq a (+ b 5))

Ich finde, ersteres ist einfacher.


Paul Lenz

--
Dies ist eine gültige Email-Adresse.
Vor SPAM und Viren schützt mich www.spavi.de

Peter Niessen

unread,
Jan 11, 2006, 6:01:18 AM1/11/06
to
Am Wed, 11 Jan 2006 10:56:49 +0100 schrieb Paul Lenz:

> "Peter Niessen" <peter-...@arcor.de> schrieb:
>
>> LISP ist eine obercoole Sprache. Es lohnt sich also zumindest die
>> Basics zu lernen. Das ist noch einfacher als BASIC.
>
> Na ich weiß nicht...
> a = b + 5
> oder
> (setq a (+ b 5))
>
> Ich finde, ersteres ist einfacher.

Wie der Name nahelegt operiert LISP mit Listen. Da ist der Ausdruck wende
den Operator + auf die Elemente der Liste an mehr als logisch. Zugegeben
mit einer Fixierung auf Aldi-Taschenrechner etwas ungewohnt für eine
einfache Addition. Aber es gibt auch TR's (HP) die so arbeiten. Wende mal
LISP auf Probleme an die ernsthaft mit Listen arbeiten zb.
Matrix-Multiplikation, Skalarprodukte usw. also das Brot und
Butter-Geschäft jedes CAD Systems, dann erschliesst sich schnell wie
einfach und elegant im Gegensatz zu BASIC et al sich sowas lösen lässt.
Oder schreibe mal ein Programm das seinen Programmcode selber erzeugt (sehr
elegant bei Auswahloperationen wie "ssget" etc) In LISP ist das ein Klacks.
Aber in BASIC? Viel Spass beim ärgern ;-)

Tom Berger

unread,
Jan 11, 2006, 6:46:05 AM1/11/06
to
Am Wed, 11 Jan 2006 10:56:49 +0100 schrieb Paul Lenz:

>> LISP ist eine obercoole Sprache. Es lohnt sich also zumindest die
>> Basics zu lernen. Das ist noch einfacher als BASIC.
>
> Na ich weiß nicht...
> a = b + 5
> oder
> (setq a (+ b 5))
>
> Ich finde, ersteres ist einfacher.

Na, das kommt nur daher, dass Du Probleme mit der Syntax hast. Es gibt
keine Sprache, die effizienter mit Code umgeht und verständlich ist (APL
geht effizienter mit Code um, aber ... ->
http://de.wikipedia.org/wiki/APL_%28Programmiersprache%29) als LISP. LISP
Programme sind idR auch ohne jeden Kommentar unmitelbar lesbar.

Steffen Bertz

unread,
Jan 11, 2006, 4:02:04 PM1/11/06
to
Tom Berger meinte am Tue, 10 Jan 2006 in 22 Zeilen:

> Am 10 Jan 2006 21:29:06 GMT schrieb Thorsten Meinecke:

>>>Ja, geht problemlos.

>> Finde ich nicht. Designentscheidung: entweder Script und Zugriff
>> auf den Befehlszeileninterpreter mit command/vl-cmdf oder
>> Dokumentenmanagement und Flusskontrolle in VisualLisp.

>> Beides zusammen spielt nicht.

> Doch gerade beides zusammen geht erst richtig.

> Mittels Lisp ermitteln, welche Dateien bearbeitet werden sollen, dann
> aus Lisp heraus ein Skript generieren und auch von hier aus gleich
> aufrufen. Schrupp. Fertig.

> Aber Mit VisualLISP könnte man die gestellte Aufgabe sogar auch ohne Skript
> erledigen, und ohne die DWG-Dateien richtig in AutoCAD öffnen zu müssen -
> Du kannst beispielsweise das komplette DesignCenter in Lisp
> nachprogrammieren ...

Eure positiven Antworten freuen und mich und geben mir noch mehr
Antrieb, mich endlich damit intensiver damit zu beschäftigen.
Immer wieder gibt es Fragestellungen, die man mit LISP effizient lösen
kann.
Und wie schon geschríeben hat es noch den Nebeneffekt, z.B. den Emacs
noch besser zu verstehen (im Moment "nutze" ich ihn nur als Editor
:-))

THX

Ich habe keine Zeit, mich zu beeilen. (Igor Strawinsky)

Alexander Durée

unread,
Jan 11, 2006, 7:03:20 PM1/11/06
to
> Aber Mit VisualLISP könnte man die gestellte Aufgabe sogar auch ohne
> Skript
> erledigen, und ohne die DWG-Dateien richtig in AutoCAD öffnen zu
> müssen -
> Du kannst beispielsweise das komplette DesignCenter in Lisp
> nachprogrammieren ...

Und wie geht das?

Gruß
Alex


Tom Berger

unread,
Jan 12, 2006, 4:12:32 AM1/12/06
to

mit ein wenig Mühe :-)

Alexander Durée

unread,
Jan 12, 2006, 3:41:24 PM1/12/06
to
> mit ein wenig Mühe :-)
>
> Tom Berger

Vielen Dank für die großzügigen Informationen. Hättest Di vielleicht
auch noch einen Tipp, wie man sich diesem Thema nähern kann? Gibt es
dafür eventuell bevorzugte VisualLISP-Funktionen?

Gruß
Alex


Tom Berger

unread,
Jan 12, 2006, 4:08:14 PM1/12/06
to
Am Thu, 12 Jan 2006 21:41:24 +0100 schrieb Alexander Durée:

> Vielen Dank für die großzügigen Informationen. Hättest Di vielleicht
> auch noch einen Tipp, wie man sich diesem Thema nähern kann? Gibt es
> dafür eventuell bevorzugte VisualLISP-Funktionen?

Selbst der kleinste Einstieg würde diesen Rahmen bei weitem sprengen und
die Grenzen meiner Hilfsbereitschaft überfordern. Deshalb nur einige
Hinweise, die Dich auf die Fährte setzen können:

Das aktive Dokument erhältst Du mit:
(vla-get-ActiveDocument (vlax-get-acad-object))

Um eine nicht-geöffnete Datei als manipulierbares Objekt öffnen zu können,
benötigst Du den ObjectDBX-Server als Interface. Der ObjectDBX-Server ist
Bestandteil der AutoCAD Installation - allerdings haben die verschiedenen
Versionen verschiedene Namen. In AutoCAD 2004 heisst er
"ObjectDBX.AxDbDocument.16.1". Die Funktion, um ein Interface zum aktuellen
AutoCAD herzustellen, heisst z.B.:
(vla-GetInterfaceObject (vlax-get-acad-object)
"ObjectDBX.AxDbDocument.16.1")

Mit vla-open "öffnest" Du dann eine DWG-Datei für das Interface, mit
Funktionen wie z.B. vla-get-layers holst Du Dir dann die Layerobjekte
uswusf. Du kannst mit vla-get-dictionaries sogar Dictionaries auslesen ...

Alexander Durée

unread,
Jan 12, 2006, 5:19:11 PM1/12/06
to
> Das aktive Dokument erhältst Du mit:
> (vla-get-ActiveDocument (vlax-get-acad-object))
>
> Um eine nicht-geöffnete Datei als manipulierbares Objekt öffnen zu
> können,
> benötigst Du den ObjectDBX-Server als Interface. Der ObjectDBX-Server
> ist
> Bestandteil der AutoCAD Installation - allerdings haben die
> verschiedenen
> Versionen verschiedene Namen. In AutoCAD 2004 heisst er
> "ObjectDBX.AxDbDocument.16.1". Die Funktion, um ein Interface zum
> aktuellen
> AutoCAD herzustellen, heisst z.B.:
> (vla-GetInterfaceObject (vlax-get-acad-object)
> "ObjectDBX.AxDbDocument.16.1")
>
> Mit vla-open "öffnest" Du dann eine DWG-Datei für das Interface, mit
> Funktionen wie z.B. vla-get-layers holst Du Dir dann die Layerobjekte
> uswusf. Du kannst mit vla-get-dictionaries sogar Dictionaries auslesen
> ...
>
> Tom Berger

Vielen Dank für die kurze Einführung. Die Möglichkeiten, die einem auf
diese Weise zur Verfügung stehen, scheinen sehr vielfältig zu sein, auch
wenn ich mit dem ObjectDBX-Server bisher noch nichts zu tun hatte.
Vielleicht werde ich mir die Sache später einmal genauer ansehen.

Danke und Gruß
Alex


Thorsten Meinecke

unread,
Jan 18, 2006, 6:08:49 AM1/18/06
to
Alexander Durée <alexand...@yahoo.de> schrieb:

>> Tom Berger
>
>Vielen Dank für die kurze Einführung. Die Möglichkeiten, die einem auf
>diese Weise zur Verfügung stehen, scheinen sehr vielfältig zu sein, auch
>wenn ich mit dem ObjectDBX-Server bisher noch nichts zu tun hatte.
>Vielleicht werde ich mir die Sache später einmal genauer ansehen.

Ich hab's mir mal genauer angesehen und bin zu dem Ergebnis
gekommen, feine Sache, das. Danke, Tom!

Wermutstropfen ist, man braucht exklusiven Zugriff auf den
Zeichnungsbestand, da eine im Zeichnungseditor geöffnete DWG
für das ObjektDBX-System (auch read-only) gesperrt ist.

Ob die DLLs installiert sind, müsste man über eine Registry-Abfrage
rauskriegen können (dann besteht immer noch die Möglichkeit, dass
sie zwar installiert, aber nicht registriert sind).

Das ergibt etwa folgendes, lauffähig ab 2004 aufwärts:

(SETQ dbxname "ObjectDBX.AxDbDocument.16")
(IF (VL-REGISTRY-READ (STRCAT "HKEY_CLASSES_ROOT\\" dbxname "\\CLSID"))
(PROGN
(SETQ dbxobj (vla-GetInterfaceObject (vlax-get-acad-object) dbxname))
(vla-Open dbxobj filename :vlax-true) ; r/o
;;; Nutzlast geht hier, z.B. (vla-get-Dictionaries dbxobj)
(vlax-release-object dbxobj)
)
)

Da ObjektDBX offenbar nur einen SDI-Modus hat, kann auf das Schließen
der Zeichnungen bei schreibgeschütztem Zugriff verzichtet werden.
Keine Ahnung, ob das hinsichtlich späterer Erweiterung eine gute
Idee ist.

Gruß,
--Thorsten

Chris

unread,
Jan 27, 2006, 3:28:30 PM1/27/06
to
HI! ;-)

Es passt hier nicht, aber ich sehe gerade keine andere Chance.....

Wenn Du nicht der bist, von dem ich hoffe, dass Du
Derjenige-welcher-sein-magst, dann bitte diese Mail direkt entsorgen
und:
SORRY! Für mich war es ein Versuch, jemanden zu finden, nach dem ich
seit
über 20 Jahren sporadisch suche ;-)

Aber, wenn Dir Folgendes etwas sagt, dann würde ich mich sehr über
eine
Antwort freuen. Stichworte:

Hamburg - Blankenese/Iserbrook - Willhöden - kurz vor dem Abi -
"schwarzer"
Käfer - Briefe mit wunderschönen, skurrilen Zeichnungen -
Briefumschläge mit
5-Pfennig-Marken frankiert - kleine Samen in selbst gemachter winziger
Holzschachtel - Chris & Käfer - Käfer dann nach Berlin..... - einige
Briefe
- verlorener Kontakt - .....viele Gedanken....

Wie auch immer: Liebe Grüße von hier nach dort!
Chris/Christiane

Chris

unread,
Jan 27, 2006, 3:35:22 PM1/27/06
to
Käfer-Test.
0 new messages