;;--------------------------------------------------------------------------* ;; Dateiname: AM_Teilefarbe.lsp ;; Version : 4.3 ;; Datum : 24.05.2016 ;; Author : BFE ;;--------------------------------------------------------------------------* ;; Vereinfachtes Umfärben von Teilen und Baugruppen in Anno ;;--------------------------------------------------------------------------* ;; ü => Ï ä => Ì ö => Î Ä Ø Ö => Ú Ü => Û ß => Þ ° => ³ ;;--------------------------------------------------------------------------* (in-package :BFE-TOOLS) (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 (ansichtssatz-aktiv-setzen) (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) (progn (my-create-3D-viewport) ) (my-delete-3D-viewport) );;end if ) (teil_bgr ;:selection *sd-part-seltype* :value-type :part :modifies NIL :face-part-allowed t :wire-part-allowed t :multiple-items t :show-select-menu t :additional-token-string ":recursive :in_assembly" :prompt-text "Teile angeben" :title "Teil" :initial-value nil :after-input (progn (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 :after-input (when (sd-inq-obj-contents-read-only-p (second (car (sd-am-inq-all-3d-owners)))) (display "Der Ansichtsbesitzer ist schreibgeschÏtzt! Für Ønderungen zunÌchst den Ansichtsbesitzer reservieren") ) ) (auto-akt :value-type :boolean :toggle-type :wide-toggle :title (sd-multi-lang-string "Auto-update" :german "automatische Aktualisierung") :initial-value t ) (farbe :value-type :RGB-color :title "Farbe" :initial-value 16711680 ) ;(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 :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" :initial-value :LONG_DASHED ) (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 ;; Aktion für invertierten Modus (when inv t (sd-call-cmds (am_view_prop :the_view ansicht-path :NORMAL_LINE_TYPE :long_dashed :NORMAL_COLOR 16711680 :done ) ) ) ;; Aktion für Linien umfärben (sd-call-cmds (part_layout_geo_styles :for_parts teil_bgr :in_view ansicht-path :T_LTYPE linart :T_COLOR farbe :N_LTYPE linart :N_COLOR farbe :done) ) ;;OPTIONEN ; :IN_VIEW :OFF ; :N_COLOR 16711680 :done ; :N_COLOR 0 :done ; :H_COLOR 16711680 :done ; :H_COLOR 0 :done ; :T_COLOR 16711680 :done ; :T_COLOR 0 :done ; :T_LTYPE ; :DASHED ; :T_LTYPE ; :SOLID ;; Aktiviert automatische Ansichtsaktualisierung (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 ) ;;--------------------------------------------------------------------------* (ansichtssatz-aktiv-setzen () (let () (progn (setf liste (sd-am-inq-all-3d-owners)) (setf element0 (first liste)) (if (not (equal (sd-am-view-struct-view-set (sd-am-inq-view (first element0))) nil)) (progn (setf element1 (second (first liste))) (setf element1-name (sd-inq-obj-pathname element1)) (setf viewset-list (sd-am-inq-all-view-sets)) (dolist (viewset-list-einzeln viewset-list) (setf temp (sd-inq-obj-pathname (sd-inq-parent-obj viewset-list-einzeln))) (if (equal temp element1-name) (progn (setf status 1) (setf viewset-curr viewset-list-einzeln) (sd-call-cmds (am_active_vset :VSET viewset-curr)) );; progn ;; ELSE BEDINGUNG );; end IF );; end Dolist );;progn ;; ELSE (progn (display "Das assoziative 3D-Modell ist nicht geladen bzw. ist der korrekte Ansichtssatz nicht vorhanden!") (cancel) );;progn );; END IF );; progn ;);;END IF );; let ) ;; ansichtsatz-aktiv-setzen ;;--------------------------------------------------------------------------* ) :ok-action '(when teil_bgr (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 '(progn (my-delete-3D-viewport) ) )