Laser Box AutoLISP Code
7 mins read

Laser Box AutoLISP Code

Laser Box AutoLISP Code

This code can be used to generate a laser box with dove-tail edges. It includes a kerf feature and should be used as in AutoCAD. You need to know how to use AutoLISP macros to use this. Sorry this is fairly long and I didn’t put in many comments so hopefully you can make sense of it. If not comment and I will explain further. ; Jig Saw Line X Outy (defun jsbx1 (x1 x2 y1 n s krf) (setq n2 (* n 2)) (setq dx (- x2 x1)) (setq px (* (/ dx (+ n2 1)) 2.0)) (setq tx (+ (/ px 2.0) krf)) (setq gx (- (/ px 2.0) krf)) (setq p1 (list x1 y1 0.0)) (repeat n (list (setq p2 (list (+ (car p1) tx) y1 0)) (setq p3 (list (+ (car p1) tx) (+ y1 s) 0)) (setq p4 (list (+ (car p2) gx) (+ y1 s) 0)) (setq p5 (list (+ (car p2) gx) y1 0)) (command “pline” p1 p2 p3 p4 p5 “”) (setq p1 p5) )) (setq p2 (list (+ (car p1) tx) y1 0)) (command “pline” p1 p2 “”) ) ; Jig Saw Line Y Outy (defun jsby1 (x1 y1 y2 n s krf) (setq n2 (* n 2)) (setq dy (- y2 y1)) (setq py (* (/ dy(+ n2 1)) 2.0)) (setq ty (+ (/ py 2.0) krf)) (setq gy (- (/ py 2.0) krf)) (setq p1 (list x1 y1 0.0)) (repeat n (list (setq p2 (list x1 (+ (cadr p1) ty) 0)) (setq p3 (list (+ x1 s) (+ (cadr p1) ty) 0)) (setq p4 (list (+ x1 s) (+ (cadr p2) gy) 0)) (setq p5 (list x1 (+ (cadr p2) gy) 0)) (command “pline” p1 p2 p3 p4 p5 “”) (setq p1 p5) )) (setq p2 (list x1 (+ (cadr p1) ty) 0)) (command “pline” p1 p2 “”) ) ; Jig Saw Line X Inny (defun jsbx2 (x1 x2 y1 n s krf) (setq n2 (* n 2)) (setq dx (- x2 x1)) (setq px (* (/ dx (+ n2 1)) 2.0)) (setq tx (+ (/ px 2.0) krf)) (setq gx (- (/ px 2.0) krf)) (setq p1 (list (+ x1 (abs s)) (+ y1 s) 0.0)) (setq p2 (list (+ x1 gx krf) (+ y1 s) 0.0)) (setq p3 (list (car p2) y1 0.0)) (command “pline” p1 p2 p3 “”) (setq p1 p3) (repeat (- n 1) (list (setq p2 (list (+ (car p1) tx) y1 0)) (setq p3 (list (+ (car p1) tx) (+ y1 s) 0)) (setq p4 (list (+ (car p3) gx) (+ y1 s) 0)) (setq p5 (list (+ (car p3) gx) y1 0)) (command “pline” p1 p2 p3 p4 p5 “”) (setq p1 p5) )) (setq p2 (list (+ (car p1) tx) y1 0)) (setq p3 (list (+ (car p1) tx) (+ y1 s) 0)) (setq p4 (list (- (+ (car p3) gx krf) (abs s)) (+ y1 s) 0)) (command “pline” p1 p2 p3 p4 “”) ) ; Jig Saw Line Y Inny (defun jsby2 (x1 y1 y2 n s krf) (setq n2 (* n 2)) (setq dy (- y2 y1)) (setq py (* (/ dy(+ n2 1)) 2.0)) (setq ty (+ (/ py 2.0) krf)) (setq gy (- (/ py 2.0) krf)) (setq p1 (list (+ x1 s) (+ y1 (abs s)) 0.0)) (setq p2 (list (+ x1 s ) (+ y1 gy krf) 0.0)) (setq p3 (list x1 (cadr p2) 0.0)) (command “pline” p1 p2 p3 “”) (setq p1 p3) (repeat (- n 1) (list (setq p2 (list x1 (+ (cadr p1) ty) 0)) (setq p3 (list (+ x1 s) (+ (cadr p1) ty) 0)) (setq p4 (list (+ x1 s) (+ (cadr p3) gy) 0)) (setq p5 (list x1 (+ (cadr p3) gy) 0)) (command “pline” p1 p2 p3 p4 p5 “”) (setq p1 p5) )) (setq p2 (list x1 (+ (cadr p1) ty) 0)) (setq p3 (list (+ x1 s) (+ (cadr p1) ty) 0)) (setq p4 (list (+ x1 s) (- (+ (cadr p3) gy krf) (abs s)) 0)) (command “pline” p1 p2 p3 p4 “”) ) ; Jig Saw Line X Mixed (defun jsbx3 (x1 x2 y1 n s krf) (setq n2 (* n 2)) (setq dx (- x2 x1)) (setq px (* (/ dx (+ n2 1)) 2.0)) (setq tx (+ (/ px 2.0) krf)) (setq gx (- (/ px 2.0) krf)) (setq p1 (list (+ x1 (abs s)) y1 0.0)) (setq p2 (list (- (+ (car p1) tx) (abs s)) y1 0.0)) (command “pline” p1 p2 “”) (setq p1 p2) (repeat (- n 1) (list (setq p2 (list (car p1) (+ y1 s) 0)) (setq p3 (list (+ (car p1) gx) (+ y1 s) 0)) (setq p4 (list (+ (car p1) gx) y1 0)) (setq p5 (list (+ (car p3) tx) y1 0)) (command “pline” p1 p2 p3 p4 p5 “”) (setq p1 p5) )) (setq p2 (list (car p1) (+ y1 s) 0)) (setq p3 (list (+ (car p1) gx) (+ y1 s) 0)) (setq p4 (list (+ (car p1) gx) y1 0)) (setq p5 (list (- (+ (car p3) tx) (abs s)) y1 0)) (command “pline” p1 p2 p3 p4 p5 “”) ) ; Jig Saw Line Y Mixed (defun jsby3 (x1 y1 y2 n s krf) (setq n2 (* n 2)) (setq dy (- y2 y1)) (setq py (* (/ dy(+ n2 1)) 2.0)) (setq ty (+ (/ py 2.0) krf)) (setq gy (- (/ py 2.0) krf)) (setq p1 (list (+ x1 s) y1 0.0)) (setq p2 (list (car p1) (+ y1 gy krf) 0.0)) (command “pline” p1 p2 “”) (setq p1 p2) (repeat (- n 1) (list (setq p2 (list x1 (cadr p1) 0)) (setq p3 (list x1 (+ (cadr p1) ty) 0)) (setq p4 (list (+ x1 s) (+ (cadr p1) ty) 0)) (setq p5 (list (+ x1 s) (+ (cadr p3) gy) 0)) (command “pline” p1 p2 p3 p4 p5 “”) (setq p1 p5) )) (setq p2 (list x1 (cadr p1) 0)) (setq p3 (list x1 (+ (cadr p1) ty) 0)) (setq p4 (list (+ x1 s) (cadr p3) 0)) (setq p5 (list (+ x1 s) (+ (cadr p3) gy krf) 0)) (command “pline” p1 p2 p3 p4 p5 “”) ) ;(jsb 4.0 6.0 5 0.11 0.01) ;Outy (defun jsb1 (x1 x2 y1 y2 nx ny s krf) (jsbx1 x1 x2 y1 nx s krf) (jsby1 x1 y1 y2 ny s krf) (jsbx1 x1 x2 (+ y2 krf) nx (- s) krf) (jsby1 (+ x2 krf) y1 y2 ny (- s) krf) ) ;(jsb 4.0 6.0 5 0.11 0.01) ;Inny (defun jsb2 (x1 x2 y1 y2 nx ny s krf) (jsbx2 x1 x2 y1 nx s krf) (jsby2 x1 y1 y2 ny s krf) (jsbx2 x1 x2 (+ y2 krf) nx (- s) krf) (jsby2 (+ x2 krf) y1 y2 ny (- s) krf) ) ;(jsb 4.0 6.0 5 0.11 0.01) ;Mixed (defun jsb3 (x1 x2 y1 y2 nx ny s krf) (jsbx3 x1 x2 y1 nx s krf) (jsbx3 x1 x2 (+ y2 krf) nx (- s) krf) (jsby3 x1 y1 y2 ny s krf) (jsby3 (+ x2 krf) y1 y2 ny (- s) krf) ) (defun jsb (x y z nx ny nz s krf) (jsb1 0.0 x 0.0 y nx ny s krf) (jsb1 (+ x 0.5 s) (+ x x 0.5 s) 0.0 y nx ny s krf) (jsb2 (+ (* x 2) 1.0 s) (+ (* x 3) 1.0 s) 0.0 z nx nz s krf) (jsb2 (+ (* x 3) 1.5 s) (+ (* x 4) 1.5 s) 0.0 z nx nz s krf) (jsb3 (+ (* x 4) 2.0 s) (+ (* x 4) z 2.0 s) 0.0 y nz ny s krf) (jsb3 (+ (* x 4) z 2.5 s) (+ (* x 4) z z 2.5 s) 0.0 y nz ny s krf) ) The main routine is jsb. At the AutoCAD command line you would type: (jsb 2.0 3.0 4.0 2 3 4 0.125 0.01) to generate a box 2″x3″x4″ with 2 tabs, 3 tabs, and 4 tabs respectively for 1/8″ wood with a laser width (kerf) of 1/100th of an inch. Don’t forget to turn off object snap (f3) (and other snaps). You should get something like the following:

Leave a Reply