FastFiber

Automatisch tabbladen plotten via LISP

Gestart door zone2000, wo 28 05 2008, 09:11:13

Vorige topic - Volgende topic

zone2000

Hallo,

Ik heb een LISP gemaakt die alle tabbladen in een tekening uit laat printen. Maar ik krijg een aantal dingen niet voor elkaar.
De LISP is nogal omslachtig. Per plot heb ik wel 10 LISP regels nodig. Maar het grootste probleem is nog dat deze lisp de naam van de layout nodig heeft voordat deze geplot kan worden. Kan ik ook een LISP krijgen die automatisch alle tabbladen uitprint ongeacht de naam van het tabblad? Daarnaast is deze LISP erg traag omdat de LISP gaat bladeren in de tabbladen tijdens het plotten. Verder zit ik nog met het probleem dat ik 2 afdrukken van 1 tabblad wil hebben. Kan ik dit ook in de LISP invullen?

Alvast bedankt.

Hieronder is een deel van de code, omdat deze code gemaakt is voor een bestand met 63 tabbladen heb ik maar een stukje gegeven. De rest van de code is een gewoon een herhaling hiervan.

(defun c:jpg (/ pt1 pt2)

  (command "-plot"         "y"       "1"
      "publishtoweb jpg.pc3"
      "Previous paper size  (3507.00 x 2480.00 pixels)"
               ;"Sun Hi-Res (1600.00 x 1280.00 Pixels)"
      "L"            "n"       "e"
      "Fit"         "C"       "n"
      "."            "y"       "n"
      "n"            "n"       ""
      "n"            "y"
     )
  (command "-plot"          "y"         "1 A"
      "publishtoweb jpg.pc3"
      "Previous paper size  (3507.00 x 2480.00 pixels)"
               ;"Sun Hi-Res (1600.00 x 1280.00 Pixels)"
      "L"             "n"         "e"
      "Fit"          "C"         "n"
      "."             "y"         "n"
      "n"             "n"         ""
      "n"             "y"
     )
  (command "-plot"          "y"         "1 B"
      "publishtoweb jpg.pc3"
      "Previous paper size  (3507.00 x 2480.00 pixels)"
               ;"Sun Hi-Res (1600.00 x 1280.00 Pixels)"
      "L"             "n"         "e"
      "Fit"          "C"         "n"
      "."             "y"         "n"
      "n"             "n"         ""
      "n"             "y"
     )
  (command "-plot"          "y"         "1 C"
      "publishtoweb jpg.pc3"
      "Previous paper size  (3507.00 x 2480.00 pixels)"
               ;"Sun Hi-Res (1600.00 x 1280.00 Pixels)"
      "L"             "n"         "e"
      "Fit"          "C"         "n"
      "."             "y"         "n"
      "n"             "n"         ""
      "n"             "y"
     )



EddyBeerke

Ik kreeg afgelopen weken ook de vraag of er dus een soort batch-plot is voor meerdere layouts.
De vraag is dus wie helpt ons????
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

DIJKHUIS

Als je 1 maal een plotinstellingen goed zet en deze instellingen opslaat. Dan kun je volgens mij alle layouts selecteren en met rechter muisknop "publish" doen. Binnen dat schermpje selecteer je de zo juist opgeslagen instelling. Zo ben je met een zeer beperkt aantal muisklikken klaar.

Verder heb ik voor een ander routine ook de namen van de tabbladen nodig. Dan wordt door de gebruiker zelf het tabblad geselecteerd. Als je een beetje handig bent dan kun je de onderstaande code wel aanpassen voor je eigen routine.

  (if (= (getvar "ctab") "Model")
    (progn
      (alert "\nLET OP : commando uitvoeren in Paperspace")
      (setq lo_len (length (layoutlist)))
      (setq  x lo_len)
      (while (> x 0)
        (princ (strcat "\n " (itoa x) ":"))
        (setq x (1- x))
        (princ (nth x (layoutlist)))
      )
      (if (/= lo_len 1)
        (progn
          (textscr)
          (setq rev_lo (getstring T "\n selecteer een layoutnummer uit bovenstaande lijst : "))
        )
        (setq rev_lo "1") ;er is maar 1 layout dus dan gaan we daar heen
      )
      (command "layout" "set" (nth (1- (atoi rev_lo)) (layoutlist)))
    )
  )


Michel

Joop

Citaat van: EddyBeerke op wo 28 05 2008, 10:32:13
Ik kreeg afgelopen weken ook de vraag of er dus een soort batch-plot is voor meerdere layouts.
De vraag is dus wie helpt ons????

Kijk eens naar mijn lieve BaBe. 8)

