(in-package :AI_WTD_SAS) (use-package :oli) (sd-show-console-window) ;; ------------------------------------------------------------ ;; Wanne mit Lochgitter ;; ;; Wanne: ;; Laenge X = 400 mm ;; Breite Y = 200 mm ;; Hoehe = 20 mm ;; Wandstaerke = 2 mm ;; ;; Lochgitter: ;; Teilung X = 10 mm ;; Teilung Y = 10 mm ;; Durchmesser = 3 mm ;; Radius = 1.5 mm ;; Randabstand = 10 mm ;; ------------------------------------------------------------ ;; ------------------------------------------------------------ ;; Lochraster berechnen ;; ------------------------------------------------------------ (setq ANZAHL_X 39) (setq ANZAHL_Y 19) (setq GESAMTSTANZUNGEN (* ANZAHL_X ANZAHL_Y)) (setq STANZUNG 0) (setq LETZTER_PROZENT 0) ;; ------------------------------------------------------------ ;; Aussenkoerper erzeugen ;; ------------------------------------------------------------ (pprint "Aussenkoerper der Wanne wird erzeugt.") (sd-call-cmds (create_workplane :new :name "WANNE_WP")) (setq WANNE_WP (sd-inq-curr-wp)) (sd-call-cmds (progn (line :two_points (make-gpnt2d :x 0 :y 0) (make-gpnt2d :x 400 :y 0)) (line :two_points (make-gpnt2d :x 400 :y 0) (make-gpnt2d :x 400 :y 200)) (line :two_points (make-gpnt2d :x 400 :y 200) (make-gpnt2d :x 0 :y 200)) (line :two_points (make-gpnt2d :x 0 :y 200) (make-gpnt2d :x 0 :y 0)))) (sd-call-cmds (extrude :part "/WANNE" :wp WANNE_WP :keep_wp :no :distance 20)) ;; ------------------------------------------------------------ ;; Innenkoerper erzeugen ;; ------------------------------------------------------------ (pprint "Innenkoerper der Wanne wird erzeugt.") (sd-call-cmds (create_workplane :new :name "KERN_WP" :par_wp :ref_wp WANNE_WP :offset 2)) (setq KERN_WP (sd-inq-curr-wp)) (sd-call-cmds (progn (line :two_points (make-gpnt2d :x 2 :y 2) (make-gpnt2d :x 398 :y 2)) (line :two_points (make-gpnt2d :x 398 :y 2) (make-gpnt2d :x 398 :y 198)) (line :two_points (make-gpnt2d :x 398 :y 198) (make-gpnt2d :x 2 :y 198)) (line :two_points (make-gpnt2d :x 2 :y 198) (make-gpnt2d :x 2 :y 2)))) (sd-call-cmds (extrude :part "/KERN" :wp KERN_WP :keep_wp :no :distance 18)) (sd-call-cmds (subtract_3d :blanks "/WANNE" :tools "/KERN" :keep_tool :no)) ;; ------------------------------------------------------------ ;; Lochgitter erzeugen ;; ------------------------------------------------------------ (pprint (format nil "Lochgitter wird erzeugt: ~D Stanzungen" GESAMTSTANZUNGEN)) (dotimes (IX ANZAHL_X) (dotimes (IY ANZAHL_Y) ;; Laufende Nummer (setq STANZUNG (+ STANZUNG 1)) ;; Fortschritt berechnen (setq PROZENT (floor (* (/ (float STANZUNG) GESAMTSTANZUNGEN) 100))) ;; Nur alle 5 % ausgeben (when (>= PROZENT (+ LETZTER_PROZENT 5)) (setq LETZTER_PROZENT (* 5 (floor (/ PROZENT 5)))) (pprint (format nil "Lochgitter: ~D %% fertig (~D von ~D)" LETZTER_PROZENT STANZUNG GESAMTSTANZUNGEN))) ;; Lochposition berechnen (setq X_POS (+ 10 (* IX 10))) (setq Y_POS (+ 10 (* IY 10))) ;; Namen erzeugen (setq LOCH_WP_NAME (format nil "LOCH_WP_~D" STANZUNG)) (setq LOCH_NAME (format nil "/LOCH_~D" STANZUNG)) ;; Arbeitsebene (sd-call-cmds (create_workplane :new :name LOCH_WP_NAME :par_wp :ref_wp WANNE_WP :offset 0)) (setq LOCH_WP (sd-inq-curr-wp)) ;; Mittelpunkt (setq LOCH_MITTE (make-gpnt2d :x X_POS :y Y_POS)) ;; Kreis Ø3 mm (sd-call-cmds (circle :CEN_RAD LOCH_MITTE 1.5)) ;; Lochkoerper (sd-call-cmds (extrude :part LOCH_NAME :wp LOCH_WP :keep_wp :no :distance 20)) ;; Subtrahieren (sd-call-cmds (subtract_3d :blanks "/WANNE" :tools LOCH_NAME :keep_tool :no)) ) ) (pprint (format nil "Lochgitter: 100 %% fertig (~D von ~D)" GESAMTSTANZUNGEN GESAMTSTANZUNGEN)) (pprint "Fertig.") (sleep 2) (sd-hide-console-window)