;;--------------------------------------------------------------------------* ;; Copyright 2022 Walter Geppert * ;; * ;;--------------------------------------------------------------------------* ;; Dateiname: viewport_size.lsp ;; Version : 1.3 ;; Datum : 21.Dez.2022 ;; Author : WG ;;--------------------------------------------------------------------------* ;; added user convinience with proposals saved across sessions ;; by der_Wolfgang@forum@cad.de 12.Apr.2022 ;; used in 20.4.1 und Express 8.0 ;; translated : german/english by der_Wolfgang@forum@cad.de 12.Apr.2022 ;;--------------------------------------------------------------------------* ;; added print piture to file and and a correction of the window (offset) ;; by mibr@forum@cad.de 21.12.2022 ;;--------------------------------------------------------------------------* (in-package :cadde) (use-package :oli) (sd-defdialog 'iwg-darstellungsfenster-abmessungen-dialog :dialog-title '(sd-multi-lang-string "Set VP Size" :german "DF Abmessungen") :toolbox-button :force :persistent-proposals t ;; keep user entered value of proposals across osdm session :variables'( (zvp :range ("-") :title (sd-multi-lang-string "Target VP" :german "Zielfenster") :initial-value (let ((new-range (sd-inq-vp-names))) (sd-set-range 'zvp new-range) (sd-set-variable-status 'zvp :enable (> (length new-range) 1)) (or (sd-inq-current-vp) (first new-range)) ) ) (parameters :title (sd-multi-lang-string "parameters" :german "Parameter") :expand-shrink (x y x-offset y-offset) ) (x :value-type :number :title (sd-multi-lang-string "X pos" :german "X-Koord.") :persistent-data-storage t :proposals (0 100 200 300) :auto-add-proposal t :proposals-order :sorted :initial-value 0 :after-input (do-it) ) (y :value-type :number :title (sd-multi-lang-string "Y pos" :german "Y-Koord.") :persistent-data-storage t :proposals (0 100 200 300) :auto-add-proposal t :proposals-order :sorted :initial-value 0 :after-input (do-it) ) (x-offset :value-type :number :title (sd-multi-lang-string "X-Offset" :german "X-Korrektur") :persistent-data-storage t :proposals (0 18) :auto-add-proposal t :proposals-order :sorted :initial-value 0 :after-input (do-it) ) (y-offset :value-type :number :title (sd-multi-lang-string "Y-Offset" :german "Y-Korrektur") :persistent-data-storage t :proposals (0 41) :auto-add-proposal t :proposals-order :sorted :initial-value 0 :after-input (do-it) ) (ueber :title (sd-multi-lang-string "V-Port size in pixels" :german "Fenstergröße in Pixel")) (width :value-type :number :title (sd-multi-lang-string "Width" :german "Breite") :persistent-data-storage T :proposals '(320 480 640 800 1024 1280 1440 1600 1920 2560) :auto-add-proposal t :proposals-order :sorted :after-input (do-it) ) (height :value-type :number :title (sd-multi-lang-string "Height" :german "Höhe") :persistent-data-storage T :proposals '(320 480 640 800 1024 1280 1440 1600 1920 2560) :auto-add-proposal t :proposals-order :sorted :after-input (do-it) ) (fit :value-type :boolean :toggle-type :wide-toggle :title (sd-multi-lang-string "Fit VP" :german "mit Einpassen") :initial-value nil :persistent-data-storage T ) (ueber2 :title (sd-multi-lang-string "File" :german "Datei")) (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) ) (pic_name :value-type :string :title (sd-multi-lang-string "Name" :german "Name") :persistent-data-storage t :proposals '("Bild 1" "Bild 2") :auto-add-proposal t :initial-value (sd-multi-lang-string "Picture" :german "Bild") ) (Push-manu :push-action (plot-it) :title (sd-multi-lang-string "Print piture to file" :german "Bild in Datei drucken") :toggle-type :wide-toggle ) ) ;end variables :ok-action (progn ()) :help-action '(sd-display-url "https://ww3.cad.de/foren/ubb/Forum29/HTML/004884.shtml#000004") :local-functions '( (do-it () (when (and x y width height x-offset y-offset) (sd-resize-vp zvp :x x :y y :width (+ width x-offset) :height (+ height y-offset) ) (if fit (sd-call-cmds (fit_vp zvp)) (sd-call-cmds (redraw_vp zvp)) ) ) ;end when ) ;do-it (plot-it () (if (sd-inq-file-status (format nil "~a\\~a.png" file pic_name) :existence) (let (file_existence) (setf file_existence (sd-display-warning (sd-multi-lang-string "File already exists" :german "Datei ist bereits vorhanden") :title (sd-multi-lang-string "Notice" :german "Hinweis") :push-1 (sd-multi-lang-string "overwrite" :german "Überschr.") :push-2 (sd-multi-lang-string "cancel" :german "Abbrechen") :severity :low)) (when (eql file_existence :yes) (CREATE_VP_DUMP :VIEWPORT zvp :png (format nil "~a.png" pic_name) :overwrite) ) ) ;end let (CREATE_VP_DUMP :VIEWPORT zvp :png (format nil "~a.png" pic_name)) ) ) ;end plot-it ) ;end lokal ) ;sd-defdialog