Getting The Sizes 1
For drawing a cabinet we need to have the sizes. We need to know:
- What is the width of the cabinet?
- What is the number of drawers?
- What is the size of the overhang?
- What is the thickness of the top?
In the previous post I showed you the dialog box that is used for the the input of the sizes. See the area that is concerned.
The DCL File
We need a DCL file in which the dialog box is specified. This is how the DCL file for drawing a cabinet looks.
cabin:dialog
{
label="Cabinet";
:boxed_column
{
:image
{
height=30;
width=80;
key="im";
}
spacer_1;
}
spacer_1;
:
boxed_column
{
width
= 25;
fixed_width=true;
alignment="centered";
:
edit_box
{
key
= "wd";
label
= "Width:";
edit_width
= 5;
initial_focus
= true;
}
:popup_list
{
key
= "nr";
label
= "Drawers:";
edit_width
= 1;
value
= "";
}
:
edit_box
{
key
= "oh";
label
= "Overhang:";
edit_width
= 5;
}
:
edit_box
{
key
= "th";
label
= "Thickness top:";
edit_width
= 5;
}
spacer_1;
}
spacer_1;
ok_only;
}
Two
AutoLISP Functions
Here are both functions:
(defun getsz (/ di fl hi ls nr oh th wd wi)
(setq fl 0
wd 600
oh 50
th 25
)
(while (= fl 0)
(setq di (load_dialog "c:/make/cabin.dcl"))
(new_dialog "cabin" di)
(setq wi (dimx_tile "im")
hi (dimy_tile "im")
)
(start_image "im")
(fill_image 0 0 wi hi 0)
(slide_image -100 -100
(+ wi 100)
(+ hi 100)
"c:/make/cabin.sld"
)
(end_image)
(set_tile "wd" (itoa wd))
(set_tile "nr" "2")
(set_tile "oh" (itoa oh))
(set_tile "th" (itoa th))
(mode_tile "wd" 3)
(start_list "nr" 3)
(add_list "3")
(add_list "4")
(add_list "5")
(add_list "6")
(end_list)
(action_tile "accept" "(setq ls (value))
(done_dialog)")
(start_dialog)
(unload_dialog di)
(setq fl (nth 0 ls)
wd (nth 1 ls)
nr (nth 2 ls)
oh (nth 3 ls)
th (nth 4 ls)
)
)
(list wd nr oh th)
)
(defun value (/ fl nr oh th wd)
(setq wd (atoi (get_tile "wd"))
nr (atoi (get_tile "nr"))
oh (atoi (get_tile "oh"))
th (atoi (get_tile "th"))
)
(cond
((= nr 0)
(setq nr 3)
)
((= nr 1)
(setq nr 4)
)
((= nr 2)
(setq nr 5)
)
((= nr 3)
(setq nr 6)
)
)
(if (< wd 400)
(progn
(alert "Minimum width is 400")
(setq fl 0)
)
(setq fl 1)
)
(list fl wd nr oh th)
)
Next Post
You will get a full explanation of the DCL file and the AutoLISP functions in the next post of this series.