Have you ever wanted to load and run a DCL file without having a DCL file?
"What are you talking about Kenny?" |
|
|
Easy, let's take a simple AutoLISP dialog example and tweek the coding a little bit so that our program "writes" the DCL file for us. Copy and paste the following and save it as "TEST_DCL3.LSP".
|
;AUTOLISP CODING STARTS HERE
(prompt "\nType TEST_DCL3 to run.....")
(defun C:TEST_DCL3 ( / dcl_id fn fname)
(vl-load-com)
(create_dialog)
(setq dcl_id (load_dialog fname))
(if (not (new_dialog "temp" dcl_id))
(exit )
);if
(set_tile "name" "Enter Name Here")
(mode_tile "name" 2)
(action_tile "name" "(setq name $value)")
(action_tile "age" "(setq age $value)")
(action_tile "accept" "(val1)")
(start_dialog)
(unload_dialog dcl_id)
(alert (strcat "Your name is " name
"\nand you are " age " years of age."))
(vl-file-delete fname)
(princ)
);defun
-----------------------
(defun val1 ()
(if (= (get_tile "name") "Enter Name Here")
(progn
(set_tile "error" "You must enter a name!")
(mode_tile "name" 2)
);progn
(val2)
);if
);defun
-------------------
(defun val2 ()
(if (< (atoi (get_tile "age")) 1)
(progn
(set_tile "error" "Invalid Age - Please Try Again!!")
(mode_tile "age" 2)
);progn
(done_dialog)
);if
);defun
-------------------
(defun create_dialog ()
(setq fname (vl-filename-mktemp "dcl.dcl"))
(setq fn (open fname "w"))
(write-line "temp : dialog { label = \"Test Dialog No 3\";
: edit_box { label = \"Enter Your Name :\"; mnemonic = \"N\";
key = \"name\"; alignment = centered; edit_limit = 30;
edit_width = 30; } : edit_box { label = \"Enter Your Age :\";
mnemonic = \"A\"; key =\"age\"; alignment = centered;
edit_limit = 3; edit_width = 3; value = \"22\";
} : button { key = \"accept\"; label = \"OK\";
is_default = true; fixed_width = true; alignment = centered;
} : errtile { width = 34; } }" fn)
(close fn)
);defun
(princ)
;AUTOLISP CODING ENDS HERE
|
Notice that there is no DCL file this time. Now load and run it.
See, what did I tell you? We've just loaded and ran a DCL file even though we haven't got one!!!
You could now compile this into a FAS file if you wished. (Hey, a FAS file with DCL - cool!)
On the next page, we'll have a closer look at this truly amazing phenomenon and have a closer look at the coding. At the same time, we'll get really clever and design ourselves a "Variable-auto-self-sizing-Dialog-Box-without-a-DCL-file".
|
posted on 2008-04-12 14:06
深藏记忆 阅读(203)
评论(0) 编辑 收藏 所属分类:
转载Vlisp