明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 902|回复: 1

[源码] 从来没写过对话框,今天练习一下

[复制链接]
发表于 2015-11-17 14:08 | 显示全部楼层 |阅读模式
  1. (defun c:ltcal  (/ a b m n h)
  2.   (setq  dclname
  3.    (cond
  4.      (
  5.       (setq tempname (vl-filename-mktemp "ltcal-dcl-tmp.dcl")
  6.       filen     (open tempname "w"))
  7.       (foreach stream
  8.          '(
  9.            "\n"
  10.            "ltcal:dialog {\n"
  11.            "    label = \"\\n菱台体积计算\" ;\n"

  12.            "    :row {\n"

  13.            "        :boxed_column  {\n"
  14.            "    :column {\n"
  15.            "        :edit_box {\n"
  16.            "            label = \"上底面边长a \" ;\n"
  17.            "            key = \"sda_name\" ;\n"
  18.            "            width = 22 ;\n"
  19.            "        }\n"
  20.            "        :edit_box {\n"
  21.            "            label = \"上底面边长b \" ;\n"
  22.            "            key = \"sdb_name\" ;\n"
  23.            "            width = 22 ;\n"
  24.            "        }\n"
  25.            "        :edit_box {\n"
  26.            "            label = \"下底面边长m\" ;\n"
  27.            "            key = \"xda_name\" ;\n"
  28.            "            width = 22 ;\n"
  29.            "        }\n"
  30.            "        :edit_box {\n"
  31.            "            label = \"下底面边长n \" ;\n"
  32.            "            key = \"xdb_name\" ;\n"
  33.            "            width = 22 ;\n"
  34.            "        }\n"
  35.            "        :edit_box {\n"
  36.            "            label = \"两底面高度H\" ;\n"
  37.            "            key = \"GD_name\" ;\n"
  38.            "            width = 22 ;\n"
  39.            "        }\n"
  40.            "        }\n"
  41.            "        }\n"


  42.            "        :boxed_column  {\n"
  43.            "        :text {\n"
  44.            "            label = \"体积V=H/6\" ;\n"
  45.            "        }\n"

  46.            "        :text {\n"
  47.            "            label = \"[a*b+m*n+(a+m)*(b+n)]\" ;\n"
  48.            "        }\n"

  49.            "        :row {\n"
  50.            "        :button {\n"
  51.            "            key = \"js_ok\" ;\n"
  52.            "            label = \"计算\" ;\n"
  53.            "            width = 5 ;\n"
  54.            "        }\n"

  55.            "        :button {\n"
  56.            "            key = \"FZ_bt\" ;\n"
  57.            "            label = \"复制结果\" ;\n"
  58.            "            width = 15 ;\n"
  59.            "        }\n"
  60.            "        }\n"

  61.            "        :edit_box {\n"
  62.            "            label = \"计算结果\" ;\n"
  63.            "            key = \"JG_name\" ;\n"
  64.            "            width = 27 ;\n"
  65.            "        }\n"

  66.            "        :button {\n"
  67.            "            is_cancel = true ;\n"
  68.            "            key = \"btn_cancle\" ;\n"
  69.            "            label = \"退出\" ;\n"
  70.            "        }\n"

  71.            "        }\n"
  72.            "        }\n"

  73.            "        :boxed_column  {\n"
  74.            "        :text {\n"
  75.            "            label = \"     ____a_____\" ;\n"
  76.            "            alignment = centered ;\n"
  77.            "        }\n"
  78.            "        :text {\n"
  79.            "            label = \"   ╱  /       b / ╲\" ;\n"
  80.            "            alignment = centered ;\n"
  81.            "        }\n"
  82.            "        :text {\n"
  83.            "            label = \"   ╱    /_________/     ╲\" ;\n"
  84.            "            alignment = centered ;\n"
  85.            "        }\n"
  86.            "        :text {\n"
  87.            "            label = \"   /    ╱     H      \\\\      /\" ;\n"
  88.            "            alignment = centered ;\n"
  89.            "        }\n"
  90.            "        :text {\n"
  91.            "            label = \"    /  ╱                \\\\    / n  \" ;\n"
  92.            "            alignment = centered ;\n"
  93.            "        }\n"
  94.            "        :text {\n"
  95.            "            label = \"/╱           m        \\\\  /  \" ;\n"
  96.            "            alignment = centered ;\n"
  97.            "        }\n"
  98.            "        :text {\n"
  99.            "            label = \" ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \"   ;\n"
  100.            "            alignment = centered ;\n"
  101.            "        }\n"

  102.            "        :text {\n"
  103.            "            label = \"              注:a与m、b与n需分别平行\" ;\n"
  104.            "        }\n"
  105.            "        }\n"

  106.            "}\n"
  107.            )
  108.         (princ stream filen)
  109.         )
  110.       (close filen)
  111.       tempname
  112.       )
  113.      )
  114.   )
  115.   (SETQ DCL_ID (LOAD_DIALOG dclname))
  116.   (NEW_DIALOG "ltcal" DCL_ID)

  117.   (mode_tile "JG_name" 1)

  118.   (action_TILE
  119.     "js_ok"
  120.     "(cal_res)(SET_TILE \"JG_name\" (rtos (* (/ h 6) (+ (* a b)(* m n) (* (+ a m)(+ b n)))) 2 4) )
  121.        (mode_tile \"JG_name\" 2) ")

  122.   (action_tile
  123.     "FZ_bt"
  124.     "(SET-CLIP-STRING (get_TILE \"JG_name\" ))")

  125.   (START_DIALOG)
  126.   (UNLOAD_DIALOG DCL_ID)
  127.   (vl-file-delete dclname)
  128.   (prin1)
  129.   )


  130. (defun cal_res  ()
  131.   (SETQ a (atof (GET_TILE "sda_name")))
  132.   (SETQ b (atof (GET_TILE "sdb_name")))
  133.   (SETQ m (atof (GET_TILE "xda_name")))
  134.   (SETQ n (atof (GET_TILE "xdb_name")))
  135.   (SETQ h (atof (GET_TILE "GD_name")))
  136.   )

  137. (defun SET-CLIP-STRING  (STR / HTML RESULT)
  138.   (and (= (type STR) 'STR)
  139.        (setq HTML (vlax-create-object "htmlfile"))
  140.        (setq RESULT (vlax-invoke
  141.           (vlax-get  (vlax-get HTML 'PARENTWINDOW)
  142.         'CLIPBOARDDATA
  143.         )
  144.           'SETDATA
  145.           "Text"
  146.           STR
  147.           )
  148.        )
  149.        (vlax-release-object HTML)
  150.        )
  151.   )

  152. (prin1)

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-11-17 15:05 | 显示全部楼层
http://bbs.mjtd.com/thread-170154-1-1.html
CAD画图的方式编写DCL
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-27 05:56 , Processed in 0.301617 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表