Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  AccoreConsole nimmt kein Lisp Befehle

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:  AccoreConsole nimmt kein Lisp Befehle (1360 mal gelesen)
cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 02. Okt. 2017 15: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

Hallo!

Wollte hier mal nachfragen, warum .net in der AccoreConsole aufgerufen werden kann, jedoch nicht Lisp befehle.
Ich bilde mir ein, dass das mal ging ? Teste ich es in Acad 2017 kann ich mit Lisp nix ausrichten.

Hier mal zu selber ausprobieren eine leere Zeichnung öffnen

Code:

cmdConsole starten!
Suchpfad der accoreConsole einstellen
cd C:\Program Files\Autodesk\AutoCAD 2017

Anzeige: C:\Program Files\Autodesk\AutoCAD 2017>

Öffne eine Zeichnung H:\Drawing1.dwg:
accoreconsole.exe /i "H:\Drawing1.dwg"



Ich musste mir ziehmlich umständlich etwas schnitzen, dass mittels bat-Datei Ausführung alle Zeichnungen und beinhaltende Layouts als Pdf ausdruckt.


------------------
Gruss Dirk
Blog

[Diese Nachricht wurde von cadplayer am 02. Okt. 2017 editiert.]

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 02. Okt. 2017 15:57    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 cadplayer 10 Unities + Antwort hilfreich

Da das Log in Textform nicht vorliegt und ich nur kurz auf das "rasendes Video" gesehen habe:
Hatten wir das Thema nicht schon mal?

https://ww3.cad.de/foren/ubb/Forum145/HTML/004461.shtml

Entgegen dem Titel nimmt die Console ja sehr wohl den Lispbefehl "command" an,
es werden ja sogar die PDF erstellt.
Nach dieser Richtigstellung sind wir nun also beim eigentlichen Problem:
Die CoreConsole findet die XRefs in deinen Dateien nicht und da bin
ich wieder in der Richtung wie in dem Link oben unterwegs.

Grundsätzlich gibt es da keine (Lisp)Probleme,
es gibt in eurer Konstellation (ggf. mit in Kombination mit dem Aufruf durch diese BAT-Datei)
ein Problem mit den "Sonderzeichen" (dazu zähle ich jetzt mal alle Sonderzeichen im IT-Sinn
inkl. aller Zeichen denen die Amerikaner nicht mächtig sind).

Zu 99% würde ich darauf tippen: Nehme mal eine DWGs samt Pfad in den weder in Master noch XRef-DWG
diese Zeichen enthalten sind, funktionierts dann?

Nun warte ich erst mal das Feedback ab  

Sebastian

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 02. Okt. 2017 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

Hi!

Vielleicht blödes Beispiel mit dem Video - es soll lediglich zeigen, dass es funktioniert auf diese Art pdf´s zu erzeugen.
Das Programm funktioniert einwandrei, spielt aber keine Rolle in meinem Problem.

Ich war nur verduzt als ich eine Lisp funktion in der Console aufgerufen habe, dass nix passierte.
Daher einfach mal in die geöffnete Zeichnung in der accoreconsole ein (setq i 1) eingeben und mit !i abfragen, da wird man sehen, dass Lisp in der Console nicht arbeitet. Ruft man jedoch eine Zeile mit command auf, so ist das keine Lisp funktion an sich, sondern nur ein Befehlsaufruf und der funktioniert problemlos.
Zum Beispiel dieser Aufruf funktioniert in Autocad jedoch nicht in der AccoreConsole

Code:

(foreach layoutname (layoutlist)
  (command "._layout" "set" layoutname)
  (command "_plot"
          "_y"
  layoutname
  "DWG To PDF.pc3"
  "ISO full bleed A1 (841.00 x 594.00 MM)"
  "Millimeters"
  "Landscape"
  "No"
  "_e"
  "Fit"
  "_c"
  "_y"
  "A1.ctb"
  "_y"
  "_n"
  "_n"
  "_n"
  (strcat "c:\\temp\\" (substr (setq str (getvar "dwgname")) 1 (- (strlen str) 4)) "-" layoutname ".pdf")
  "_n"
  "_y"
  )
  )


