明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 363|回复: 3

[提问] 请大佬帮忙看看

[复制链接]
发表于 2024-12-4 11:08:28 | 显示全部楼层 |阅读模式
本帖最后由 624777395 于 2024-12-4 12:25 编辑
  1. (defun C:E1E (/ dcl_file tmp-dcl-file-name dcl_id AA AAZ)
  2.   ;; 创建临时DCL文件并写入对话框定义
  3.   (setq dcl_file (open (setq tmp-dcl-file-name (vl-filename-mktemp nil nil ".DCL")) "w"))
  4.   (foreach x
  5.     '(
  6.       "ZW:dialog {"
  7.       "  label = "测试窗体";"
  8.       "  :row {"
  9.       "    :edit_box { key = "AAZ"; height = 1; edit_width = 7; }"
  10.       "  }"
  11.       "  :row {"
  12.       "    :button { label = "测试"; key = "CESHI"; height = 1; }"
  13.       "  }"
  14.       "  ok_cancel;"
  15.       "}"
  16.     )
  17.     (write-line x dcl_file)
  18.   )
  19.   (close dcl_file)

  20.   ;; 加载并显示对话框
  21.   (setq dcl_id (load_dialog tmp-dcl-file-name))
  22.   (if (not (new_dialog "ZW" dcl_id))
  23.     (progn
  24.       (unload_dialog dcl_id)
  25.       (exit)
  26.     )
  27.   )
  28.   ;; 编辑框记忆功能
  29.   (if (setq AAZ (vl-bb-ref 'AAZ))
  30.     (set_tile "AAZ" AAZ) ; 对话框二次出现
  31.     (set_tile "AAZ" "1") ; 对话框首次出现
  32.   )
  33.   
  34. (action_tile "AAZ"  (vl-prin1-to-string'(
  35.                         (lambda ( / itm )
  36.          (setq AAZ(get_tile "AAZ"))
  37.          (vl-bb-set 'AAZ AAZ);_保存原值
  38.         )
  39.                  )
  40.    )
  41. )

  42.   ;; 设置取消按钮的动作
  43.   (action_tile "cancel" "(done_dialog 0)")

  44.   ;; 设置测试按钮的动作
  45.   (action_tile "CESHI" "(done_dialog 1)")

  46.   ;; 启动对话框
  47.   (setq AA (start_dialog))

  48.   ;; 根据用户选择执行相应操作
  49.   (if (= AA 1)
  50.     (CHZ)
  51.   )

  52.   ;; 卸载对话框
  53.   (unload_dialog dcl_id)

  54.   ;; 清理临时文件
  55.   (vl-file-delete tmp-dcl-file-name)

  56.   (princ)
  57. )


  58. ;; 处理测试按钮点击后的逻辑
  59. (defun CHZ ()

  60.   (setq qws (* 5 (atof(get_tile "AAZ"))))

  61.   ;; 打印信息到命令行
  62.   (princ (strcat "\n数值:" qws " "))
  63.   (princ)
  64. )

  65. ;; 确保在加载时不会自动运行
  66. (princ)
这段代码点击测试按钮后,会提示类型错误,大佬们帮忙看看哪里出错了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2024-12-4 11:47:13 | 显示全部楼层
这里有问题:

'(
      "ZW:dialog {"
      "  label = \"测试窗体\";"
      "  :row {"
      "    :edit_box { key = \"AAZ\"; height = 1; edit_width = 7; }"
      "  }"
      "  :row {"
      "    :button { label = \"测试\"; key = \"CESHI\"; height = 1; }"
      "  }"
      "  ok_cancel;"
      "}"
    )

回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-4 12:24:21 | 显示全部楼层
ssyfeng 发表于 2024-12-4 11:47
这里有问题:

'(

原代码是有斜杠的,不知道为什么上传之后就不见斜杠了
回复 支持 反对

使用道具 举报

发表于 2024-12-4 12:33:39 | 显示全部楼层
手写(vl-filename-mktemp nil nil ".DCL")临时对话框,确实容易出错。所以我发布了由程序读取DCL,这样就不容易出错了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-23 01:01 , Processed in 0.180564 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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