;;--------------------------------------------------------------------------* ;; Dateiname: SD_Import-ordnen.lsp ;; Version : 4.1 ;; Datum : 15.01.2016 ;; Author : BFE ;;--------------------------------------------------------------------------* ;; Unterstützt das Einordnen gewählter Teile in eine Struktur ;;--------------------------------------------------------------------------* ;;Versionierung ;; 1.0 erste Version ;; 2.0 neue Funktionen: ausblenden, BG erzeugen ;; 3.0 Wahlfunktion Verschieben od. Exemplar erstellen ;; 3.1 Display Feld hinzu + VP optimiert ;; 4.0 Umstrukturierung und Ergänzung => in VP darstellen ;; 4.1 alten Besitzermodus ermöglicht ;;--------------------------------------------------------------------------* (in-package :BFE-Tools) (use-package :oli) ;;--------------------------------------------------------------------------* (sd-defdialog 'Import-ordnen :dialog-title "Import-ordnen" :toolbox-button nil :after-initialization '(progn (when (sd-inq-vp-exists-p "geordnet") (sd-call-cmds (delete_vp "geordnet")) );;when );;progn :variables '( ("Baugruppe erzeugen") (BG-neu :value-type :string :title "BG Name" :prompt-text "Namen der neuen Baugruppe angeben" :initial-optional t ;:after-input ; (when BG-neu (SD-SET-VARIABLE-STATUS 'Ziel-BG :optional t)) ) (Ziel-BG :value-type :assembly :title "Zielbaugruppe" :prompt-text "Zielbaugruppe angeben" :initial-value (sd-pathname-to-obj "/") ) (button-bg :push-action (BG-erzeugen) :title "BG erzeugen" ) ("Elemente verschieben") (Teil-BG :selection *sd-3d-object-seltype* :title "Teil/BG" :prompt-text "zu verschiendes Teil/BG angeben" :multiple-items t :after-input (let (dummy) (setf dummy 0) (when teil-bg (if (equal ausblenden t) ;#funktion wenn wahr (progn (dolist (teil-bg-einzeln teil-bg) (sd-call-cmds (remove_from_vp_drawlist (sd-inq-current-vp) (SD-INQ-OBJ-PATHNAME teil-bg-einzeln))) ;teil ausblenden );;dolist (when BG-neu (progn (setf dummy 1) (BG-erzeugen))) (verschieben) (sd-call-cmds (remove_from_vp_drawlist (sd-inq-current-vp) (SD-INQ-OBJ-PATHNAME Ziel-BG))) (when neues-Fenster (Objekte_im_neuen_Fenster_darstellen Ziel-BG t)) (when (and Besitzermodus-alt (equal dummy 1)) (setf Ziel-BG Besitzer-alt)) );end progn ;#funktion wenn falsch (progn (when BG-neu (progn (setf dummy 1) (BG-erzeugen))) (verschieben) (when neues-Fenster (Objekte_im_neuen_Fenster_darstellen Ziel-BG t)) (when (and Besitzermodus-alt (equal dummy 1)) (setf Ziel-BG Besitzer-alt)) ) );end if );end when teil-bg );let ) (check-verschieben :title "Verschieben" :toggle-type :wide-toggle :value-type :boolean :initial-value t ) (check-exemplar :title "Exemplar" :toggle-type :wide-toggle :value-type :boolean :initial-value nil ) (Besitzer-alt :value-type :assembly :title "Besitzer" :prompt-text "Besitzer fuer neue Baugruppe angeben" :initial-optional t :initial-visible nil ) (ausblenden :value-type :boolean :toggle-type :wide-toggle :title (sd-multi-lang-string "hide after selection" :german "Teil ausblenden") :initial-value t ) (neues-Fenster :value-type :boolean :toggle-type :wide-toggle :title "in neuem Fenster darstellen" :initial-value nil ) (Besitzermodus-alt :value-type :boolean :toggle-type :wide-toggle :title "Besitzermodus alt" :initial-value nil :initial-visible nil :initial-optional t ) ) :mutual-exclusion '(check-verschieben check-exemplar) :local-functions '( (verschieben () (let () (dolist (teil-bg-einzeln teil-bg) (when check-verschieben (sd-call-cmds (change_pa_owner :new_owner Ziel-BG :parts_assemblies :START teil-bg-einzeln :SELECT_DONE ) ) ) (when check-exemplar (sd-call-cmds (create_multiple_pa :share :source Teil-BG :owner Ziel-BG ) ) ) ) (SD-SET-VARIABLE-STATUS 'Teil-BG :value nil) ) ) (BG-erzeugen () (let () (sd-call-cmds (create_assembly :name BG-neu :owner Ziel-BG ) ) (setf Besitzer-alt Ziel-BG) (SD-SET-VARIABLE-STATUS 'Ziel-BG :value (sd-pathname-to-obj (format nil "~A\/~A" (sd-inq-obj-pathname Ziel-BG) BG-neu))) (SD-SET-VARIABLE-STATUS 'BG-neu :value nil) ) ) ) :ok-action '() :cancel-action '() ) (defun Objekte_im_neuen_Fenster_darstellen (Teile einpassen) (let ((vp-alt (sd-inq-current-vp)) (Ansicht_merken_1 (sd-inq-vp-camera (sd-inq-current-vp)))) (if (sd-inq-vp-exists-p "geordnet") (progn (sd-set-current-vp "geordnet") (sd-call-cmds (set_vp_drawlist "geordnet" :with-wp :vp-fit Teile update_screen))) (progn (sd-call-cmds (create_vp :name "geordnet" )) (sd-call-cmds (set_vp_drawlist "geordnet" :with-wp :vp-fit Teile update_screen))) ) ;(sd-call-cmds (draw_only_in_new_vport Teile)) (sd-call-cmds (fit_vp "geordnet")) (sd-set-vp-camera (sd-inq-current-vp) Ansicht_merken_1 :smooth nil) (oli:sd-call-win-command-by-sysid #xE134) (sd-set-current-vp vp-alt) ) )