; #|
|# (in-package :thread) (use-package :oli) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Begin of page;; ;; ;; example how to use the functions sd-define-thread ;; sd-inq-thread ;; sd-destroy-thread ;; ;; the following Integration Kit Functions are also used inside this example ;; sd-defdialog ;; sd-inq-geo-props ;; sd-cylinder-* ;; sd-multi-lang-string ;; sd-end-point-feedback ;; sd-start-direction-feedback ;; sd-set-variable-status ;; sd-vec-equal-p ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (sd-defdialog 'thread_extension :dialog-title (sd-multi-lang-string "Thread Define" :german "Gewinde Def.") :toolbox-button t :after-initialization '(progn (trace oli::sd-define-thread oli::sd-inq-thread oli::sd-destroy-thread ) (setf profile nil) ) :mutual-exclusion '( (nomi-dia nomi-dia-inch) (pitch TPI)) :variables `( (t-feedbacks :initial-value nil) ;; all feedbacks shown (result :initial-value nil) ;; saved return value of sd-*-thread functions (props :initial-value nil) ;; cylinder face properties (a-cyl-face :selection *sd-cylinder-seltype* :title (sd-multi-lang-string "Cyl Face" :german "Zyl. Flaeche") :check-function #'(lambda (this-face) (if (sd-cylinder-p (SD-INQ-GEO-PROPS this-face)) :ok (values :error (sd-multi-lang-string "No cylindrical face selected. Thread Information is only valid for a cylindrical face." :german "Keine Zylinderflaeche gewaehlt. Gewindedefinition nur bei zylindrischen Flaechen moeglich.") ))) :after-input (let (center axis start radius) (dolist (a-fb t-feedbacks) (sd-end-point-feedback a-fb)) ;; remove old feedback (setf props (sd-inq-geo-props a-cyl-face :dest-space :global)) (setf center (sd-cylinder-center props)) ;; really the center , also in axis direction! (setf axis (sd-cylinder-axis-dir props)) (setf start (sd-cylinder-start-dir props)) ;; this is for rotaion, (setf radius (sd-cylinder-radius props)) (push ;; center of cylinder (sd-start-direction-feedback :point center :direction axis :disc t :color 0,0,1) t-feedbacks) (sd-set-variable-status 't-define :enable t) (sd-set-variable-status 't-inq :enable t) (sd-set-variable-status 't-destroy :enable t) ) ;; end after-input ) ;; end a-cylface ;; ------------------------------------------------------------------- (ruler1 :title (sd-multi-lang-string "metric" :german "metrisch")) (nomi-dia :title (sd-multi-lang-string "Nomi Dia." :german "Nenn-Dm.") :value-type :positive-length :proposals '("6" "8" "10" "12") ) (pitch :title (sd-multi-lang-string "Pitch" :german "Steigung") :value-type :positive-length :proposals '("1" "1.25" "1.5" "1.75") ) (ruler2 :title (sd-multi-lang-string "inch" :german "zoll")) (nomi-dia-inch :title (sd-multi-lang-string "Nomi Dia." :german "Nenn-Dm.") :value-type :string :proposals '("#12" "1/4" "3/8" "1" "1 1/2") ) (TPI :title (sd-multi-lang-string "TPI" :german "Steigung") :value-type :positive-integer :proposals '("28" "24" "20" "18" "14") ) ("-") (core-dia :title (sd-multi-lang-string "Core Dia." :german "Kern-Dm.") :toggle-type :indicator-toggle-data :value-type :positive-length ) (profile :toggle-type :indicator-toggle-data :title (sd-multi-lang-string "Profile" :german "Gew.-Art") :range ( (:BSW :label ,(sd-multi-lang-string "BSW")) ; British Standard Whithworth Thread (:BSF :label ,(sd-multi-lang-string "BSF")) ; British Standard Fine Thread (:BSP :label ,(sd-multi-lang-string "BSP")) ; British Standard Pipe Thread (:UNC :label ,(sd-multi-lang-string "UNC")) ; Unified National Coarse Screw Thread (US) (:UNF :label ,(sd-multi-lang-string "UNF")) ; Unified National Fine Screw Thread (US) (:NPT :label ,(sd-multi-lang-string "NPT")) ; National Pipe Thread (:M :label ,(sd-multi-lang-string "M")) ; metric (:MF :label ,(sd-multi-lang-string "M (fine)" :german "M (fein)")) ; metric fine (:TR :label ,(sd-multi-lang-string "Tr" :german "Tr (DIN 103)")) ; Tr (DIN 103) (:flat_trapezoid :label ,(sd-multi-lang-string "flatTr" :german "Tr (DIN 380)")) ; Tr (DIN 380) (:S :label ,(sd-multi-lang-string "S" :german "S (DIN 513)")) ; S (DIN 513) (:R :label ,(sd-multi-lang-string "R" :german "Rd (DIN 405)")) ; Rd (DIN 405) (:E :label ,(sd-multi-lang-string "E")) ; Edison (:PIPE_RP :label ,(sd-multi-lang-string "Rp" :german "Rp (DIN EN 10226)")) ; Pipe Thread DIN EN 10226 (:PIPE_G :label ,(sd-multi-lang-string "G" :german "G (DIN ISO 228)")) ; Pipe Thread DIN ISO 228 ) ) (thread-type :title (sd-multi-lang-string "Type" :german "Typ") :range ( :inner :outer)) (chamfer :title (sd-multi-lang-string "Include adjacent Cone" :german "Fase einbeziehen") :value-type :boolean :toggle-type :wide-toggle :initial-value T ) (thread-name :title (sd-multi-lang-string "Name" :german "Name") :value-type :string :initial-value "" ) (a-dir-reverse :title (sd-multi-lang-string "Reverse Dir" :german "Umkehren") :value-type :boolean :toggle-type :wide-toggle ) ;; ------------------------------------------------------------------- (reset :title (sd-multi-lang-string "Clear" :german "Neu") :toggle-type :right-toggle :push-action (setf nomi-dia nil pitch nil nomi-dia-inch nil TPI nil core-dia NIL thread-type :inner chamfer nil profile nil thread-name nil a-dir-reverse nil ) ) ;; end clear (t-define :initial-enable NIL :toggle-type :wide-toggle :title (sd-multi-lang-string "Define" :german "Anwenden") :push-action (progn (setf result (oli::sd-define-thread a-cyl-face :nominal-diameter nomi-dia :nominal-diameter-inch nomi-dia-inch :core-diameter core-dia :pitch pitch :TPI TPI :thread-type thread-type :thread-unit (if nomi-dia :metric :inch) :thread-profile profile :thread-color 1,0,0 :include-chamfer chamfer :thread-direction (if a-dir-reverse :REVERSE-CYL-AXIS :CYL-AXIS) :thread-name thread-name ) ) (unless result (display (sd-multi-lang-string "no thread created - look to trace output in concole" :german "Kein Gewinde erzeugt - siehe trace Ausgaben"))) ) ) ;; end t-define ;; ------------------------------------------------------------------- (ruler3 :title (sd-multi-lang-string "Thread Inquire" :german "Gewinde abfragen")) (t-inq :initial-enable NIL :toggle-type :wide-toggle :title (sd-multi-lang-string "Inquire" :german "Abfragen") :push-action (progn (setf result (oli::sd-inq-thread a-cyl-face)) (if result (progn (display (format nil "thread detected~%~%~{:~A ~A~%~}~%look also to trace output in concole~%" (nthcdr 2 result))) (if (getf result :nominal-diameter-inch) (setf nomi-dia-inch (getf result :nominal-diameter-inch)) (setf nomi-dia (getf result :nominal-diameter)) ) (setf core-dia (getf result :core-diameter)) (if (getf result :TPI) (setf TPI (getf result :tpi)) (setf pitch (getf result :pitch)) ) (setf thread-type (getf result :thread-type)) (setf profile (getf result :thread-profile)) (setf chamfer (getf result :include-chamfer)) (setf a-dir-reverse (NOT (sd-vec-equal-p (getf result :thread-direction) (sd-cylinder-axis-dir props)))) (setf thread-name (getf result :thread-name)) ) ; end progn (display (sd-multi-lang-string "no sd-define-thread information available" :german "Keine sd-define-thread Information vorhanden"))) ) ) ;; end t-inq ;; ------------------------------------------------------------------- (ruler4 :title (sd-multi-lang-string "Thread Destroy" :german "Gewinde entfernen")) (t-destroy :initial-enable NIL :toggle-type :wide-toggle :title (sd-multi-lang-string "Destroy" :german "Entfernen") :push-action (progn (setf result (oli::sd-destroy-thread a-cyl-face)) (if result (display "thread deleted") (display "no thread information available or no thread deleted - look to trace output in concole")) ) ) ;; end t-destroy ) ;; end variables :cleanup-action '(progn (dolist (a-fb t-feedbacks) (sd-end-point-feedback a-fb)) ;; remove old feedback (untrace oli::sd-define-thread oli::sd-inq-thread oli::sd-destroy-thread ) ) ) ;; end ; END of Example