;;=================================================================================================== ;; SW-Innengewinde.lsp ;; erstellt am 27.01.2016 von Wolfgang Seel ;; ;; Das Makro soll bei geladenen Fremddaten, das erkennen von Innengewinden für Annotation erleichtern. ;; ;; Bei Innengewinden ist der Kerndurchmesser immer verschieden, weshalb die Kerndurchmesser zwischen ;; Regelgewinde und Feingewinden des gleichen Durchmessers unterschiedlich sind. ;; Dies nutze ich dafür aus, dass man mit nur einem Makro alle Gewindesorten erkennen kann. ;; Vorraussetzung für die genaue Erkennung ist nur, das keine Kerndurchmesser doppelt vorkommen !!! ;; Da alle Gewindetypen gleichzeitig erkannt werden koennen, sind in der Definition der Gewinde auch ;; immer die Gewindeeinstellungen komplett vorzunehmen. ;; Am besten immer komplette Zeile kopieren und ausfüllen. ;; Verschiedene CAD-Systeme benutzen unter Umstaenden verschiedene Kern-Durchmesser, deswegen ist ;; es durchaus Ratsam manchmal Gewinde mehrfach mit verschiedenen Kern-Durchmessern zu erstellen. ;; ;; Viel Spass beim Datenimport und anschliessendem Gewinde erkennen !!! (sd-defdialog 'SW-Innengewinde :toolbox-button t ;; Wird in Werkzeugliste eingetragen :dialog-title "SW-Innengewinde" ;; Überschrift :variables '( (ACHSEN-FEEDBACK) (ALLES) (RICHTUNG) (MITTELPUNKT) ("Gewindeflaeche") (FLAECHE :value-type :face :title "Zyl.-Flaeche" :prompt-text "Bitte Zylinderflaeche eingeben" :check-function ZYLINDERFLAECHE-PRUEFEN :before-input (progn (setf Nenndurchmesser NIL) (setf STEIGUNG NIL) (setf Gewindename NIL) (setf Gewindetyp NIL) (setf Gewindeprofile NIL) (setf Gewindetext NIL) (setf Durchmesser NIL) );;progn :after-input (progn (sd-end-feedback ACHSEN-FEEDBACK) (sd-set-variable-status 'UMKEHREN :enable t) (Gewinde-definieren) );;progn );;FLAECHE ende ("Erkanntes Gewinde") (Gewindename :title "GEWINDE" :value-type :display-only :initial-value " " :display-units :length) (button-Gewinde :push-action (Gewinde-erstellen) :title "Gewinde erstellen" :toggle-type :wide-toggle ) ("Gewinderichtung") (UMKEHREN :title "Umkehren" :toggle-type :wide-toggle :initial-enable nil :push-action (Richtung-wechseln)) ("Gewinde Drehrichtung") (RECHTS_GEW :value-type :boolean :initial-value t :toggle-type :grouped-toggle :title "Rechts" );;RECHTS_GEW (LINKS_GEW :value-type :boolean :toggle-type :grouped-toggle :title "Links" );;LINKS_GEW ("Nenndurchmesser") ;;(DURCHMESSER :title "M" (Nenndurchmesser :title "gross D" :value-type :display-only :initial-value 0 :display-units :length) ("abgegriffener Durchmesser") (Durchmesser :title "Kern-D" :value-type :display-only :initial-value " " :display-units :length) ("Steigung des Gewindes") (STEIGUNG :title "Steigung" :value-type :display-only :initial-value NIL :display-units :length) );;variables :mutual-exclusion '((RECHTS_GEW LINKS_GEW)) :ok-action '(Gewinde-erstellen) :cancel-action '(sd-end-feedback ACHSEN-FEEDBACK) :local-functions '( (Gewinde-definieren () (setf ALLES (sd-inq-geo-props FLAECHE :dest-space :global) DURCHMESSER (* 2 (sd-cylinder-radius ALLES)) MITTELPUNKT (sd-cylinder-center ALLES) RICHTUNG (sd-cylinder-axis-dir ALLES) ACHSEN-FEEDBACK (sd-start-direction-feedback :point MITTELPUNKT :direction RICHTUNG :disc t :color 0,0,1) );;setf (setf DURCHMESSER (/ (ROUND (* (+ DURCHMESSER 0.00003) 1000.0) 1) 1000.00)); Runden auf drei Stellen hinter dem Komma (progn ; Gewindetypen::METRIC :metric_fine :INCH :BSW :BSF :BSP :UNC :UNF :NPT :PIPE_RP :PIPE_G :TRAPEZOID :FLAT_TRAPEZOID :SAW ; Gewindetypen::ROUND :ROUND_MINING :EDISON :PIPE_JIS_B_0203 :PIPE_PG (case DURCHMESSER ; Steigung für Regelgewinde festlegen ;Metrisches ISO-Gewinde DIN 13 (0.75 (setf Nenndurchmesser 1.0) (setf STEIGUNG 0.25) (setf Gewindename "M1") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (0.85 (setf Nenndurchmesser 1.1) (setf STEIGUNG 0.25) (setf Gewindename "M1.1") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (0.95 (setf Nenndurchmesser 1.2) (setf STEIGUNG 0.25) (setf Gewindename "M1.2") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (1.10 (setf Nenndurchmesser 1.4) (setf STEIGUNG 0.30) (setf Gewindename "M1.4") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (1.25 (setf Nenndurchmesser 1.6) (setf STEIGUNG 0.35) (setf Gewindename "M1.6") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (1.45 (setf Nenndurchmesser 1.8) (setf STEIGUNG 0.35) (setf Gewindename "M1.8") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (1.60 (setf Nenndurchmesser 2) (setf STEIGUNG 0.40) (setf Gewindename "M2") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (1.75 (setf Nenndurchmesser 2.2) (setf STEIGUNG 0.45) (setf Gewindename "M2.2") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (2.05 (setf Nenndurchmesser 2.5) (setf STEIGUNG 0.45) (setf Gewindename "M2.5") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (2.50 (setf Nenndurchmesser 3) (setf STEIGUNG 0.50) (setf Gewindename "M3") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (2.90 (setf Nenndurchmesser 3.5) (setf STEIGUNG 0.60) (setf Gewindename "M3.5") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (3.30 (setf Nenndurchmesser 4) (setf STEIGUNG 0.70) (setf Gewindename "M4") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (3.70 (setf Nenndurchmesser 4.5) (setf STEIGUNG 0.75) (setf Gewindename "M4.5") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (4.20 (setf Nenndurchmesser 5) (setf STEIGUNG 0.80) (setf Gewindename "M5") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (5.00 (setf Nenndurchmesser 6) (setf STEIGUNG 1.00) (setf Gewindename "M6") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (6.00 (setf Nenndurchmesser 7) (setf STEIGUNG 1.00) (setf Gewindename "M7") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (6.75 (setf Nenndurchmesser 8) (setf STEIGUNG 1.25) (setf Gewindename "M8") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (7.75 (setf Nenndurchmesser 9) (setf STEIGUNG 1.25) (setf Gewindename "M9") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (8.50 (setf Nenndurchmesser 10) (setf STEIGUNG 1.50) (setf Gewindename "M10") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (10.25 (setf Nenndurchmesser 12) (setf STEIGUNG 1.75) (setf Gewindename "M12") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (12.00 (setf Nenndurchmesser 14) (setf STEIGUNG 2.00) (setf Gewindename "M14") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (14.00 (setf Nenndurchmesser 16) (setf STEIGUNG 2.00) (setf Gewindename "M16") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (15.50 (setf Nenndurchmesser 18) (setf STEIGUNG 2.50) (setf Gewindename "M18") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (17.50 (setf Nenndurchmesser 20) (setf STEIGUNG 2.50) (setf Gewindename "M20") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (19.50 (setf Nenndurchmesser 22) (setf STEIGUNG 2.50) (setf Gewindename "M22") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (21.00 (setf Nenndurchmesser 24) (setf STEIGUNG 3.00) (setf Gewindename "M24") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (24.00 (setf Nenndurchmesser 27) (setf STEIGUNG 3.00) (setf Gewindename "M27") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (26.50 (setf Nenndurchmesser 30) (setf STEIGUNG 3.50) (setf Gewindename "M30") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (29.50 (setf Nenndurchmesser 33) (setf STEIGUNG 3.50) (setf Gewindename "M33") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (32.00 (setf Nenndurchmesser 36) (setf STEIGUNG 4.00) (setf Gewindename "M36") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (35.00 (setf Nenndurchmesser 39) (setf STEIGUNG 4.00) (setf Gewindename "M39") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (37.50 (setf Nenndurchmesser 42) (setf STEIGUNG 4.50) (setf Gewindename "M42") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (40.50 (setf Nenndurchmesser 45) (setf STEIGUNG 4.50) (setf Gewindename "M45") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (43.00 (setf Nenndurchmesser 48) (setf STEIGUNG 5.00) (setf Gewindename "M48") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (47.00 (setf Nenndurchmesser 52) (setf STEIGUNG 5.00) (setf Gewindename "M52") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (50.50 (setf Nenndurchmesser 56) (setf STEIGUNG 5.50) (setf Gewindename "M56") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (55.50 (setf Nenndurchmesser 60) (setf STEIGUNG 5.50) (setf Gewindename "M60") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (58.00 (setf Nenndurchmesser 64) (setf STEIGUNG 6.00) (setf Gewindename "M64") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) (62.00 (setf Nenndurchmesser 68) (setf STEIGUNG 6.00) (setf Gewindename "M68") (setf Gewindetyp :metric) (setf Gewindeprofile :M) (setf Gewindetext NIL) ) ;Metrisches ISO-Feingewinde DIN 13 (7.25 (setf Nenndurchmesser 8) (setf STEIGUNG 0.75) (setf Gewindename "M8x0,75") (setf Gewindetyp :metric) (setf Gewindeprofile :MF) (setf Gewindetext NIL) ) (7.00 (setf Nenndurchmesser 8) (setf STEIGUNG 1.00) (setf Gewindename "M8x1") (setf Gewindetyp :metric) (setf Gewindeprofile :MF) (setf Gewindetext NIL) ) (8.00 (setf Nenndurchmesser 9) (setf STEIGUNG 1.00) (setf Gewindename "M9x1") (setf Gewindetyp :metric) (setf Gewindeprofile :MF) (setf Gewindetext NIL) ) (9.00 (setf Nenndurchmesser 10) (setf STEIGUNG 1.00) (setf Gewindename "M10x1") (setf Gewindetyp :metric) (setf Gewindeprofile :MF) (setf Gewindetext NIL) ) (11.00 (setf Nenndurchmesser 12) (setf STEIGUNG 1.00) (setf Gewindename "M12x1") (setf Gewindetyp :metric) (setf Gewindeprofile :MF) (setf Gewindetext NIL) ) (10.50 (setf Nenndurchmesser 12) (setf STEIGUNG 1.50) (setf Gewindename "M12x1.5") (setf Gewindetyp :metric) (setf Gewindeprofile :MF) (setf Gewindetext NIL) ) (10.75 (setf Nenndurchmesser 12) (setf STEIGUNG 1.25) (setf Gewindename "M12x1.25") (setf Gewindetyp :metric) (setf Gewindeprofile :MF) (setf Gewindetext NIL) ) (13.00 (setf Nenndurchmesser 14) (setf STEIGUNG 1.00) (setf Gewindename "M14x1") (setf Gewindetyp :metric) (setf Gewindeprofile :MF) (setf Gewindetext NIL) ) (12.50 (setf Nenndurchmesser 14) (setf STEIGUNG 1.50) (setf Gewindename "M14x1.5") (setf Gewindetyp :metric) (setf Gewindeprofile :MF) (setf Gewindetext NIL) ) (15.00 (setf Nenndurchmesser 16) (setf STEIGUNG 1.00) (setf Gewindename "M16x1,0") (setf Gewindetyp :metric) (setf Gewindeprofile :MF) (setf Gewindetext NIL) ) (14.50 (setf Nenndurchmesser 16) (setf STEIGUNG 1.50) (setf Gewindename "M16x1,5") (setf Gewindetyp :metric) (setf Gewindeprofile :MF) (setf Gewindetext NIL) ) (29.00 (setf Nenndurchmesser 30) (setf STEIGUNG 1.00) (setf Gewindename "M30x1.0") (setf Gewindetyp :metric) (setf Gewindeprofile :MF) (setf Gewindetext NIL) ) ;Whitworth-Rohrgewinde DIN ISO 228/1 (8.566 (setf Nenndurchmesser 9.728) (setf STEIGUNG 28) (setf Gewindename "G1/8") (setf Gewindetyp :inch) (setf Gewindeprofile :PIPE_G) (setf Gewindetext "1/8")) (11.445 (setf Nenndurchmesser 13.157) (setf STEIGUNG 19) (setf Gewindename "G1/4") (setf Gewindetyp :inch) (setf Gewindeprofile :PIPE_G) (setf Gewindetext "1/4")) (14.95 (setf Nenndurchmesser 16.66) (setf STEIGUNG 19) (setf Gewindename "G3/8") (setf Gewindetyp :inch) (setf Gewindeprofile :PIPE_G) (setf Gewindetext "3/8")) (19.00 (setf Nenndurchmesser 20.955) (setf STEIGUNG 14) (setf Gewindename "G1/2") (setf Gewindetyp :inch) (setf Gewindeprofile :PIPE_G) (setf Gewindetext "1/2")) (24.50 (setf Nenndurchmesser 26.441) (setf STEIGUNG 14) (setf Gewindename "G3/4") (setf Gewindetyp :inch) (setf Gewindeprofile :PIPE_G) (setf Gewindetext "3/4")) (30.75 (setf Nenndurchmesser 33.249) (setf STEIGUNG 14) (setf Gewindename "G1") (setf Gewindetyp :inch) (setf Gewindeprofile :PIPE_G) (setf Gewindetext "1")) (otherwise (setf STEIGUNG 0) (setf Nenndurchmesser 0)) );;case );;progn );;Gewinde-definieren (Gewinde-erstellen () (if (/= STEIGUNG 0) (progn (sd-call-cmds (progn (sd-define-thread FLAECHE :nominal-diameter Nenndurchmesser :NOMINAL-DIAMETER-TEXT Gewindetext :core-diameter Durchmesser :pitch STEIGUNG :thread-type :inner ; :inner für Innengewinde oder :outer für Außengewinde :thread-unit Gewindetyp :thread-color (sd-color-to-rgb 16711935) ; Gewindefarbe definieren Magenta :thread-hand (if RECHTS_GEW :RIGHT-HAND :LEFT-HAND) :thread-profile Gewindeprofile :include-chamfer T :thread-direction RICHTUNG :thread-name ;; Gewindename (if RECHTS_GEW (format nil "~a" Gewindename) ;; Name wenn Rechtsgewinde (format nil "~a-LH" Gewindename) ;; Name wenn Linksgewinde );;if );;sd-define-thread ;; 3D-Notiz für Gewinde an Fläche anhängen (Cocreate_3d_note :action :create :items FLAECHE :note ;;Gewindename (if RECHTS_GEW (format nil "~a" Gewindename) ;; Gewinde - konstante Steigung - Rechtsgewinde (format nil "~a-LH" Gewindename) ;; Gewinde - konstante Steigung - Linksgewinde );;if );;cocreate_3d_note );;progn );;sd-call-cmds );;progn (display (format nil "fuer Durchmesser ~A ist kein gueltiges Gewinde in der Datenbank hinterlegt!" Durchmesser)) );;if (sd-end-feedback ACHSEN-FEEDBACK) (setf FLAECHE nil) );;Gewinde-erstellen ;; Richtung wechseln (Richtung-wechseln () (sd-end-feedback ACHSEN-FEEDBACK) (setf RICHTUNG (make-gpnt3d :x (* -1 (gpnt3d_x RICHTUNG)) :y (* -1 (gpnt3d_y RICHTUNG)) :z (* -1 (gpnt3d_z RICHTUNG))) ACHSEN-FEEDBACK (sd-start-direction-feedback :point MITTELPUNKT :direction RICHTUNG :disc t :color 0,0,1)) );;Richtung-wechseln ;; Eingabe auf Geo (Zylinder) und gueltige Durchmesser fuer Regel- bzw. Feingewinde pruefen (ZYLINDERFLAECHE-PRUEFEN (I) (if (sd-cylinder-p (SD-INQ-GEO-PROPS I)) (progn ;; Hier koennten weitere Vorabpruefungen fuer die Zylinderflaeche erfolgen, ... );;progn (values :error "Das ist keine gueltige Zylinderflaeche!") ; Fehlermeldung, wenn gewaehlte Flaeche keine Zylinderflaeche ist );;if );ZYLINDERFLAECHE-PRUEFEN );;local-functions );;sd-defdialog