http://www.cadsite.be/tips/BaBe.zip
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

EddyBeerke

Citaat van: Joop op wo 28 05 2008, 18:15:29

Kijk eens naar mijn lieve BaBe. 8)

http://www.cadsite.be/tips/BaBe.zip

Die gebruik ik ook, maar het gaat om het plotten/printen van de layouttabs.
Ik ben al wat aan 't stoeien geweest en dit is wat ik ervan gemaakt heb:

(defun c:plotlayouts ()

;;;(if (= (getvar "ctab") "Model")
    ;;;(progn
      ;;;(alert "\nLET OP : commando uitvoeren in Paperspace")
      (setq lo_len (length (layoutlist)))
      (setq  x lo_len)
      (while (> x 0)
        (princ (strcat "\n " (itoa x) ":"))
        (setq x (1- x))
        (princ (nth x (layoutlist)))
   (command "layout" "set" (nth x (layoutlist)))
   (plotten)

       )
;;;      (if (/= lo_len 1)
;;;        (progn
;;;          (textscr)
;;;          (setq rev_lo (getstring T "\n selecteer een layoutnummer uit bovenstaande lijst : "))
;;;        )
;;;        (setq rev_lo "1") ;er is maar 1 layout dus dan gaan we daar heen
;;;     
;;;         (command "layout" "set" (nth (1- (atoi rev_lo)) (layoutlist)))
;;;            (plotten)
;;;         )
    ;;; )
  ;;; )

(defun plotten()
;hier moet het plot/print commando komen!
)
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

HofCAD

Citaat van: DIJKHUIS op wo 28 05 2008, 13:34:01
Als je 1 maal een plotinstellingen goed zet en deze instellingen opslaat. Dan kun je volgens mij alle layouts selecteren en met rechter muisknop "publish" doen. Binnen dat schermpje selecteer je de zo juist opgeslagen instelling. Zo ben je met een zeer beperkt aantal muisklikken klaar.

Verder heb ik voor een ander routine ook de namen van de tabbladen nodig. Dan wordt door de gebruiker zelf het tabblad geselecteerd. Als je een beetje handig bent dan kun je de onderstaande code wel aanpassen voor je eigen routine.

  (if (= (getvar "ctab") "Model")
    (progn
      (alert "\nLET OP : commando uitvoeren in Paperspace")
      (setq lo_len (length (layoutlist)))
      (setq  x lo_len)
      (while (> x 0)
        (princ (strcat "\n " (itoa x) ":"))
        (setq x (1- x))
        (princ (nth x (layoutlist)))
      )
      (if (/= lo_len 1)
        (progn
          (textscr)
          (setq rev_lo (getstring T "\n selecteer een layoutnummer uit bovenstaande lijst : "))
        )
        (setq rev_lo "1") ;er is maar 1 layout dus dan gaan we daar heen
      )
      (command "layout" "set" (nth (1- (atoi rev_lo)) (layoutlist)))
    )
  )


Michel

Beste Michel,

Bedoel je niet:
(if (= (getvar "ctab") "Model")
    (progn
      (alert "\nLET OP : commando uitvoeren in Paperspace"))
    (progn
      (setq lo_len (length (layoutlist)))
      (setq  x lo_len)
      (while (> x 0)
        (princ (strcat "\n " (itoa x) ":"))
        (setq x (1- x))
        (princ (nth x (layoutlist)))
      )
      (if (/= lo_len 1)
        (progn
          (textscr)
          (setq rev_lo (getstring T "\n selecteer een layoutnummer uit bovenstaande lijst : "))
        )
        (setq rev_lo "1") ;er is maar 1 layout dus dan gaan we daar heen
      )
      (command "layout" "set" (nth (1- (atoi rev_lo)) (layoutlist)))
    )
  )


Met vriendelijke groet, HofCAD CSI
ACADcadabra

FastFiber