(in-package :custom) (use-package :oli) (sd-defdialog 'bfe-Plot2 :toolbox-button t :dialog-title '(sd-multi-lang-string "create PDF" :german "PDF erstellen") :after-initialization '(rahmen-identifizieren) :variables '( (file :value-type :directory :Prompt-text (sd-multi-lang-string "Specify storage path" :german "Ordner zum Speichern angeben") :title (sd-multi-lang-string "path" :german "Ordner") :initial-value (sd-get-current-working-directory) :after-input (sd-set-current-working-directory file) ) (blatt :range ((:pdf_a0 :label "A0") (:pdf_a1 :label "A1") (:pdf_a2 :label "A2") (:pdf_a3 :label "A3") (:pdf_a4 :label "A4")) :prompt-text (sd-multi-lang-string "Select sheet format" :german "Blattformat auswählen") :title (sd-multi-lang-string "sheet format" :german "Blattformat") :after-input (setq einpassen t) ) (ausr :range ((:portrait :label (sd-multi-lang-string "portrait" :german "Hoch")) (:landscape :label (sd-multi-lang-string "landscape" :german "Quer"))) :title (sd-multi-lang-string "orientation" :german "Ausrichtung") :prompt-text (sd-multi-lang-string "Select orientation" :german "Blattausrichtung definieren") :after-input (setq einpassen t) ) ("-") (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 (when kasten_ein 'point_one) :after-input (when kasten_ein (sd-set-variable-status 'file :enable nil) (sd-set-variable-status 'blatt :enable nil) (sd-set-variable-status 'ausr :enable nil) (sd-set-variable-status 'einpassen :enable nil) (sd-set-variable-status 'anzeigen :enable nil) (sd-set-variable-status 'kasten_ein :enable nil)) ) (einpassen :value-type :boolean :toggle-type :grouped-toggle :title (sd-multi-lang-string "fit" :german "Einpassen") :prompt-text (sd-multi-lang-string "fitting in" :german "Zeichnung einpassen") :initial-value nil ) (anzeigen :value-type :boolean :toggle-type :grouped-toggle :title (sd-multi-lang-string "view PDF" :german "PDF anzeigen") :prompt-text (sd-multi-lang-string "view PDF" :german "PDF anzeigen") :initial-value nil ) (point_one :value-type :docupntcnp :toggle-type :invisible :title (sd-multi-lang-string "first corner" :german "Erste Ecke") :prompt-text (sd-multi-lang-string "Select first corner" :german "Erste Ecke des rechteckigen Plot-Ausgabebereich angeben") :next-variable 'point_two ) (point_two :value-type :docupntcnp :toggle-type :invisible :title "Zweite Ecke" :prompt-text (sd-multi-lang-string "Select second corner" :german "Zweite Ecke des rechteckigen Plot-Ausgabebereich angeben") :after-input (progn (sd-set-variable-status 'file :enable t) (sd-set-variable-status 'blatt :enable t) (sd-set-variable-status 'ausr :enable t) (sd-set-variable-status 'einpassen :enable t) (sd-set-variable-status 'anzeigen :enable t) (sd-set-variable-status 'kasten_ein :enable t) (sd-call-cmds (am_plot_ex :output_box :output_pick point_one point_two)) (when (not (string= blatt :pdf_a4)) (sd-display-message (sd-multi-lang-string (format nil "Attention !!! ~% Sheet size larger than A4") :german (format nil "Achtung!!!~%Blattformat größer als A4")) :title (sd-multi-lang-string "sheet format" :german "Blattformat") :push (sd-multi-lang-string "continue" :german "Weiter"))) ) ;end progn ) ;end point_two ) ;; end variables :ok-action '(do-plot) :local-functions '( (Rahmen-identifizieren () (let (part-id x-of-ll y-of-ll x-of-ur y-of-ur xy-of-ll xy-of-ur laenge_y laenge_x (A5_l 210) (A4_l 297) (A3_l 420) (A2_l 594) (A1_l 841) (A0_l 1189) (A_tolU 15) (A_tolO 1)) ;Lange Seite des A-Format und Toleranz Unten/Oben (setq part-id (sd-am-inq-unique-name (sd-am-sheet-struct-frame (sd-am-inq-sheet (sd-am-inq-curr-sheet))))) (setq x-of-ll (sd-read-from-string (car (getf (oli::sd-execute-annotator-function :fnc (format nil "Docu_get_part_box '~A'" part-id)) :LL)))) (setq y-of-ll (sd-read-from-string (cadr (getf (oli::sd-execute-annotator-function :fnc (format nil "Docu_get_part_box '~A'" part-id)) :LL)))) (setq x-of-ur (sd-read-from-string (car (getf (oli::sd-execute-annotator-function :fnc (format nil "Docu_get_part_box '~A'" part-id)) :ur)))) (setq y-of-ur (sd-read-from-string (cadr (getf (oli::sd-execute-annotator-function :fnc (format nil "Docu_get_part_box '~A'" part-id)) :ur)))) (setq laenge_x (- x-of-ur x-of-ll)) (setq laenge_y (- y-of-ur y-of-ll)) (cond ((and (> laenge_y (- A5_l A_tolU)) (< laenge_y (+ A5_l A_tolO)) (> laenge_x (- A4_l A_tolU)) (< laenge_x (+ A4_l A_tolO))) (setq blatt :pdf_a4) (setq ausr :landscape)) ((and (> laenge_y (- A4_l A_tolU)) (< laenge_y (+ A4_l A_tolO)) (> laenge_x (- A3_l A_tolU)) (< laenge_x (+ A3_l A_tolO))) (setq blatt :pdf_a3) (setq ausr :landscape)) ((and (> laenge_y (- A3_l A_tolU)) (< laenge_y (+ A3_l A_tolO)) (> laenge_x (- A2_l A_tolU)) (< laenge_x (+ A2_l A_tolO))) (setq blatt :pdf_a2) (setq ausr :landscape)) ((and (> laenge_y (- A2_l A_tolU)) (< laenge_y (+ A2_l A_tolO)) (> laenge_x (- A1_l A_tolU)) (< laenge_x (+ A1_l A_tolO))) (setq blatt :pdf_a1) (setq ausr :landscape)) ((and (> laenge_y (- A1_l A_tolU)) (< laenge_y (+ A1_l A_tolO)) (> laenge_x (- A0_l A_tolU)) (< laenge_x (+ A0_l A_tolO))) (setq blatt :pdf_a0) (setq ausr :landscape)) ((and (> laenge_x (- A5_l A_tolU)) (< laenge_x (+ A5_l A_tolO)) (> laenge_y (- A4_l A_tolU)) (< laenge_y (+ A4_l A_tolO))) (setq blatt :pdf_a4) (setq ausr :portrait)) ((and (> laenge_x (- A4_l A_tolU)) (< laenge_x (+ A4_l A_tolO)) (> laenge_y (- A3_l A_tolU)) (< laenge_y (+ A3_l A_tolO))) (setq blatt :pdf_a3) (setq ausr :portrait)) ((and (> laenge_x (- A3_l A_tolU)) (< laenge_x (+ A3_l A_tolO)) (> laenge_y (- A2_l A_tolU)) (< laenge_y (+ A2_l A_tolO))) (setq blatt :pdf_a2) (setq ausr :portrait)) ((and (> laenge_x (- A2_l A_tolU)) (< laenge_x (+ A2_l A_tolO)) (> laenge_y (- A1_l A_tolU)) (< laenge_y (+ A1_l A_tolO))) (setq blatt :pdf_a1) (setq ausr :portrait)) ((and (> laenge_x (- A1_l A_tolU)) (< laenge_x (+ A1_l A_tolO)) (> laenge_y (- A0_l A_tolU)) (< laenge_y (+ A0_l A_tolO))) (setq blatt :pdf_a0) (setq ausr :portrait)) (t (sd-display-message (sd-multi-lang-string (format nil "Sheet size not found! ~% Please select manually") :german (format nil "Blattformat nicht gefunden!~%Bitte manuell auswählen")) :title (sd-multi-lang-string "sheet format" :german "Blattformat") :push (sd-multi-lang-string "continue" :german "Weiter")) (if (< laenge_y laenge_x) (setq ausr :landscape) (setq ausr :portrait)) (setq einpassen t) (setq blatt :pdf_a4)) ) ;end cond ) ;end let ) (do-plot () (am_plot_ex :Plot_style blatt :output_drawing :destination (Format nil "~a\\~a.pdf" file (sd-am-inq-drawing-no)) :scale (if (equal einpassen t) :fit :factor) :value 1 :ORIENTATION ausr :POSITION :CENTER :output (if (equal kasten_ein t) :box :sheet) :yes :plot ) ;end am_plot (when anzeigen (oli:sd-display-url (Format nil "~a\\~a.pdf" file (sd-am-inq-drawing-no)))) ;end when-open PDF ) ;end do-plot ) ;end local-functions ) ;;end dialog