Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  lisp aus lisp

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:  lisp aus lisp (1922 mal gelesen)
AutoCADuser
Mitglied
Technischer Zeichner /Elektrotech., Energietech.


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

Beiträge: 48
Registriert: 29.10.2004

-Windows NT 4.0
-AutoCAD 2002 +SP1 +pi-cup 5.2
-WSCAD 4.0
-Normica
-HP 1050C
-Xerox 8828 / Falter / Scanner
XIB-1 / XWB-1 / YWC-1

erstellt am: 01. Apr. 2008 17: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

Hallo Leute!

mal wieder eine Frage von mir.
Wie kann ich bzw. kann ich eine LISP-Routine "A" aus einer anderen LISP "B" Starten und
nach ende von "A" soll dann in "B" weitergemacht werden...ist sowas möglich ??

Gruß

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

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 01. Apr. 2008 17: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 Nur für AutoCADuser 10 Unities + Antwort hilfreich

Das ist ja wohl sebstverständlich, dass eine funktion eine andere Funktion wieder aufrufen kann und nach Beendigung er aufgerufenen Funktion die Prrogrammbearbetiung in der aufrufenden Funktion fortgesetzt wird. Das geht eigentlich in jeder Programmiersprache.

Code:
(defun A ()
(Print "A läuft")
(B) ; hier aufruf von B
(print "wieder in A")
)
(defun B ()
  (Print "B läuft")
)

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

AutoCADuser
Mitglied
Technischer Zeichner /Elektrotech., Energietech.


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

Beiträge: 48
Registriert: 29.10.2004

-Windows NT 4.0
-AutoCAD 2002 +SP1 +pi-cup 5.2
-WSCAD 4.0
-Normica
-HP 1050C
-Xerox 8828 / Falter / Scanner
XIB-1 / XWB-1 / YWC-1

erstellt am: 01. Apr. 2008 18:41    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

hi Udo,
ich kreigs grad nicht hin, sorry.
mal kurz mit Beispiel: wenn ich jetzt B hab und zwischendurch A ausführen will

;-------------lisp B------------------
(defun c:B ( / test)
(command "_.zoom" "_extents")
(command "_.xref" "_detach" "*")

;----hier soll A ausgeführt werden----

;-------und weiter mit B--------------

(command "_.layer" "_unlock" "*" "")
(command "_.layer" "_color" "253" "*" "")
(prin1)
)
------------Ende B-------------------
.
.
.
-------------lisp A------------------
(defun C:A (/ )

lisp zum Block einfügen

)
-------------Ende A------------------

in A muß ich ja nichts mehr reinschreiben...

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

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



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

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 01. Apr. 2008 19:09    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 AutoCADuser 10 Unities + Antwort hilfreich

Äh...so?
Code:
(defun c:A ()
  (Print "A läuft")
  (c:B) ; hier aufruf von B
  (print "wieder in A")
)
(defun c:B ()
  (Print "B läuft")
)
Grüsse, Henning

------------------
Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

  http://www.voxelman.de

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

AutoCADuser
Mitglied
Technischer Zeichner /Elektrotech., Energietech.


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

Beiträge: 48
Registriert: 29.10.2004

-Windows NT 4.0
-AutoCAD 2002 +SP1 +pi-cup 5.2
-WSCAD 4.0
-Normica
-HP 1050C
-Xerox 8828 / Falter / Scanner
XIB-1 / XWB-1 / YWC-1

erstellt am: 02. Apr. 2008 10:22    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

Ok danke, das hab ich ja hinbekommen…“B“ läuft ja auch nach der Unterbrechung durch, aber „A“ ist so aufgebaut, dass ich aufgefordert werde einen Einfügepunkt für einen einzufügenden Block Eintippen muss…und diese Aufforderung kommt eben nicht und es wird auch kein Block eingefügt. 
UND wenn ich nach dem Programmablauf wieder „B“ starten will, sag er nur:
"B läuft"

