明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 605|回复: 5

[提问] 根据对话框选择项目生成表格问题求助,谢谢~

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式
  1. (defun c:tt (/ make_dcl)
  2.   (defun make_dcl  (/ lst_str str file f) ; ; 面板的界面显示dcl
  3.     (setq lst_str
  4.       '(
  5. "  dcl_test:dialog                                                  "
  6. "  {alignment=centered;label = "试用";                                      "
  7. "  :boxed_column                                                  "
  8. "    {fixed_height = true; label = "非必选项";                                  "
  9. "  :toggle {key = "xx_1"; label = "选项1";}                                    "
  10. "  :toggle {key = "xx_2"; label = "选项3";}                                    "
  11. "  :toggle {key = "xx_3"; label = "选项4";}                                    "
  12. "  :toggle {key = "xx_4"; label = "选项6";}                                    "
  13. "  :toggle {key = "xx_5"; label = "选项9";}                                    "
  14. "      spacer_0;                                                "
  15. "    }                                                      "
  16. "    :row{                                                    "
  17. "    :button {key = \accept\;  is_default = true;   fixed_width = true; label = "确定";}            "
  18. "    :button {key = "cancel";   is_cancel = true;   fixed_width = true; label = "取消";}            "
  19. "      }                                                    "
  20. "      }                                                    "
  21.       )
  22.     )
  23.     (setq file (vl-filename-mktemp "DclTemp.dcl") )
  24.     (setq f (open file "w") )
  25.     (foreach str lst_str
  26.       (princ "\n" f)
  27.       (princ str f)
  28.     )
  29.     (close f)
  30.     file
  31.   )
  32.   
  33.   (if (= (setq dcl_id (load_dialog (setq dcl_file (make_dcl) ) ) ) 0) (progn (exit) ) )
  34.   (if dcl_file (vl-file-delete dcl_file) )
  35.     (if (not (new_dialog "dcl_test" dcl_id) ) (progn (exit) ) )
  36.   
  37.   (action_tile "accept" "(done_dialog 1)")
  38.   (action_tile "cancel" "(done_dialog 0) (exit)")
  39.   (start_dialog)
  40.     (unload_dialog dcl_id)
  41. )
1.选项中的必选项和非必选项是无规律穿插的;
2.解决方案的行数选项对应,但行数不固定;
3.非必选项的选择数量也随机的。
最后根据选择的非必选项和默认已经选择的必选项生成表格。这样的代码该怎么写?用最原始的办法把每条的位置都写出来,再用cond来设置显示。如果选项少的话还行,选项多了就太难表达了,请问有没有好的表达方式?谢谢~

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 7 天前 | 显示全部楼层
一种方式是生成表格前根据选择组织数据结构,然后生成。另外一种是直接先生成完整表格(ACAD_TABLE),然后删除不需要的行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 7 天前 | 显示全部楼层
kozmosovia 发表于 2025-1-24 10:05
一种方式是生成表格前根据选择组织数据结构,然后生成。另外一种是直接先生成完整表格(ACAD_TABLE),然后 ...

第一种方式的话这个数据结构不知道怎么个组织法,选项少的话还能按最原始的来搭配,选项多的话直接让人崩溃;
第二种方式是话应该会用到整体移动这样的函数吧?(ACAD_TABLE)也还没接触过;
现在在尝试的是用(entlast)找上一个生成的横线坐标,目前处于失败状态,唉!有点难搞啊~
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
直接按照顺序拼接数据 统一生成 这还有什么疑问
回复 支持 反对

使用道具 举报

 楼主| 发表于 7 天前 | 显示全部楼层
飞雪神光 发表于 2025-1-24 10:54
直接按照顺序拼接数据 统一生成 这还有什么疑问

感谢飞版回复!因为选项数量不是固定的,与之对应的解决方案行数只相对固定,先前没想明白这个依附关系,刚用(entlast)找上一个生成的横线坐标解决问题了~
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
谢谢分享谢谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-31 10:28 , Processed in 0.174045 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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