(in-package :gdm) (use-package :oli) ;; ==================================== ;; gdm_am_teilungsebene.lsp ;; Symbol Teilungsebene nach ISO 10135 ;; os / 21.04.2015 ;; ==================================== ;; pnt4 ;; o ;; ;; ;;o-------- o o-------- o ;;pnt5 pnt1 pnt3 pnt6 ;; ;; o ;; pnt2 ;; ;; Abstand pnt1 --> pnt2 (waagerecht) = Schrifthöhe * 1.1 ;; Abstand pnt1 --> pnt4 (senkrecht) = Schrifthöhe * 1.1 (sd-am-create-symbol-dialog :name "gdm_am_create_teilungsebene_dialog" :title (sd-multi-lang-string "Parting Line" :german "Teilungsebene") :position-prompt "" :draw-symbol-command (let* ( (height 3.5) (distance (* 1.1 height)) (line-length 3.5) (pnt1 (make-gpnt2d :x 0 :y 0.0)) (pnt2 (make-gpnt2d :x distance :y (- distance))) (pnt3 (make-gpnt2d :x (* 2 distance) :y 0)) (pnt4 (make-gpnt2d :x distance :y distance)) (pnt5 (make-gpnt2d :x (- line-length) :y 0.0)) (pnt6 (make-gpnt2d :x (+ (* 2 distance) line-length) :y 0)) (pnt7 nil) (laenge_txt_b 0) (laenge_txt_c 0) (laenge_txt 0) (pnt_place_para_a nil) (pnt_place_para_b nil) (pnt_place_para_c nil) (pnt_hatch nil) ) ;; Symbol zeichnen (sd-am-create-symbol-line pnt1 pnt2) (sd-am-create-symbol-line pnt2 pnt3) (sd-am-create-symbol-line pnt3 pnt4) (sd-am-create-symbol-line pnt4 pnt1) (sd-am-create-symbol-line pnt5 pnt1) (sd-am-create-symbol-line pnt1 pnt3) (sd-am-create-symbol-line pnt3 pnt6) (when para_a (setf pnt_place_para_a (make-gpnt2d :x (gpnt2d_x pnt5) :y (* 0.1 height))) (sd-am-create-symbol-parameter "para_a" para_a :position pnt_place_para_a) ) (when (AND add_para_b para_b) (setf pnt_place_para_b (make-gpnt2d :x (+ (gpnt2d_x pnt3) (* 0.1 height)) :y (* 0.1 height))) (sd-am-create-symbol-parameter "para_b" para_b :position pnt_place_para_b) (setf pnt_place_para_b (make-gpnt2d :x (+ (gpnt2d_x pnt3) (* 0.1 height) 7) :y (* 0.1 height))) ;; Breite von "SMI" (sd-am-create-symbol-parameter "para_b2" para_b2 :position pnt_place_para_b) (setf pnt_place_para_b (make-gpnt2d :x (+ (gpnt2d_x pnt3) (* 0.1 height) 12) :y (* 0.1 height))) ;; Breite von " +" (sd-am-create-symbol-parameter "para_b3" para_b3 :position pnt_place_para_b) ;; Länge des Parameters b setzen (setf laenge_txt_b (+ (length para_b) (length para_b2) (length para_b3))) ) (when (AND add_para_c para_c) (setf pnt_place_para_c (make-gpnt2d :x (+ (gpnt2d_x pnt3) (* 0.1 height)) :y (- distance))) (sd-am-create-symbol-parameter "para_c" para_c :position pnt_place_para_c) (setf pnt_place_para_c (make-gpnt2d :x (+ (gpnt2d_x pnt3) (* 0.1 height) 7) :y (- distance))) ;; Breite von "FL" (sd-am-create-symbol-parameter "para_c2" para_c2 :position pnt_place_para_c) ;; Länge des Parameters c setzen (setf laenge_txt_c (+ (length para_c) (length para_c2))) ) ;; Linie verlängern wenn Parameter b und/oder Parameter c gesetzt ist (if (>= laenge_txt_b laenge_txt_c) (setf laenge_txt laenge_txt_b) (setf laenge_txt laenge_txt_c) ) (setf pnt7 (make-gpnt2d :x (+ (* 2 distance) line-length (* 2.5 laenge_txt)) :y 0)) (sd-am-create-symbol-line pnt6 pnt7) ;; Selektionspunkte setzen (sd-am-create-symbol-selectable-point pnt1) (sd-am-create-symbol-selectable-point pnt2) (sd-am-create-symbol-selectable-point pnt3) (sd-am-create-symbol-selectable-point pnt4) ;; Schraffur setzen (oli:sd-set-setting-modifiable-flag :subpath "Annotation" :modifiable t) (sd-freeze-setting-value) (when para_d ;; Schraffur (setf pnt_hatch (make-gpnt2d :x distance :y (- (/ distance 2)))) (sd-call-cmds (modify_default_setting :path "Annotation/Hatch/Appearance" :a_range :FILLED)) (sd-am-create-symbol-hatch pnt_hatch) ) (sd-unfreeze-setting-value) (oli:sd-set-setting-modifiable-flag :subpath "Annotation" :modifiable nil) ;; Referenzpunkt setzen (sd-am-set-symbol-reference-point pnt1) );; let :save-variables (para_a add_para_b para_b para_b2 para_b3 add_para_c para_c para_c2 para_d) :variables ( (BILD :title (sd-multi-lang-string "-" :german "-") :value-type :image :image-file (format nil "~a/Annotation/bitmaps/gd_am_teilungsebene_dialog.bmp" (oli::sd-convert-filename-from-platform (oli::sd-sys-getenv "SDCORPCUSTOMIZEDIR"))) ) ("") (para_a :title (sd-multi-lang-string "Parameter a" :german "Parameter a") :range ("" "M" "C" "S") :initial-value "" :initial-optional t ) (para_b_block :initial-value nil :title (sd-multi-lang-string "Parameter b" :german "Parameter b") ) (add_para_b :value-type :boolean :title (sd-multi-lang-string "Add Para b" :german "Parameter b hinzufügen") :toggle-type :wide-toggle :initial-value nil :after-input (if add_para_b (progn (sd-set-variable-status 'para_b :visible t) (sd-set-variable-status 'para_b :optional nil) (sd-set-variable-status 'para_b2 :visible t) (sd-set-variable-status 'para_b2 :optional nil) (sd-set-variable-status 'para_b3 :visible t) (sd-set-variable-status 'para_b3 :optional nil) ) (progn (sd-set-variable-status 'para_b :visible nil) (sd-set-variable-status 'para_b :optional t) (sd-set-variable-status 'para_b2 :visible nil) (sd-set-variable-status 'para_b2 :optional t) (sd-set-variable-status 'para_b3 :visible nil) (sd-set-variable-status 'para_b3 :optional t) ) ) ) (para_b :value-type :string :editable nil :title "Parameter b" :initial-value "SMI" :initial-optional nil :initial-visible nil ) (para_b2 :range (" +" " -" " ±") :title "Parameter b2" :initial-value nil :initial-optional nil :initial-visible nil ) (para_b3 :value-type :string :editable t :title "Parameter b3" :initial-value "" :initial-optional nil :initial-visible nil ) (para_c_block :initial-value nil :title (sd-multi-lang-string "Parameter c" :german "Parameter c") ) (add_para_c :value-type :boolean :title (sd-multi-lang-string "Add Para c" :german "Parameter c hinzufügen") :toggle-type :wide-toggle :initial-value nil :after-input (if add_para_c (progn (sd-set-variable-status 'para_c :visible t) (sd-set-variable-status 'para_c :optional nil) (sd-set-variable-status 'para_c2 :visible t) (sd-set-variable-status 'para_c2 :optional nil) ) (progn (sd-set-variable-status 'para_c :visible nil) (sd-set-variable-status 'para_c :optional t) (sd-set-variable-status 'para_c2 :visible nil) (sd-set-variable-status 'para_c2 :optional t) ) ) ) (para_c :value-type :string :editable nil :title "Parameter c" :initial-value "FL" :initial-optional nil :initial-visible nil ) (para_c2 :value-type :string :editable t :title "Parameter c2" :initial-value "" :initial-optional nil :initial-visible nil ) (para_d_block :initial-value nil :title (sd-multi-lang-string "With fixed part" :german "Mit feststehendem Teil") ) (para_d :value-type :boolean :title (sd-multi-lang-string "Fixed part" :german "Feststehendes Teil") :toggle-type :wide-toggle :initial-value nil ) ) ;; end variables ) ;; ;;================================== ;; register this dialog for use in the symbol browser (sd-am-register-symbol :create-dia "gdm_am_create_teilungsebene_dialog" :edit-dia "gdm_am_create_teilungsebene_dialog" :meta-name (sd-multi-lang-string "Parting Line" :german "Teilungsebene") :pixmap-file (format nil "~a/Annotation/bitmaps/gd_am_teilungsebene.bmp" (oli::sd-convert-filename-from-platform (oli::sd-sys-getenv "SDCORPCUSTOMIZEDIR"))) ;:pixmap-file "Annotation/gd_am_teilungsebene.bmp" :category (sd-multi-lang-string "Molded Parts ISO 10135" :german "Formteile ISO 10135") ) ;;==================================