------------------
Gruss Dirk
Blog

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 02. Okt. 2017 16:37    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 cadplayer 10 Unities + Antwort hilfreich

Nach nochmaligem lesen bin ich über den Satz gestolpert:
"Ich musste mir ziehmlich umständlich etwas schnitzen, dass mittels bat-Datei
Ausführung alle Zeichnungen und beinhaltende Layouts als Pdf ausdruckt."

und nach erneutem (kurzem) Blick ins Video nun meine ganz doofe Frage:
Du zeigst uns im Video jetzt aber nicht den funktionierenden Fall, oder? (mit deiner .net-Plot Routine)

Falls doch:
Dann bitte ich dich gerne noch einmal darum bei den eigenen Problemen
so gut wie möglich den Fall zu schildern und auch Dateien und Links
kurz zu beschreiben.

Video: Mit .net und "sendcommand" läufts, siehe Video. <Link>

Dann allerdings hätten wir kaum Anhaltspunkte zu dem was du bei der anderen Variante durchführst.
Keine BAT, keine SCR und falls darin noch eine LSP aufgerufen wird, dann auch die nicht.

Über den einen Satz bin ich aus folgendem Grund beim 2.Mal lesen gestolpert:
Wie schaffst du es denn in der nicht-.net-Variante alle Layoutnamen zu übergeben?
Liegen dir die entsprechenden Layoutnamen bereits vor (stehen "dumm" in der Script-datei drin),
oder versuchst du die Layout(namen) mit Lisp zu ermitteln?

Falls letzteres: Wie sieht dein Code aus um Layoutnamen zu ermittel?

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 02. Okt. 2017 16:38    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 cadplayer 10 Unities + Antwort hilfreich

Da haben sich unsere Antworten überschnitten und du hast direkt die Lösung des Problems gepostet:
(layoutlist) steht dir in der CC nicht zur Verfügung, dein Code kann also nicht funktionieren in der
Console!

Teste einfach ob die Funktion definiert ist, die Antwort müßte "nil" sein.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 02. Okt. 2017 16:45    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

Man könnte das Lisp auch in ein Script packen und wie folgt in als Batch ausführen - macht ebenfalls nix!
Code:
FOR %%G in (*.DWG) DO "C:\Program Files\Autodesk\AutoCAD 2017\accoreconsole.exe" /i "%%G" /s "h:\BatchPlot\PlotAll.scr" /l en-US  /b


Meine Lösung darauf.
eine net-Applikation im Script starten, die alle Layouts liest und ausdruckt.

------------------
Gruss Dirk
Blog

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 02. Okt. 2017 16: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 cadplayer 10 Unities + Antwort hilfreich

wie oben geschrieben: Das Lisp kann nicht funktionieren da die Funktion LAYOUTLIST
nicht definiert ist (es sei denn du hast selbst eine Funktion mit dem Namen definiert).

In der ACC ist der Funktionsumfang von AutoCAD-Befehlen und auch von Lispfunktionen her
eingeschränkt, LAYOUTLIST gehört dazu, ebenso wie sonstige ActiveX-Funktionen.

Starte doch mal eine Datei mit dem Scriptinhalt: (layoutlist)
Und dann schau dir dann das Log dazu an, es müßte "; Fehler: no function definition:" ausgegeben werden.
Du mußt also auf anderem Weg die Layoutnamen ermitteln, zB. aus dem Dictionary "ACAD_LAYOUT" auslesen.

Über die Lispfunktion atoms-family[F1] kannst du dir auch eine komplette Liste der Verfügbaren Lispfunktionen ausgeben lassen.
Wie in AutoCAD auch, nur diese Liste wird deutlich kürzer sein.


------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 02. Okt. 2017 17: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

Besten Dank, das hatte ich auch bemerkt - einfaches setq funktioniert aber auch nicht.
Der Richtigkeit wegen hier eine funktionierende Vorführung

