找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 773|回复: 4

[原创] 选项打勾

[复制链接]
发表于 2021-7-9 19:34:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 dcl1214 于 2021-7-9 19:36 编辑

  1. (defun $op-check$ (tiles    dclname  lst      /         *error*
  2.        dcl_id   dcl-f    dialog   f         keys
  3.        rows      startnum tiles-key         tmp_f
  4.        tmp_lst
  5.       )
  6.           ;选项打钩,选项勾选
  7.           ;调用示例:
  8.           ;(setq tiles(list (list(cons "编码" "1")(cons "名称" "0")(cons "供应商" "1")(cons "CAD前视图祖玛" "0"))(list(cons "孔位数" "1")(cons "颜色" "0")(cons "尺寸" "0")(cons "备注" "0"))))
  9.           ;($op-check$ tiles nil nil)
  10.   (defun *error* (s)
  11.     (if  (and (= dialog 1) (< dialog 2))
  12.       (repeat 10
  13.   (print
  14.     "可能是因为传入的列表行数列数没整理好导致界面超出显示器分辨率"
  15.   )
  16.       )
  17.       (print s)
  18.     )
  19.   )
  20.   (cond  ((and tiles
  21.         (= (type tiles) 'list)
  22.         (= (type (car tiles)) 'list)
  23.         (= (type (car (car tiles))) 'list)
  24.         (member (cdr (car (car tiles))) (list '"0" '"1"))
  25.    )
  26.    nil
  27.   )
  28.   ((and tiles
  29.         (= (type tiles) 'list)
  30.         (= (type (car tiles)) 'list)
  31.         (= (type (car (car tiles))) 'str)
  32.         (member (cdr (car tiles)) (list '"0" '"1"))
  33.    )
  34.    (setq tiles (list tiles))
  35.   )
  36.   ((and tiles
  37.         (= (type tiles) 'list)
  38.         (= (type (car tiles)) 'str)
  39.    )
  40.    (setq tiles
  41.     (mapcar  (function
  42.         (lambda (a)
  43.           (mapcar (function (lambda (b) (cons b "0"))) a)
  44.         )
  45.       )
  46.       (list tiles)
  47.     )
  48.    )
  49.   )
  50.   (t (setq tiles nil))
  51.   )
  52.   (setq  tiles-key
  53.    (mapcar
  54.      (function
  55.        (lambda (r ir)
  56.          (mapcar
  57.      (function
  58.        (lambda (a ic / k str)
  59.          (setq k (strcat "r" (vl-princ-to-string ir)))
  60.          (setq k (strcat k "c" (vl-princ-to-string ic)))
  61.          (setq
  62.            str (strcat ":toggle {"
  63.            (strcat "key = \"" k "\" ;")
  64.            (strcat "label = \"" (car a) "\" ;")
  65.            (strcat "value = " (cdr a) " ;")
  66.            "width = 20 ;"
  67.            "vertical_margin = none ;"
  68.            "horizontal_margin = none ;"
  69.            "}"
  70.          )
  71.          )
  72.          (list (cons "字段" (car a))
  73.          (cons "key" k)
  74.          (cons "str" str)
  75.          )
  76.        )
  77.      )
  78.      r
  79.      (mapcar '1+ (wire:range (length r)))
  80.          )
  81.        )
  82.      )
  83.      tiles
  84.      (mapcar '1+ (wire:range (length tiles)))
  85.    )
  86.   )
  87.   (setq
  88.     keys
  89.      (mapcar
  90.        (function
  91.    (lambda (a)
  92.      (mapcar (function (lambda (b) (cdr (assoc "key" b)))) a)
  93.    )
  94.        )
  95.        tiles-key
  96.      )
  97.   )
  98.   (setq keys (apply 'append keys))
  99.   (setq
  100.     rows
  101.      (mapcar
  102.        (function
  103.    (lambda (a)
  104.      (mapcar (function (lambda (b) (cdr (assoc "str" b)))) a)
  105.    )
  106.        )
  107.        tiles-key
  108.      )
  109.   )
  110.   (setq
  111.     rows (mapcar
  112.      (function
  113.        (lambda (a / str)
  114.          (setq str (apply 'strcat a))
  115.          (setq str (strcat ":concatenation {" str "}"))
  116.          (setq str
  117.           (strcat
  118.       str
  119.       ":spacer {fixed_height = true ;height = 0.25 ;vertical_margin = none ;horizontal_margin = none ;}"
  120.           )
  121.          )
  122.          str
  123.        )
  124.      )
  125.      rows
  126.    )
  127.   )
  128.   (setq  rows
  129.    (append
  130.      (list "op:dialog {key = \"op\" ;label = \"请选择\" ;")
  131.      (list
  132.        ":spacer {fixed_height = true ;height = 0.2 ;vertical_margin = none ;horizontal_margin = none ;}"
  133.      )
  134.      rows
  135.      (list
  136.        ":button {is_cancel = true ;key = \"tc\" ;label = \"确定\" ;vertical_margin = none ;horizontal_margin = none ;}"
  137.      )
  138.      (list "vertical_margin = none ;horizontal_margin = none ;}")
  139.    )
  140.   )
  141.   (setq tmp_lst rows)
  142.   (or dclname (setq dclname "op"))
  143.   (if (and dclname tiles)
  144.     (progn
  145.       (setq
  146.   f (strcat (vl-filename-directory (vl-filename-mktemp)) "\\")
  147.       )
  148.       (and (setq tmp_f (strcat f dclname ".dcl")))
  149.       (if (and tmp_f (findfile tmp_f))
  150.   (vl-file-delete tmp_f)
  151.       )
  152.       (setq dcl-f (_sensor:lst->dat tmp_f tmp_lst T NIL))
  153.       (and dcl-f (setq dcl_id (load_dialog dcl-f)))
  154.       (if dcl_id
  155.   (progn
  156.     (setq dialog 1)
  157.     (and dcl_id (new_dialog "op" dcl_id))
  158.     (setq dialog 2)
  159.     (ACTION_TILE
  160.       "tc"
  161.       "(PROGN(setq keys-gou(mapcar(function(lambda(a)(cons a(get_tile a))))keys))(done_dialog 0))"
  162.     )
  163.     (setq startNum (start_dialog))
  164.     (and dcl_id (unload_dialog dcl_id))
  165.   )
  166.       )
  167.     )
  168.   )
  169.   (mapcar
  170.     (function
  171.       (lambda (a)
  172.   (mapcar
  173.     (function (lambda (b / tag key v)
  174.           (setq tag (cdr (assoc "字段" b)))
  175.           (setq key (cdr (assoc "key" b)))
  176.           (setq v (vl-some (function (lambda (c)
  177.                (if (= (car c) key)
  178.                  (cdr c)
  179.                )
  180.              )
  181.                )
  182.                keys-gou
  183.             )
  184.           )
  185.           (or v (setq v "0"))
  186.           (cons tag v)
  187.         )
  188.     )
  189.     a
  190.   )
  191.       )
  192.     )
  193.     tiles-key
  194.   )
  195. )(defun _sensor:lst->dat (filename data extension lst / file)
  196.   ;写对话框文件
  197.       (if (not filename)
  198.         (setq filename (getfiled "Create Output File" "" extension 1))
  199.       )
  200.       (if (setq file (open filename "w"))
  201.         (progn
  202.           (cond        ((= (type data) 'STR)
  203.                  (write-line data file)
  204.                 )
  205.                 ((= (type data) 'LIST)
  206.                  (foreach line data
  207.                    (write-line line file)
  208.                  )
  209.                 )
  210.           )
  211.           (close file)
  212.           filename
  213.         )
  214.         nil
  215.       )
  216.     )


QQ图片20210709193403.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 8975个

财富等级: 富甲天下

发表于 2021-7-10 12:22:29 | 显示全部楼层
指令: (setq tiles(list (list(cons "编码" "1")(cons "名称" "0")(cons "供应商" "1")(cons
"CAD前视图祖玛" "0"))(list(cons "孔位数" "1")(cons "颜色" "0")(cons "尺寸" "0")(cons "备注"
"0"))))
((("编码" . "1") ("名称" . "0") ("供应商" . "1") ("CAD前视图祖玛" . "0")) (("孔位数" . "1")
("颜色" . "0") ("尺寸" . "0") ("备注" . "0")))

指令: (op-check tiles nil nil)

"no function definition: WIRE:RANGE"

点评

其他帖子里面有这个函数  详情 回复 发表于 2021-7-10 14:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-10 14:04:58 | 显示全部楼层
yoyoho 发表于 2021-7-10 12:22
指令: (setq tiles(list (list(cons "编码" "1")(cons "名称" "0")(cons "供应商" "1")(cons
"CAD前视图 ...

其他帖子里面有这个函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3904个

财富等级: 富可敌国

发表于 2021-7-11 09:31:47 | 显示全部楼层
做一个热心并受欢迎的人
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6202个

财富等级: 富甲天下

发表于 2021-7-12 19:45:21 | 显示全部楼层
收藏,有时间研究研究  
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 13:35 , Processed in 0.471422 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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