(defun c:tg_board (/ total_width_dim _redraw total_width boards_number tongue_thickness tongue_setback tongue_length tongue_overlap insertion_point
board_thickness boards_gap one_board_width board_start_geom_list board_end_geom_list vertices_list
)
(setq total_width_dim (car (entsel "\nPick dimension for total width: "))
_redraw (redraw total_width_dim 3)
total_width (cdr (assoc 42 (entget total_width_dim)))
)
(if (not AH:getvalsm)(load "Multi Getvals.lsp"))
(setq ans (AH:getvalsm (list "Enter values"
"Enter number of boards: " 5 4 "10"
"Enter board_thickness: " 5 4 "22"
"Enter tongue thickness: " 5 4 "6"
"Enter tongue setback: " 5 4 "8"
"Enter tongue_length: " 5 4 "12"
"Enter boards_gap: " 5 4 "3"
"Enter boards_chamfer: " 5 4 "3"
)
)
)
(setq boards_number (atoi (nth 0 ans))
board_thickness (atof (nth 1 ans))
tongue_thickness (atof (nth 2 ans))
tongue_setback (atof (nth 3 ans))
tongue_length (atof (nth 4 ans))
boards_gap (atof (nth 5 ans))
boards_chamfer (atof (nth 6 ans))
)
(setq insertion_point (getpoint "\nPick insertion point: ")
insertion_point_list '((0 0))
tongue_overlap (- tongue_length boards_gap)
one_board_width (/ (- total_width (* boards_gap (1- boards_number))) boards_number)
board_start_geom_list (list (list (list one_board_width (+ (- board_thickness) tongue_setback)) ; 1
(list one_board_width (+ (- board_thickness) boards_chamfer)) ; 2
(list (- one_board_width boards_chamfer) (- board_thickness)) ; 3 this control chamfer
(list boards_chamfer (- board_thickness)) ; 4 this controls chamfer
(list 0 (+ (- board_thickness) boards_chamfer)) ; 5
(list 0 (+ (- board_thickness) tongue_setback)) ; 6
(list (- tongue_length) (+ (- board_thickness) tongue_setback)) ; 7
(list (- tongue_length) (+ (- board_thickness) tongue_setback tongue_thickness)) ; 8
(list 0 (+ (- board_thickness) tongue_setback tongue_thickness)) ; 9
(list 0 0) ; 10
(list one_board_width 0) ; 11
(list one_board_width (+ (- board_thickness) tongue_setback tongue_thickness)) ; 12
)
(list (list (- one_board_width tongue_overlap) (+ (- board_thickness) tongue_setback tongue_thickness)) ; 1
(list (- one_board_width tongue_overlap boards_gap) (+ (- board_thickness) tongue_setback tongue_thickness)) ; 2
(list (- one_board_width tongue_overlap boards_gap) (+ (- board_thickness) tongue_setback)) ; 3
(list (- one_board_width tongue_overlap) (+ (- board_thickness) tongue_setback)) ; 4
)
)
board_end_geom_list (append (car board_start_geom_list)
(list (list (+ one_board_width tongue_length) (+ (- board_thickness) tongue_setback tongue_thickness))) ; 13
(list (list (+ one_board_width tongue_length) (+ (- board_thickness) tongue_setback))) ; 14
)
)
(repeat (1- boards_number) (setq insertion_point_list (append insertion_point_list (list (mapcar '+ (last insertion_point_list) (list (+ one_board_width boards_gap) 0)))))) (foreach insertion (vl-remove (last insertion_point_list) insertion_point_list)
(foreach pline board_start_geom_list
(vla-addlightweightpolyline (vla-get-block (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))))
(vlax-safearray-fill (vlax-make-safearray vlax-vbdouble
(cons 1 (length (setq vertices_list
(apply 'append
(mapcar '(lambda (vertex) (mapcar '+ insertion_point insertion vertex))
pline
)
)
)
)
)
)
vertices_list
)
)
)
)
(vlax-put (vla-addlightweightpolyline (vla-get-block (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))))
(vlax-safearray-fill (vlax-make-safearray vlax-vbdouble
(cons 1 (length (setq vertices_list
(apply 'append
(mapcar '(lambda (vertex) (mapcar '+ insertion_point
(last insertion_point_list)
vertex
)
)
board_end_geom_list
)
)
)
)
)
)
vertices_list
)
)
'closed
1
)
(redraw total_width_dim 4)
(princ)
)
(c:tg_board)