;;--------------------------------------------------------------------------* ;; schneewittchen * ;; * ;;--------------------------------------------------------------------------* (in-package :custom) (use-package :OLI) ;;--------------------------------------------------------------------------* (sd-defdialog 'wendeln :dialog-title "Teile Wendeln" :variables '( ;;local (back-states :initial-value nil) ;;dialog (teil :selection (*sd-object-seltype*) :multiple-items t :show-select-menu t :prompt-text "Teile oder Baugruppen angeben" :title "Teil(e)/BG" ;;:initial-value nil ; :next-variable (if (not startp) 'startp 'zielp) :after-input (after-teil-action) ) (bgr :value-type :assembly :prompt-text "Besitzer-Baugruppe angeben" :title "Besitzer" ;:next-variable (if (not teil) 'teil (if (not startp) 'startp 'zielp)) ) (Ursprung :value-type :point-3d :prompt-text "Ursprung eingeben" :title "Ursprung" ) (Richtung :value-type :measure-direction :prompt-text "Richtung eingeben" :title "Richtung" ) (Abstand :value-type :positive-number :prompt-text "Wendelabsatnd eingeben" :title "Abstand" :initial-value 20 ) (Winkel :value-type :length :prompt-text "Wendelwinkel eingeben" :title "Winkel" :initial-value 10 ) (Anzahl :value-type :positive-number :prompt-text "Anzahl eingeben" :title "Anzahl" :initial-value 3 ) (share :value-type :grouped-boolean :title "Exemplar" :initial-value t ) (copy :value-type :grouped-boolean :title "Kopie 1 Eb." :initial-value nil ) ) :mutual-exclusion '((copy share)) :local-functions '( (after-teil-action (); setzt auf bgr die aktuellen Baugruppe des Teils (let () (sd-set-variable-status 'bgr :value (sd-inq-parent-obj (first teil))) );;let ) (start_wendeln() (setq i 1) (loop while (<= i Anzahl) do (let(et) (dolist (et teil) (if share (sd-call-cmds (create_multiple_pa :share :owner (sd-inq-obj-pathname bgr) :source (sd-inq-obj-pathname et) :keep_attr :on :translate :dir_len (first Richtung) (* i Abstand) ; (first Richtung) :rotate :axis :pt_dir Ursprung (first Richtung) :rotation_angle (sd-deg-to-rad (* i Winkel)) :done ) ) (sd-call-cmds (create_multiple_pa :copy :onelevel :on ;else Kopie :owner (sd-inq-obj-pathname bgr) :source (sd-inq-obj-pathname et) :keep_attr :on :translate :dir_len (first Richtung) (* i Abstand) ; (first Richtung) :rotate :axis :pt_dir Ursprung (first Richtung) :rotation_angle (sd-deg-to-rad (* i Winkel)) :done ) ) ;;end Kopie würde erstellt );;if );end do list );end let ;(display i) (setq i(1+ i)) ) );; ) :ok-action '(start_wendeln) ) ;;--------------------------------------------------------------------------*