WENN ich „A“  Starten will sagt er:
"A läuft"
"B läuft"
"wieder in A" "wieder in A"

??? WAS mach ich falsch

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

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 02. Apr. 2008 11:42    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 AutoCADuser 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von AutoCADuser:
... einen Einfügepunkt für einen einzufügenden Block Eintippen muss…und diese Aufforderung kommt eben nicht

Tja, dann ist wohl ein Fehler beim Code B - Einfügepunkt abfragen.
Wird das mit (Command -einfüge ...) gemacht, dann fehlt da vermutlich ein PAUSE Befehl, ansonsten würde ich mit (getpoint ...) arbeiten.
Aber ohne den fehlerhaften Code zu sehen, kann man nicht mehr sagen.


------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

AutoCADuser
Mitglied
Technischer Zeichner /Elektrotech., Energietech.


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

Beiträge: 48
Registriert: 29.10.2004

-Windows NT 4.0
-AutoCAD 2002 +SP1 +pi-cup 5.2
-WSCAD 4.0
-Normica
-HP 1050C
-Xerox 8828 / Falter / Scanner
XIB-1 / XWB-1 / YWC-1

erstellt am: 02. Apr. 2008 12:09    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 ist der code:...nicht wundern, ist meine erste Lisp...


(defun c:A ( / Basispunkt OldOsmode)

(setq OldOsmode (getvar "OSMODE"))
(setvar "OSMODE" 108)
(setvar "insbase" (getpoint "\nGib den Basispunkt an:"))

(setq Basispunkt (getvar "insbase"))

      (command "_insert" "DI_Einfügepunkt")
      (command Basispunkt)
      (command "1" "" "0")

(setvar "OSMODE" OldOsmode)
 
(prin1)
)

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

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 02. Apr. 2008 13:40    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 AutoCADuser 10 Unities + Antwort hilfreich

hi,
was willst du denn genau machen, deine Beschreibung ist recht dünne...

Deine command - Zeilen sehen komisch aus...
setvar insbase ... wofür

Hier mal ne lange Zeile mit "insert" - vllt. hilft es:
(command "_-insert" (strcat ".\\" curdir "\\" (nth (atoi cursel) items )) (getvar "viewctr") 1 1 0 "_move" (entlast)""(getpoint "\nEinfüge-Basispunkt")
      pause "_.rotate" (entlast)"" (getvar "LASTPOINT") pause)))

mfg Dorfy

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

AutoCADuser
Mitglied
Technischer Zeichner /Elektrotech., Energietech.


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

Beiträge: 48
Registriert: 29.10.2004

-Windows NT 4.0
-AutoCAD 2002 +SP1 +pi-cup 5.2
-WSCAD 4.0
-Normica
-HP 1050C
-Xerox 8828 / Falter / Scanner
XIB-1 / XWB-1 / YWC-1

erstellt am: 02. Apr. 2008 14: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

…wie gesagt, kann sein dass es komisch aussieht…es funktioniert aber genau so wie ich das Brauch.
Ich will damit im Grundriss den Basispunkt setzen und auf dieselbe Stelle einen Vorgezeichneten Block „DI_Einfügepunkt“ einfügen.  Diesen Routine und einige mehr (die auch selbstständig laufen und einzeln verwendet werden) will ich aus einer Haupt-Lisp (code siehe oben, lisp B) nach einander ausführen und zwischendurch paar commands ausführen.  Das Problem ist halt das die beschriebene  Lisp aus meiner Haupt-Lisp nicht ausgeführt wird.

Und wenn das funktionier soll er nochmal prüfen, ob auch alle Xrefs gelöst werden konnten und dies
durch eine AutoCAD-Meldung , oder irgendein graphisches Fenster berichten...ob „Fehler“ oder “alle Xrefs wurden gelöst“

gruß

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

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 02. Apr. 2008 14:54    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 AutoCADuser 10 Unities + Antwort hilfreich

Hi,
....

