(in-package :custom) (use-package '(:OLI )) (sd-defdialog 'bfe-Plot :dialog-title '(sd-multi-lang-string "Plot" :german "Drucken") :after-initialization '(progn (rahmen-identifizieren) (if (not(or (string= blatt ".sfeld_rahmen_A4") (string= blatt ".sfeld_rahmen_A3") (string= blatt ".sfeld_rahmen_A2") (string= blatt ".sfeld_rahmen_A1") (string= blatt ".sfeld_rahmen_A0") ); end or ); end not (progn (sd-display-message (format nil "Blattformat nicht gefunden!~%Bitte manuell auswählen") :title "Blattformat" :push "Weiter") (setf blatt ".sfeld_rahmen_A4") );end Fehlermeldung kein Blattformat (setf blatt "Automatisch") ); end if );end progn :variables '( (blatt :range (("Automatisch" :label "Automatisch") (".sfeld_rahmen_A0" :label "A0") (".sfeld_rahmen_A1" :label "A1") (".sfeld_rahmen_A2" :label "A2") (".sfeld_rahmen_A3" :label "A3") (".sfeld_rahmen_A4" :label "A4") ) :prompt-text "Blattformat auswählen" :title "Blattformat" :initial-value "Automatisch" ) (ausr :range (("Standard" :label "Standard") (:portrait :label "Hoch") (:landscape :label "Quer")) :title (sd-multi-lang-string "orientation" :german "Ausrichtung") :prompt-text (sd-multi-lang-string "Ausrichtung" :german "Blattausrichtung definieren") :initial-value "Standard" ) (copies :value-type :positive-number :prompt-text "Anzahl der Kopien auswaehlen" :title "Kopien" :proposals (1 2 3 4 5 6 7 8 9) :auto-add-proposal nil :persistent-proposals nil :initial-value 1 ) (kasten_ein :value-type :boolean :toggle-type :grouped-toggle :title (sd-multi-lang-string "print box" :german "Kasten") :prompt-text (sd-multi-lang-string "print box" :german "Kasten drucken") :initial-value nil :next-variable (if (equal kasten_ein t) 'point_one) ) (einpassen :value-type :boolean :toggle-type :grouped-toggle :title (sd-multi-lang-string "fit" :german "Einpassen") :prompt-text (sd-multi-lang-string "fit" :german "Zeichnung automatisch einpassen") :initial-value nil ) (parameters :title (sd-multi-lang-string "Additional A3" :german "Zusätzliches A3") :expand-shrink (zusatz zucopies)) (zusatz :value-type :boolean :toggle-type :wide-toggle :title (sd-multi-lang-string "DINA3" :german "zusätzl. eingep. DINA3 drucken") :prompt-text (sd-multi-lang-string "zusätzliches eingepasstes DINA3 drucken" :german "zusätzliches eingepasstes DINA3 drucken") :initial-value nil ) (zucopies :value-type :number :prompt-text "Anzahl der zusätzlichen Kopien auswaehlen" :title "Kopien" :proposals (1 2 3 4) :auto-add-proposal nil :persistent-proposals nil :initial-value 1 :after-input (setf zusatz t) ) (point_one :value-type :docupntcnp :toggle-type :invisible :title "Erste Ecke" :prompt-text "Erste Ecke des rechteckigen Plot-Ausgabebereich angeben" :next-variable 'point_two ) (point_two :value-type :docupntcnp :toggle-type :invisible :title "Zweite Ecke" :prompt-text "Zweite Ecke des rechteckigen Plot-Ausgabebereich angeben" :after-input (if (and (equal kasten_ein t) (string= blatt "Automatisch")) (progn (sd-display-message (format nil "Achtung!!!~%Blattformat wird auf A4 geändert") :title "Blattformat" :push "Weiter") (setf blatt ".sfeld_rahmen_A4"))) ) ) ;; end variables :local-functions '( (rahmen-identifizieren () (when (string= blatt "Automatisch") (defun get-frame-name () (let ((sht-struct (oli:sd-am-inq-sheet (oli:sd-am-inq-curr-sheet)))) (oli:sd-am-inq-name (sd-am-sheet-struct-frame sht-struct)))) (setf blatt (get-frame-name)) (setf Check_einp blatt) );End when );End rahmen-identifizieren );End local-functions :ok-action '(let () (rahmen-identifizieren) ;;; Abfrage Einpassen notwendig Ja/Nein (if (and (not (string= blatt Check_einp)) (equal einpassen nil)) (progn (setf input (sd-display-warning "Soll der Druck eingepasst werden?" :title "Druck einpassen" :push-1 "Ja" :push-2 "Nein" :severity :low)) (if (eql input :yes) (setf einpassen t)) );End Progn ) ;end if ;;; Falls Blattvormat Standard (when (string= ausr "Standard") (setf ausr (if (string= blatt ".sfeld_rahmen_A4") :portrait :landscape)) ) ;;; Fehlermeldung Druckbereich nicht angegeben (if (and (equal kasten_ein t) (equal point_two nil)) (sd-display-message (format nil "Achtung,~%der Druckbereich wurde nicht~%über zwei Punkte festgelegt!!!~%") :title "Druckbereich" :push "Weiter") ;then Pfad ;;; Drucken ;else pfad (progn (cond ((string= blatt ".sfeld_rahmen_A4") (setf blatt :a4)) ((string= blatt ".sfeld_rahmen_A3") (setf blatt :a3)) ((string= blatt ".sfeld_rahmen_A2") (setf blatt :a2)) ((string= blatt ".sfeld_rahmen_A1") (setf blatt :a1)) ((string= blatt ".sfeld_rahmen_A0") (setf blatt :a0)) ) ;end cond ;;; Druck auslösen (when (equal einpassen nil) (if (equal kasten_ein nil) (am_plot_ex :Plot_style blatt :scale :factor :value 1 :ORIENTATION ausr :POSITION :CENTER :COPIES copies :output_sheet :plot ) ;end am_plot_ex (am_plot_ex :Plot_style blatt :scale :factor :value 1 :ORIENTATION ausr :POSITION :CENTER :COPIES copies :output_box :output_pick point_one point_two :plot ) ;end am_plot_ex ) ) (when (equal einpassen t) (if (equal kasten_ein nil) (am_plot_ex :Plot_style blatt :scale :fit :ORIENTATION ausr :POSITION :CENTER :COPIES copies :output_sheet :plot ) ;end am_plot_ex (am_plot_ex :Plot_style blatt :scale :fit :ORIENTATION ausr :POSITION :CENTER :COPIES copies :output_box :output_pick point_one point_two :plot ) ;end am_plot_ex ) ) ;;; zusetzliches A3 (if (and (equal zusatz t) (equal kasten_ein nil)) (am_plot_ex :Plot_style :a3 :scale :fit :ORIENTATION :landscape :POSITION :CENTER :COPIES zucopies :output_sheet :plot ) ;end am_plot_ex ); end if ) ;end progn else ) ;end if );end Let / Ok action ) ;; end dialog