;; (load "E:\\tmp\\Animgif04rh.lsp") (in-package :examples) (use-package :oli) (sd-defdialog 'gif-animationsbilder :dialog-title "GIF-Animationsbilder" :toolbox-button t :precondition '(if (sd-search-file "c:/Temp/Bild001.jpg") (progn (sd-display-error "Vorhandene Einzelbilder im Zielverzeichnis: 'C:\Temp' muessen vorher geloescht werden.") (sd-sys-background-job (format nil "explorer ~a" (sd-convert-filename-to-platform "C:/Temp"))) ) :ok ) :variables '((Objekt :value-type :part-assembly :modifies :contents :multiple-items nil :initial-value nil :title "Teil/Baugr.:" :prompt-text "Teil oder Baugruppe angeben." ) (viewport :value-type :string :initial-value (sd-inq-current-vp) :title "Viewport:" :prompt-text "Viewport angeben." ) (achse :title "Achse:" :prompt-text "Achse angeben." :range (("u" :label "u") ("v" :label "v") ("w" :label "w") ) :initial-value "w" ) (grad :title "Winkel:" :prompt-text "Winkel angeben." :range ((5 :label "5 Grad") (10 :label "10 Grad") (15 :label "15 Grad") (30 :label "30 Grad") (45 :label "45 Grad") (60 :label "60 Grad") (90 :label "90 Grad") ) :initial-value 15 :after-input (setf schritt (/ 360 grad)) ) (schritt :value-type :integer :initial-value 24 :title "Schritt:" :prompt-text "Anzahl der Schritte angeben." ) ("Fenstermasse in Pixel") (xsize :value-type :integer :title "Hoehe:" :initial-value 400 ) (ysize :value-type :integer :title "Breite:" :initial-value 300 ) ) :local-functions '((doit () (progn (create_thumbnail :vp viewport :size :user :size_x xsize :size_y ysize :fit :off :filename (format nil "c:/Temp/Bild~3,'0D.jpg" 1)) (loop for i from 2 to (+ schritt 1) do (when (string= achse "u") (sd-call-cmds (position_pa Objekt :rotate :axis :u :rotation_angle (sd-deg-to-rad grad) :done)) ) (when (string= achse "v") (sd-call-cmds (position_pa Objekt :rotate :axis :v :rotation_angle (sd-deg-to-rad grad) :done)) ) (when (string= achse "w") (sd-call-cmds (position_pa Objekt :rotate :axis :w :rotation_angle (sd-deg-to-rad grad) :done)) ) (create_thumbnail :vp viewport :size :user :size_x xsize :size_y ysize :fit :off :filename (format nil "c:/Temp/Bild~3,'0D.jpg" i)) ) (sd-sys-background-job (format nil "explorer ~a" (sd-convert-filename-to-platform "C:/Temp"))) ) ) ) :ok-action '(doit) )