------------------
Gruss Dirk
Blog

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 02. Okt. 2017 17: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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
das hatte ich auch bemerkt - einfaches setq funktioniert aber auch nicht

Ein einfaches (setq MyVar "123") wird mit ; Fehler: no function definition: setq quitiert ?

Da es die einfachste Antwort bzw. Lösung zu dem Problem ist gehe ich zunächst von einem Testfehler deinerseits aus was das betrifft.

Zeige bitte das Script(und falls eingesetzt die *.lsp Datei) und das LOG zum Ablauf dazu.
EDIT: Also einfach nur ein (setq MyVar "123") in die Befehlszeile senden.


------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 03. Okt. 2017 08:25    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

Danke für deine wertvollen Hinweise.
Wie du sagst Lisp ist mit gewissen Einschränkungen in der AccoreConsole einsetzbar.
Das script, das mittels der Batchanweisung auf alle Zeichnungen im gespeicherten Pfad ausplottet, sieht so aus:
Code:

(defun getLayouts( / ed layouts)
  (setq ed (entget (cdr (assoc -1 (dictsearch (namedobjdict) "ACAD_LAYOUT")))))
  (setq layouts (mapcar (function (lambda(x)(if (= (car x) 3) (cdr x)))) ed))
  (vl-remove "Model" (vl-remove 'nil layouts))
  )

(foreach layoutname (getLayouts)
  (command "._layout" "set" layoutname)
  (command "_plot"
          "_y"
  layoutname
  "DWG To PDF.pc3"
  "ISO full bleed A1 (841.00 x 594.00 MM)"
  "Millimeters"
  "Landscape"
  "No"
  "_e"
  "Fit"
  "_c"
  "_y"
  "A1.ctb"
  "_y"
  "_n"
  "_n"
  "_n"
  (strcat (getvar "dwgprefix") (substr (setq str (getvar "dwgname")) 1 (- (strlen str) 4)) "-" layoutname ".pdf")
  "_n"
  "_y"
  )
  )


------------------
Gruss Dirk
Blog

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 03. Okt. 2017 12:07    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 cadplayer 10 Unities + Antwort hilfreich

Ohne es zu am PC anzusehen:
So wird es in den vieln Fällen wie gewünscht funktionieren, gut.

Aber noch mal zu deinen Anmerkungen oben zu command und setq:

Deine Erklärung zu command ist zwar nett, aber falsch.
Man kann damit Eingaben in die Befehlszeile senden und darüber dann also auch Autocad-Befehle fernsteuern,
aber command selbst ist eine Lispfunktion, ebenso wie lsh setq oder defun,
da ist nichts besonderes an command.

Setq
Immer wieder das gleiche Lied und oben ging ich auch hier schon mal darauf ein.
Poste <was auch immer> Probleme bereitet, dann ersparst fu den potentiellen Helfern
viel unnötigen Aufwand und Zeit. Dejavue

Also poste das Beispiel.scr welches du wegen setq durchgeführt hast,
zusammen mit dem logfile kann man dann auch in diesem Punkt leicht
aufzeigen an welcher Stelle der Fehler steckt.

Wobei der Test den du zu setq machen solltest kaum Spielraum für Fehler lässt,
ausser "nichts" in die Befehlszeile senden, was man ja sehen würde.


------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 03. Okt. 2017 13:43    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 nochmal!

Du hast völlig recht und ich war in der falschen Annahme, dass setq nicht funktioniert.

Mein test in der AccoreConsole lief so ab, dass ich (setq i 0) eingab und dann mittels !i eine Abfrage der variable unternahm.
Da kam nix zurück und ich war in der Annahme, das die variable i nicht gespeichert wurde.

Es muss aber richtigerweise (princ i) heissen. Dann wird der Wert 0 in der Console zurückgegeben.
Also um das Thema hier abzuschliessen, meine eingehende Vermutung war falsch und wurde hiermit wiederlegt.

------------------
Gruss Dirk
Blog

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