(defun c:AAA ( / OldOsmode)
(setq OldOsmode (getvar "OSMODE"))
(setvar "OSMODE" 108)
(setvar "insbase" (getpoint "\nGib den Basispunkt an:"))
      (command "_-insert" "ttt" (getvar "insbase") "1" "1" "0")
(setvar "OSMODE" OldOsmode) 
(princ)
)

so? musst den Block von ttt auf ... umbenennen.
mfg heiko

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 02. Apr. 2008 15: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 Nur für AutoCADuser 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Dorfy:
Hi,
....

(defun c:AAA ( / OldOsmode)
(setq OldOsmode (getvar "OSMODE"))
(setvar "OSMODE" 108)
(setvar "insbase" (getpoint "\nGib den Basispunkt an:"))
      (command "_-insert" "ttt" (getvar "insbase") "1" "1" "0")
(setvar "OSMODE" OldOsmode) 
(princ)
)

so? musst den Block von ttt auf ... umbenennen.
mfg heiko


Warum verschiebt ihr alle den INSBASE ?
Was hat der Basispunkt der Zeichnung mit dem Blockeinfügen zu tun?

entweder
(command "._insert" "IrgendeinBlockName" (getpoint) ...
oder
(command "._insert" "IrgendeinBlockName" PAUSE ...

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

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 02. Apr. 2008 16:03    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 AutoCADuser 10 Unities + Antwort hilfreich

@fuchsi

... zum Thema insbase - frag AutoCADuser...
hab mich das weiter oben auch schon gefragt
mfg heiko

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

AutoCADuser
Mitglied
Technischer Zeichner /Elektrotech., Energietech.


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

Beiträge: 48
Registriert: 29.10.2004

-Windows NT 4.0
-AutoCAD 2002 +SP1 +pi-cup 5.2
-WSCAD 4.0
-Normica
-HP 1050C
-Xerox 8828 / Falter / Scanner
XIB-1 / XWB-1 / YWC-1

erstellt am: 02. Apr. 2008 16: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

heiko, ist klar...is halt bissal kürzer. Aber der selbe Ablauf.
Wenn ich jetzt deinen code aus meiner  Haupt-Lisp starten will, funktionierts nicht.

code der Haupt-Lisp:

(defun c:B ( / )
(command "_.zoom" "_extents")
(command "_.xref" "_detach" "*")
(command "_.layer" "_unlock" "*" "")
(command "_audit" "j")
;-----------------Starten von A---------------------
(defun c:A ()
  (Print "A läuft")
  (c:B) ; hier aufruf von B
  (print "wieder in A")
)
(defun c:B ()
  (Print "B läuft")
)
;-----------------Ende von A-------------------------
(command "_.layer" "_color" "253" "*" "")
(prin1)
)


@fuchsi: es ist ok so, ich will ja den Basispunkt der Zeichnung neu definieren und einen Block an dieselbe stelle platzieren.

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

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 02. Apr. 2008 16:35    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 AutoCADuser 10 Unities + Antwort hilfreich

Äh...so? siehe wronzky
Code:
--------------------------------------------------------------------------------
(defun c:A ()
  (Print "A läuft")
  (c:B) ; hier aufruf von B
  (print "wieder in A")
  (c:C) ; hier aufruf von C
  (print "wieder in A")
  (c:FD) ; hier aufruf von FD
  (print "wieder in A")
)

(defun c:B ()
  (Print "B läuft")
)
(defun c:C ()
  (Print "C läuft")
)
(defun c:FD ()
  (Print "FD läuft")
)
--------------------------------------------------------------------------------

mfg heiko

[Diese Nachricht wurde von Dorfy am 02. Apr. 2008 editiert.]

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

AutoCADuser
Mitglied
Technischer Zeichner /Elektrotech., Energietech.


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

Beiträge: 48
Registriert: 29.10.2004

-Windows NT 4.0
-AutoCAD 2002 +SP1 +pi-cup 5.2
-WSCAD 4.0
-Normica
-HP 1050C
-Xerox 8828 / Falter / Scanner
XIB-1 / XWB-1 / YWC-1

erstellt am: 02. Apr. 2008 18:26    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

nee, sorry geht nicht..hat vielleicht einer nen Ausschnitt aus einem Cade...wo man sehen kann wie das aussieht wenns funktioniert...
ansonsten DANKE euch für die Hilfe!!

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

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 03. Apr. 2008 06:17    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 AutoCADuser 10 Unities + Antwort hilfreich

Morgen,
wie geht nicht? Was geht nicht?
Wenn du mehr mit lisp machen willst lege ich dir das
Kochbuch oder mapcars-Seite nahe.
Die Suche im Forum ist auch nicht zu verachten.
mfg Heiko

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 03. Apr. 2008 07: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 Nur für AutoCADuser 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von AutoCADuser:
nee, sorry geht nicht..hat vielleicht einer nen Ausschnitt aus einem Cade...wo man sehen kann wie das aussieht wenns funktioniert...
ansonsten DANKE euch für die Hilfe!!

Code:
(defun c:B ( / )
  (command "_.zoom" "_extents")
  (command "_.xref" "_detach" "*")
  (command "_.layer" "_unlock" "*" "")
  (command "_audit" "j")
  ;-----------------Starten von A---------------------
  (defun c:A ()
    (Print "A läuft")
    (c:B) ; hier aufruf von B
    (print "wieder in A")
  )
  (defun c:B ()
    (Print "B läuft")
  )
  ;-----------------Ende von A-------------------------
  (command "_.layer" "_color" "253" "*" "")
  (prin1)
)

jetzt habe ich mir da mal Dein Code beispiel angeschaut. Du machst hier die wildesten verschachtelten defuns, aber Dein C:a wird niemals aufgerufen, dafür aber dein C:B im Ablöauf vom C:B einfach neu definiert

Habs jetz mal so geschrieben, wir ich mir denke, wies gehört. (Ausser das es nicht geht, haben wir noch nicht viele Fehlermeldungen usw. von Dir erfahren)

Code:
(defun c:B ( / )
  (command "_.zoom" "_extents")
  (command "_.xref" "_detach" "*")
  (command "_.layer" "_unlock" "*" "")
  (c:A)
  (command "_audit" "j")
  (command "_.layer" "_color" "253" "*" "")
  (prin1)
)
(defun c:A ( / Basispunkt OldOsmode)
  (setq OldOsmode (getvar "OSMODE"))
  (setvar "OSMODE" 108)
  (setvar "insbase" (getpoint "\nGib den Basispunkt an:"))
  (setq Basispunkt (getvar "insbase"))
  (command "_insert" "DI_Einfügepunkt" Basispunkt "1" "" "0")
  (setvar "OSMODE" OldOsmode)
  (prin1)
)

Das verbiegen des Basispunktes ist mir zwar immer noch nicht klar (also das habe ich in mittlerweile 16 Jahren Programmierung rund um Acad noch niemals benötigt), aber wennst Du es so benötigtst, solls mir recht sein. Meine BASISpunkte waren immer penibelst auf 0,0,0

[Diese Nachricht wurde von fuchsi am 03. Apr. 2008 editiert.]

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 03. Apr. 2008 08:11    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 AutoCADuser 10 Unities + Antwort hilfreich

Hallo,
nur eine Anmerkung, ein INSBASE ungleich (0.0 0.0 0.0) hat schon so manchen Fehler verursacht, wenn ein georeferenzierter Block in eine ebenfalls georeferenziere Zeichnung eingefügt wird. Wenn das Gebäude dann abgesteckt ist, bevor der Fehler auffällt....

------------------
viele Grüße

Jörn

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

AutoCADuser
Mitglied
Technischer Zeichner /Elektrotech., Energietech.


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

Beiträge: 48
Registriert: 29.10.2004

-Windows NT 4.0
-AutoCAD 2002 +SP1 +pi-cup 5.2
-WSCAD 4.0
-Normica
-HP 1050C
-Xerox 8828 / Falter / Scanner
XIB-1 / XWB-1 / YWC-1

erstellt am: 03. Apr. 2008 11:23    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

@dorfy: bin bereits dabei, bin aber erst am bitteren Anfang.
@fuchsi: den wilden Teil mit den defuns hab ich doch von ober. Und wie die Routine reagiert, gab ich doch auch schon ober erwähnt.
Aber dann geht ja doch nicht was ich vor hatte. Den code von zwei Routinen in eine LSP-Datei zu kopieren schaffe ich
ja auch, aber mehrere LSP-Dateien hintereinander ablaufen zu lassen, ohne dass ich die
codes jeder einzelnen LSP-Datei in eine LSP-Datei zusammenkopiere geht wahrscheinlich doch nicht...aber trotz dem, DANKE!!

@Jörn: Danke für den Tipp mit INSBASE, hab nicht gedacht das es Ärger machen kann.
gruß

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

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 03. Apr. 2008 11:36    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 AutoCADuser 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von AutoCADuser:
[i@fuchsi: den wilden Teil mit den defuns hab ich doch von ober. Und wie die Routine reagiert, gab ich doch auch schon ober erwähnt.
Aber dann geht ja doch nicht was ich vor hatte. Den code von zwei Routinen in eine LSP-Datei zu kopieren schaffe ich
ja auch, aber mehrere LSP-Dateien hintereinander ablaufen zu lassen, ohne dass ich die
codes jeder einzelnen LSP-Datei in eine LSP-Datei zusammenkopiere geht wahrscheinlich doch nicht...aber trotz dem, DANKE!![/i]

Zum Verständniss
Eine Lispdatei ist was anderes als ein Lispprogramm.
Eine Lispdatei enthält eine odere mehrere lispprogramme.

So wie in meinem letzten Posting. Ein Lispprogramm beginnt mit (defun und endet mit der entsprechenden Klammer zu.
Mehrere dieser Programme können in einer Datei sein, und werden dann alle beim laden dieser Datei geladen.


Nochmal zu meinem Posting

Code:
(defun c:B ( / )
  (command "_.zoom" "_extents")
  (command "_.xref" "_detach" "*")
  (command "_.layer" "_unlock" "*" "")
  (c:A)
  (command "_audit" "j")
  (command "_.layer" "_color" "253" "*" "")
  (prin1)
)
(defun c:A ( / Basispunkt OldOsmode)
  (setq OldOsmode (getvar "OSMODE"))
  (setvar "OSMODE" 108)
  (setvar "insbase" (getpoint "\nGib den Basispunkt an:"))
  (setq Basispunkt (getvar "insbase"))
  (command "_insert" "DI_Einfügepunkt" Basispunkt "1" "" "0")
  (setvar "OSMODE" OldOsmode)
  (prin1)
)

Das sind jetzt 2 Lispprogramme (c:b) und (c:a). diese stehen praktischerweise in einer Lispdatei (aber nicht notwendigerweise, Du musst nur gewährleisten, dass beide Dateien geladen sind). Beim Laden dieser Datei(en) werden diese beiden Programme definiert (aber noch nicht ausgeführt)

Startest du jetzt das programm (c:b) dann werden nacheinander folgende Befehle ausgeführt.

(Command zoom ..
(Command xref ..
(Command layer ..
;-> Aufruf von Programm (c:a)
-> (setq Oldsosmode ..
-> (setvar "osmode" ..
-> (setvar "insbase" ..
-> (setq basispunkt ..
-> (command insert ...
-> (setvar "OSMODE" ..
-> (prin1)
; weiter im Programm (c:b)
(Command audit ..
(Command layer ..
(prin1)

das war Doch was Du wolltest. ich verstehe immer noch nicht Dein problem.

------------------
   
Ing. Anton Fuchs
WWW.FFZELL.AT.TC

[Diese Nachricht wurde von fuchsi am 03. Apr. 2008 editiert.]

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

AutoCADuser
Mitglied
Technischer Zeichner /Elektrotech., Energietech.


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

Beiträge: 48
Registriert: 29.10.2004

-Windows NT 4.0
-AutoCAD 2002 +SP1 +pi-cup 5.2
-WSCAD 4.0
-Normica
-HP 1050C
-Xerox 8828 / Falter / Scanner
XIB-1 / XWB-1 / YWC-1

erstellt am: 03. Apr. 2008 16:05    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

Ok, vielleicht war das missverständlich gemein von mir, sorry.
…also mehrere Lispdateien aus einer HAUPT-Lispdatei starten.

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

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 03. Apr. 2008 16: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 AutoCADuser 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von AutoCADuser:
Ok, vielleicht war das missverständlich gemein von mir, sorry.
…also mehrere Lispdateien aus einer HAUPT-Lispdatei starten.

Sorry, aber das ist genauso nicht verständlich.
Eine Lispdatei ist eine ganz gewähnliche physikalische Textdatei (die irgendwo auf deiner Festplatte herumliegt), wo halt zufällig die richtige Anzahl von Klammer auf und zu und ein paar Lisp-Befehlchen drinsteht.

Die kann man nicht starten sondern nur laden,Starten kann man das(die) darin definierte LISP-Programm(e)

Ansonsten macht doch mein Code genau das was Du machen willst. Aus einem Hauptprogramm (in dem Fall das programm c:b wird zwischendrin das Programm c:a aufgerufen. Nach dessen Beendigung gehts zurück zum Hauptprogramm c:b.

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

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

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

spider_dd
Mitglied



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

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 03. Apr. 2008 16:42    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 AutoCADuser 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von AutoCADuser:
....mehrere LSP-Dateien hintereinander ablaufen zu lassen, ohne dass ich die codes jeder einzelnen LSP-Datei in eine LSP-Datei zusammenkopiere geht wahrscheinlich doch nicht...

doch geht, Du musst nur die Datei die dan auszuführenden Code enthält vorher laden,

Code:

z. B. so: Datei "MeineLisp.lsp" enthält auszuführendes Prog TuDies (mit (defun c:TuDies (...)) definiert:

(if C:TuDies ; Pruefung ob Funktion TuDies schon vorhanden (geladen) ist
  (C:TuDies) ; wenn ja, dann ausführen
  (progn (load "MeineLisp.lsp") (C:TuDies)) ; wenn nein, erst laden, dann ausführen
)  ; Ende von if



Gruß
Thomas

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

AutoCADuser
Mitglied
Technischer Zeichner /Elektrotech., Energietech.


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

Beiträge: 48
Registriert: 29.10.2004

-Windows NT 4.0
-AutoCAD 2002 +SP1 +pi-cup 5.2
-WSCAD 4.0
-Normica
-HP 1050C
-Xerox 8828 / Falter / Scanner
XIB-1 / XWB-1 / YWC-1

erstellt am: 04. Apr. 2008 09:23    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

super, es funktioniert.
Daumen hoch...DANKE an Thomas und an alle anderen auch...

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

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 04. Apr. 2008 10: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 Nur für AutoCADuser 10 Unities + Antwort hilfreich

Ach Du dickes Ei.
Da haben wir aber tatsächlich aneinender vorbeigeredet.
Ist es Dir wirklich nur darum gegangen, wie man Lispprogramme, die in ANDEREN Dateien stehen, einbinden kann. Eigentlich gehts ja dann nur übers Laden verschiedenen Lispdatein.

Schau dir mal in der Hilfe das Thema AcadDoc.lsp an.
Ich würde hier einfach alle Deine Lispprogramme zum Laden eintragen, dann brauchst Du Dir im Programmablauf darum keine Gedanken machen

AcadDoc.lsp (steht im Support-Ordner)
(load "MyLispDatei1.lsp nil)
(load "MyLispDatei2.lsp nil)
(load "MyLispDatei3.lsp nil)
(load "MyLispDatei4.lsp nil)

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

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

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