/db_自贡黄明儒_ 发表于 2014-12-24 15:57:53

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 *****



819534890 发表于 2014-12-24 16:25:11

这个经常用到,不用分开2个文件。不错

/db_自贡黄明儒_ 发表于 2014-12-24 16:11:13

本帖最后由 /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)
)

HLCAD 发表于 2014-12-24 16:42:02

非常实用的工具,感谢黄大侠!

sicky111 发表于 2014-12-24 17:10:11

不错,学习了。

wzg356 发表于 2014-12-24 19:02:39

顶顶顶一个,

lucas3 发表于 2014-12-24 19:29:23

感谢黄大师分享!

天青色 发表于 2014-12-24 19:51:12

:)谢谢分享

viphappy 发表于 2014-12-24 19:52:39

非常实用的工具,感谢黄工!

abc498091367 发表于 2014-12-24 22:48:26

学习{:soso_e100:}

无痕 发表于 2014-12-24 22:50:44

看看写的怎么样

范建威 发表于 2014-12-24 23:46:33

看看有什么新发现可以借用!

q3_2006 发表于 2014-12-25 06:10:22

我也喜欢合并到一块...文件多了很烦...

zhangq_cai1 发表于 2014-12-25 08:00:29

看看~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~···

spp_wall 发表于 2014-12-25 08:57:27

学习下!!!谢谢!!!
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: DCL文件转Lisp文件