回望南山
记忆痕迹可以鲜明, 回望往事如数家珍——
posts - 177,  comments - 54,  trackbacks - 0
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 深藏记忆 阅读(199) 评论(0)  编辑  收藏 所属分类: 转载Vlisp

飘过是缘,相识最真

订阅到抓虾
google reader
gougou


点击这里给我发消息


<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

留言簿(5)

随笔分类

随笔档案

文章分类

文章档案

相册

收藏夹

八面来息

天天充电

同行者

积分与排名

  • 积分 - 58698
  • 排名 - 61

最新评论

阅读排行榜

评论排行榜