DCL文件转Lisp文件
本帖最后由 /db_自贡黄明儒_ 于 2021-2-19 08:45 编辑窃以为DCL用不着用odcl之类花里胡哨的东西,功能才是重要的,DCL界面简洁。
DCL文件在调试时确实方便,调试完毕后将XXX.dcl文件转成lisp以便于编译
(defun parse3 (str delim)
(xd::string:regexps delim str "")
)
**** Hidden Message *****
这个经常用到,不用分开2个文件。不错
本帖最后由 /db_自贡黄明儒_ 于 2014-12-24 16:15 编辑
《风之影》的粗糙度确实写得很棒,原DCL如下
roughness:dialog
{
label="粗糙度";
spacer;
:row
{
:column
{
:image_button
{
key = "RM";
aspect_ratio = 1;
width = 8;
fixed_width= true;
color = graphics_background;
allow_accept = true;
}
:image_button
{
key = "UN";
aspect_ratio = 1;
width = 8;
fixed_width= true;
color = graphics_background;
allow_accept = true;
}
:image_button
{
key = "BS";
aspect_ratio = 1;
width = 8;
fixed_width= true;
color = graphics_background;
allow_accept = true;
}
}
:list_box
{
key="RV";
value=8;
width=16;
height=14;
allow_accept=true;
}
}
//:row
//{
:errtile
{
width=18;
}
// :toggle
// {
// label="其余";
// key="other";
// }
//}
ok_cancel;
}
《风之影》的粗糙度确实写得很棒,转后如下
(defun rough:dcl (/ DCLID FN FNAME MAX_X MAX_Y PRCS)
(setq fname (vl-filename-mktemp nil nil ".dcl"))
(setq fn (open fname "w"))
(write-line "rough : dialog" fn)
(write-line "{" fn)
(write-line "label=\"粗糙度\";" fn)
(write-line "spacer;" fn)
(write-line ":row" fn)
(write-line "{" fn)
(write-line " :column" fn)
(write-line " {" fn)
(write-line " :image_button" fn)
(write-line " {" fn)
(write-line " key = \"RM\";" fn)
(write-line " aspect_ratio = 1;" fn)
(write-line " width = 8;" fn)
(write-line " fixed_width= true;" fn)
(write-line " color = graphics_background;" fn)
(write-line " allow_accept = true;" fn)
(write-line " }" fn)
(write-line " :image_button" fn)
(write-line " {" fn)
(write-line " key = \"UN\";" fn)
(write-line " aspect_ratio = 1;" fn)
(write-line " width = 8;" fn)
(write-line " fixed_width= true;" fn)
(write-line " color = graphics_background;" fn)
(write-line " allow_accept = true;" fn)
(write-line " }" fn)
(write-line " :image_button" fn)
(write-line " {" fn)
(write-line " key = \"BS\";" fn)
(write-line " aspect_ratio = 1;" fn)
(write-line " width = 8;" fn)
(write-line " fixed_width= true;" fn)
(write-line " color = graphics_background;" fn)
(write-line " allow_accept = true;" fn)
(write-line " }" fn)
(write-line " }" fn)
(write-line " :list_box" fn)
(write-line " {" fn)
(write-line " key=\"RV\";" fn)
(write-line " value=8;" fn)
(write-line " width=16;" fn)
(write-line " height=14;" fn)
(write-line " allow_accept=true;" fn)
(write-line " }" fn)
(write-line "}" fn)
(write-line "//:row" fn)
(write-line "//{" fn)
(write-line " :errtile" fn)
(write-line " {" fn)
(write-line " width=18;" fn)
(write-line " }" fn)
(write-line "// :toggle" fn)
(write-line "// {" fn)
(write-line "// label=\"其余\";" fn)
(write-line "// key=\"other\";" fn)
(write-line "// }" fn)
(write-line "//}" fn)
(write-line "ok_cancel;" fn)
(write-line "}" fn)
(close fn)
(setq dclid (load_dialog fname))
;;以下根据情况处理
(new_dialog "rough" dclid) ;":dialog"
(start_image "RM")
(setq max_x (dimx_tile "RM")
max_y (dimy_tile "RM")
)
(slide_image 5
5
(- max_x 10)
(- max_y 10)
(strcat (findfile "rough.slb") "(RM)")
)
(end_image)
(start_image "UN")
(setq max_x (dimx_tile "UN")
max_y (dimy_tile "UN")
)
(slide_image 5
5
(- max_x 10)
(- max_y 10)
(strcat (findfile "rough.slb") "(UN)")
)
(end_image)
(start_image "BS")
(setq max_x (dimx_tile "BS")
max_y (dimy_tile "BS")
)
(slide_image 5
5
(- max_x 10)
(- max_y 10)
(strcat (findfile "rough.slb") "(BS)")
)
(end_image)
(start_list "RV")
(mapcar 'add_list llist)
(end_list)
(set_tile "RV" "8")
(set_tile "error" (strcat "粗糙度为 Ra3.2"))
(action_tile "RM" "(setq prcs 1)")
(action_tile "UN" "(setq prcs 2)")
(action_tile "BS" "(setq prcs 0)")
(action_tile "RV" "(do_list)")
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq return# (start_dialog))
(unload_dialog dclid)
(vl-file-delete fname)
(princ)
)
非常实用的工具,感谢黄大侠! 不错,学习了。 顶顶顶一个,
感谢黄大师分享! :)谢谢分享 非常实用的工具,感谢黄工! 学习{:soso_e100:} 看看写的怎么样
看看有什么新发现可以借用!
我也喜欢合并到一块...文件多了很烦... 看看~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~··· 学习下!!!谢谢!!!