找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1127|回复: 4

[每日一码] 对话框界面的选择相同属性构建多个选择集

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2021-1-28 09:11:50 | 显示全部楼层 |阅读模式

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

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

×

Ssmatch:ssm选择具有与在对话框中选中的所选功能相同的属性的对象; ssmm允许用户进行多项选择。
每个都使用从选定对象创建的过滤器以及对话框中选中的属性。
命令:ssm和ssmm

  1. ;;;=====================================================================================;;;

  2. ;; Boite de dialogue

  3. (defun ssmatch_box (ent / elst nam col lst dis dcl_id w h)
  4.   (setq        elst   (entget ent)
  5.         nam    (if (= (cdr (assoc 0 elst)) "INSERT")
  6.                  (assoc 2 elst)
  7.                )
  8.         col    (cond ((assoc 420 elst))
  9.                      ((assoc 62 elst))
  10.                      ('(62 . 256))
  11.                )
  12.         lst    (list (assoc 0 elst)
  13.                      col
  14.                      (assoc 8 elst)
  15.                      (cond
  16.                        ((assoc 6 elst))
  17.                        ('(6 . "BYLAYER"))
  18.                      )
  19.                      (cond
  20.                        ((assoc 370 elst))
  21.                        ('(370 . -1))
  22.                      )
  23.                )
  24.         col    (cdr col)
  25.         dis    (cond
  26.                  ((cdr (assoc 62 elst)))
  27.                  ((cdr (assoc 62 (tblsearch "LAYER" (cdr (assoc 8 elst))))))
  28.                )
  29.         dcl_id (load_dialog "ssmatch_box2.dcl")
  30.   )
  31.   (and nam (setq lst (cons nam lst)))
  32.   (if (not (new_dialog "ssmatch_box" dcl_id))
  33.     (exit)
  34.   )
  35.   (setq        w (dimx_tile "e_col")
  36.         h (dimy_tile "e_col")
  37.   )
  38.   (start_image "e_col")
  39.   (fill_image 0 0 w h dis)
  40.   (end_image)
  41.   (set_tile "e_ent" (cdr (assoc 0 elst)))
  42.   (if nam
  43.     (progn
  44.       (set_tile "e_nam" (cdr (assoc 2 elst)))
  45.       (mode_tile "nam" 0)
  46.     )
  47.     (mode_tile "nam" 1)
  48.   )
  49.   (set_tile "t_col"
  50.             (cond
  51.               ((= col 256) "DuCalque")
  52.               ((= col 0) "DuBloc")
  53.               ((< 256 col)
  54.                (strcat (itoa (lsh col -16))
  55.                        ","
  56.                        (itoa (lsh (lsh col 16) -24))
  57.                        ","
  58.                        (itoa (lsh (lsh col 24) -24))
  59.                )
  60.               )
  61.               ((itoa col))
  62.             )
  63.   )
  64.   (set_tile "e_lay" (cdr (assoc 8 elst)))
  65.   (set_tile "e_typ"
  66.             (cond
  67.               ((or (null (cdr (assoc 6 elst)))
  68.                    (= (strcase (cdr (assoc 6 elst))) "BYLAYER")
  69.                )
  70.                "DuCalque"
  71.               )
  72.               ((= (strcase (cdr (assoc 6 lst))) "BYBLOCK")
  73.                "DuBloc"
  74.               )
  75.               ((cdr (assoc 6 lst)))
  76.             )
  77.   )
  78.   (set_tile "e_wid"
  79.             (cond
  80.               ((null (cdr (assoc 370 elst))) "DuCalque")
  81.               ((= -1 (cdr (assoc 370 elst))) "DuCalque")
  82.               ((= -2 (cdr (assoc 370 elst))) "DuBlock")
  83.               ((= -3 (cdr (assoc 370 elst))) "D閒aut")
  84.               ((rtos (/ (cdr (assoc 370 elst)) 100.0) 2 2))
  85.             )
  86.   )
  87.   (action_tile
  88.     "accept"
  89.     "(or (= \"1\" (get_tile \"ent\"))
  90.       (setq lst (vl-remove (assoc 0 lst) lst))
  91.     )
  92.     (or (= \"1\" (get_tile \"nam\"))
  93.       (setq lst (vl-remove (assoc 2 lst) lst))
  94.     )
  95.     (or (= \"1\" (get_tile \"col\"))
  96.       (setq lst (vl-remove (assoc 420 lst)
  97.       (vl-remove (assoc 62 lst) lst)))
  98.     )
  99.     (or        (= \"1\" (get_tile \"lay\"))
  100.       (setq lst (vl-remove (assoc 8 lst) lst))
  101.     )
  102.     (or        (= \"1\" (get_tile \"typ\"))
  103.         (setq lst (vl-remove (assoc 6 lst) lst))
  104.     )
  105.     (or        (= \"1\" (get_tile \"wid\"))
  106.       (setq lst (vl-remove (assoc 370 lst) lst))
  107.     )
  108.     (done_dialog)"
  109.   )
  110.   (action_tile "cancel" "(setq lst nil)")
  111.   (start_dialog)
  112.   (unload_dialog dcl_id)
  113.   lst
  114. )

  115. ;;;=====================================================================================;;;

  116. ;; Fonctions d'appel

  117. (defun c:ssm (/ ss ent lst)
  118.   (and
  119.     (or
  120.       (and
  121.         (setq ss (cadr (ssgetfirst)))
  122.         (= 1 (sslength ss))
  123.         (setq ent (ssname ss 0))
  124.       )
  125.       (and
  126.         (sssetfirst nil nil)
  127.         (setq ent (car (entsel)))
  128.       )
  129.     )
  130.     (setq lst (ssmatch_box ent))
  131.     (sssetfirst nil (ssget "_X" lst))
  132.   )
  133.   (princ)
  134. )

  135. (defun c:ssmm (/ ss ent lst n tmp elt)
  136.   (setq ss (ssadd))
  137.   (while (setq ent (car (entsel "\nS閘ectionnez l'objet source: ")))
  138.     (setq lst (ssmatch_box ent)
  139.           n   0
  140.     )
  141.     (princ
  142.       "\nS閘ectionnez les objes (ou Entr閑 pour \"Tout\"): "
  143.     )
  144.     (if (not (setq tmp (ssget lst)))
  145.       (setq tmp (ssget "_X" lst))
  146.     )
  147.     (while (setq elt (ssname tmp n))
  148.       (ssadd elt ss)
  149.       (redraw elt 3)
  150.       (setq  n (1+ n))
  151.     )
  152.       (setq tmp nil)
  153.   )
  154.   (sssetfirst nil ss)
  155.   (princ)
  156. )



附件是需要的DCL文件和打包的VLX

请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:SSMatch.zip 
下载次数:20  文件大小:5.1 KB 
下载权限: 实习生 以上  [免费赚D豆]


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

已领礼包: 375个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 915个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2021-1-29 00:57:11 | 显示全部楼层
xk15c 发表于 2021-1-29 00:52
哇,看不懂不会用呀哈哈

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

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-25 21:32 , Processed in 0.166892 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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