;;--------------------------------------------------------------------------* ;; Dateiname: AM_Teilefarbe.lsp ;; Version : 3.4 ;; Datum : 24.09.2015 ;; Author : BFE ;;--------------------------------------------------------------------------* ;; Vereinfachtes Umfärben von Teilen und Baugruppen in Anno ;;--------------------------------------------------------------------------* ;;--------------------------------------------------------------------------* (in-package :BFE) (use-package '( :oli)) ;;****************************** (sd-defdialog 'Teilefarbe ;;****************************** :dialog-title "Teile umfaerben" :trace nil :after-initialization '(progn (when (sd-inq-vp-exists-p "Teileauswahl") (sd-call-cmds (delete_vp "Teileauswahl")) );;when (pick) );;progn :variables '( (3D :value-type :boolean :toggle-type :wide-toggle :title (sd-multi-lang-string "3D-view" :german "im 3D-Fenster waehlen") :initial-value nil :after-input (if (equal 3D t) (my-create-3D-viewport) (my-delete-3D-viewport) );;end if ) (teil_bgr :selection (*sd-part-seltype*) :multiple-items t :show-select-menu t :additional-token-string ":recursive :in_assembly" :prompt-text "Teile angeben" :title "Teil" :initial-value nil :after-input (sd-restore-window-placement :all) ) (ansicht :selection *sd-anno-view-seltype* :title "Ansicht" :prompt-text "Ansichten angeben, in welcher die Teile/Baugruppen umgefaerbt werden soll" :multiple-items t :initial-optional nil :check-function #'(lambda (ansicht) (let () (if (sd-am-view-struct-view-3d (sd-am-inq-view ansicht)) :ok (values :error "Diese Ansicht hat keine 3D-Repraesentation!") );;if );;let );;lambda ) (auto-akt :value-type :boolean :toggle-type :wide-toggle :title (sd-multi-lang-string "Auto-update" :german "automatische Aktualisierung") :initial-value t ) (farbe_N :value-type :RGB-color :title "Farbe Normale" :initial-value 16777215 ) (farbe_V :value-type :RGB-color :title "Farbe Verdeckt" :initial-value 16711680 ) (farbe_T :value-type :RGB-color :title "Farbe Tangente" :initial-value 4326396 ) ;(farbe :range ((16777215 :label "Weiss") ; (16776960 :label "Gelb") ; (16711680 :label "Rot") ; ;(65325 :label "GrĪn") ; (65280 :label "GrĪn") ; (4326396 :label "Blau") ; (0 :label "Schwarz") ; (65535 :label "Cyan") ; (16711935 :label "Magenta")) ; :title "Farbe" ; :initial-value 16711680 ;) (linart_N :range ((:SOLID :label "Solid") (:DASHED :label "Strichliert") (:LONG_DASHED :label "Lang Strichl.") (:DOT_CENTER :label "Strichpunkt") (:DASH_CENTER :label "Lang Strichp.") (:PHANTOM :label "___ _ _ __") (:CENTER_DASH_DASH :label "__..__") (:DOTTED :label "Punktiert")) :title "Linienart Normale" :initial-value :SOLID ) (linart_V :range ((:SOLID :label "Solid") (:DASHED :label "Strichliert") (:LONG_DASHED :label "Lang Strichl.") (:DOT_CENTER :label "Strichpunkt") (:DASH_CENTER :label "Lang Strichp.") (:PHANTOM :label "___ _ _ __") (:CENTER_DASH_DASH :label "__..__") (:DOTTED :label "Punktiert")) :title "Linienart Verdeckt" :initial-value :DASHED ) (linart_t :range ((:SOLID :label "Solid") (:DASHED :label "Strichliert") (:LONG_DASHED :label "Lang Strichl.") (:DOT_CENTER :label "Strichpunkt") (:DASH_CENTER :label "Lang Strichp.") (:PHANTOM :label "___ _ _ __") (:CENTER_DASH_DASH :label "__..__") (:DOTTED :label "Punktiert")) :title "Linienart Tangential" :initial-value :SOLID ) (next :push-action (next-action) ) ("Ansicht invertieren") (inv :value-type :boolean :toggle-type :wide-toggle :title (sd-multi-lang-string "Invert" :german "Ansicht invertieren (siehe Hilfe)") :initial-value nil :after-input (if (equal inv t) (progn (sd-set-variable-status 'linart :value :solid) (sd-set-variable-status 'farbe :value 16777215) ) (progn (sd-set-variable-status 'linart :value :long_dashed) (sd-set-variable-status 'farbe :value 16711680) ) ) ) ) :local-functions '( (ansicht-action () (progn (dolist (ansicht-einzeln ansicht) (progn (setf ansicht-path (sd-inq-obj-pathname (sd-am-view-struct-view-3d (sd-am-inq-view ansicht-einzeln))) );; setf );; progn (progn (when inv t (sd-call-cmds (am_view_prop :the_view ansicht-path :NORMAL_LINE_TYPE :long_dashed :NORMAL_COLOR 16711680 :done ) ) ) (sd-call-cmds (part_layout_geo_styles :for_parts teil_bgr :in_view ansicht-path :N_LTYPE linart_N :N_COLOR farbe_N :done) );;sd-call-cmds (sd-call-cmds (part_layout_geo_styles :for_parts teil_bgr :in_view ansicht-path :T_LTYPE linart_T :T_COLOR farbe_T :done) );;sd-call-cmds (sd-call-cmds (part_layout_geo_styles :for_parts teil_bgr :in_view ansicht-path :H_LTYPE linart_V :H_COLOR farbe_V :done) );;sd-call-cmds (when auto-akt t (sd-call-cmds (am_view_update :do_forced_update :on :update_selected_views ansicht-path );;am_view_update );;sd-call-cmds );;when );;progn );;dolist );;progn ) (next-action () (ansicht-action)) (pick () (let () (progn (sd-show-graphical-browser "parcel-gbrowser") (sd-call-cmds (search_by_pick "parcel-gbrowser" "SEARCH-BY-PICK" (sd-inq-obj-pathname (sd-inq-parent-obj (sd-am-inq-curr-view-set))) )) );;progn );;let );;pick (my-create-3D-viewport () (let (teil) (if (equal (sd-am-inq-curr-view-set) nil) (progn (display "Diese Zeichnung hat keinen aktiven Ansichtssatz!") (display "Bitte zuerst das Modell mit dem zugehoerigen Zeichnungssatz laden bzw. aktiv setzen.") (cancel) ) ;;progn ;;else (progn (setf teil (sd-inq-parent-obj (sd-am-inq-curr-view-set))) (sd-call-cmds (sd-store-window-placement :all)) (sd-call-cmds (create_vp :name "Teileauswahl" )) (sd-call-cmds (add_to_vp_drawlist "Teileauswahl" teil)) ) ;;progn ) ;;endif ) ;; let ) (my-delete-3D-viewport () (when (sd-inq-vp-exists-p "Teileauswahl") (sd-call-cmds (delete_vp "Teileauswahl")) (sd-call-cmds (sd-restore-window-placement :all)) ) ;; when ) ) :ok-action '(ansicht-action) :help-action '(progn (display :show ) (display " ") (display "Ansicht invertieren stellt die Standarddarstellung der gewaehlten Ansichten auf rot/strichliert um.") (display " ") (display "Die gewaehlten Teile werden hingegen in Weiss/solid dargestellt") (display " ") ) :cancel-action '(my-delete-3D-viewport) )