#| * Dateiname: sd_schnittebene_v4.lsp * Version : 1.4 * Datum : 13.06.2005 * Author : Original von ?, modifiziert von Michael Mueller * Programm zum einfachen Erstellen von Schnitten im 3D |# (in-package :custom) (use-package :oli) (sd-defdialog 'schnittebene :dialog-title "Schnittebene" :toolbox-button t :after-initialization '(progn ;; Modellschnittebene aktivieren (set_vp_model_clipping (oli::sd-inq-current-vp) :on) ;; Teilefarbe aktivieren (set_vp_capping (oli::sd-inq-current-vp) :part-color) ;; Kollision visualisieren deaktivieren (set_vp_interference_check (oli::sd-inq-current-vp) :off) ) :variables '(("Schnittebene definieren") (Flaeche :selection *sd-plane-seltype* :show-select-menu nil :title "Eb. FlÌche" :prompt-text "Ebene FlÌche angeben." :initial-value nil :before-input (progn (setf Flaeche nil) ) :check-function #'(lambda (Flaecheneingabe) (if (sd-plane-p (sd-inq-geo-props Flaecheneingabe :dest-space :global)) :ok (values :error "Keine Ebene FlÌche angegeben.") ) ) ) ; end flaeche (Abstand :value-type :length :title "Abstand" :prompt-text "Abstand des Schnitts von der gewaehlten Flaeche angeben" :after-input (fl-schnittebene-setzen) ) ; end Abstand ("-") (Zylinderflaeche :selection *sd-cylinder-seltype* :show-select-menu nil :prompt-text "zylindrische FlÌche angeben." :initial-value nil :title "Zyl. FlÌche:" :before-input (progn (setf Zylinderflaeche nil) (setf Ausrichtung nil) ) :check-function #'(lambda (Zylinderflaecheneingabe) (if (sd-cylinder-p (sd-inq-geo-props Zylinderflaecheneingabe :dest-space :global)) :ok (values :error "Keine Zylindrische FlÌche angegeben.") ) ) :next-variable 'Ausrichtung ) (Ausrichtung :value-type :measure-direction :built-in-feedback nil :title "Ausrichtung:" :prompt-text "Ausrichtung angeben." :after-input (zyl-schnittebene-setzen) ) ("-") (Arbeitsebene :value-type :wp :title "AEbene" :prompt-text "Arbeitsebene angeben." :initial-value nil :before-input (progn (setf Arbeitsebene nil) ) :after-input (ae-schnittebene-setzen) ) ("Schnittebene zeigen") (Ein :value-type :boolean :toggle-type :grouped-toggle ;;:initial-value nil :title "Ein" :initial-value (if (sd-inq-model-clip-plane-enabled-p 1) t nil) :after-input (progn (schnittebene-einblenden) (setf Ein t) (setf Aus nil) ) ) (Aus :value-type :boolean :toggle-type :grouped-toggle ;;:initial-value nil :title "Aus" :initial-value (if (not (sd-inq-model-clip-plane-enabled-p 1)) t nil) :after-input (progn (setf Ein nil) (setf Aus t) (schnittebene-ausblenden) ) ) ; ********************* Teil zum an- und ausschalten der Teilefarbe *************** set_vp_capping "1" :on bzw :off ("Teile massiv") (Ausschalten :value-type :boolean :toggle-type :grouped-toggle ;;:initial-value nil :title "Ein" :initial-value (if (sd-inq-vp-capping-status "1") "off" nil) :after-input (progn (Teilefarbe-ausschalten) (setf Einschalten nil) (setf Ausschalten t) ) ) ; end ausschalten (Einschalten :value-type :boolean :toggle-type :grouped-toggle ;;:initial-value nil :title "Aus" :initial-value (if (sd-inq-vp-capping-status "1") "on" nil) :after-input (progn (Teilefarbe-einschalten) (setf Einschalten t) (setf Ausschalten nil) ) ) ; end einschalten ) ; end variables :local-functions '((ae-schnittebene-setzen () (let () (progn (sd-call-cmds (model_clipplane :plane1_positioning :par_wp :ref_wp Arbeitsebene :done :plane1 :on :plane1_positioning :flip_plane :done) :failure (sd-display-error "Fehler beim Setzen der Schnittebene !") ) (set_show (oli::sd-inq-current-vp) :clip_planes :off) (setf Ein t) (setf Aus nil) ) ) ) (fl-schnittebene-setzen () (let () (progn (sd-call-cmds (model_clipplane :plane1_positioning :par_face :face Flaeche :offset Abstand :done :plane1 :on :plane1_positioning :flip_plane :done) :failure (sd-display-error "Fehler beim Setzen der Schnittebene !") ) (set_show (oli::sd-inq-current-vp) :clip_planes :off) (setf Ein t) (setf Aus nil) ) ) ) (zyl-schnittebene-setzen () (let () (progn (sd-call-cmds (model_clipplane :plane1_positioning :pt_dir :origin (sd-cylinder-center (sd-inq-geo-props Zylinderflaeche :dest-space :global)) :normal (nth 0 Ausrichtung) :done :plane1 :on :plane1_positioning :flip_plane :done ) :failure (sd-display-error "Fehler beim Setzen der Schnittebene !") ) (set_show (oli::sd-inq-current-vp) :clip_planes :off) (setf Ein t) (setf Aus nil) ) ) ) (schnittebene-ausblenden () (let () (progn (sd-call-cmds (model_clipplane :plane1 :off) :failure (sd-display-error "Fehler beim Ausblenden der Schnittebene !") ) (set_show (oli::sd-inq-current-vp) :clip_planes :on) ) ) ) (schnittebene-einblenden () (let () (progn (sd-call-cmds (model_clipplane :plane1 :on) :failure (sd-display-error "Fehler beim Einblenden der Schnittebene !") ) (set_show (oli::sd-inq-current-vp) :clip_planes :off) ) ) ) ; ************************************************************************************************* (Teilefarbe-einschalten () (let () (progn (sd-call-cmds (set_vp_capping "1" :on) :failure (sd-display-error "Fehler beim Einschalten der Teilefarbe !") ) ; end call (set_vp_capping (oli::sd-inq-current-vp) :off) ) ; end progn ) ; end let ) ; end einschalten (Teilefarbe-ausschalten () (let () (progn (sd-call-cmds (set_vp_capping "1" :off) :failure (sd-display-error "Fehler beim Ausschalten der Teilefarbe !") ) ; end call (set_vp_capping (oli::sd-inq-current-vp) :on) ) ; end progn ) ; end let ) ; end ausschalten ; ************************************************************************************************* ) :ok-action '() :cancel-action '() :cleanup-action '() )