找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: lucas3

[已解决] 判断线型的问题

[复制链接]

已领礼包: 3198个

财富等级: 富可敌国

 楼主| 发表于 2014-12-22 19:43:24 | 显示全部楼层
Free-Lancer 发表于 2014-12-15 09:09
Opendcl 要装  Runtime 在 ODCL  论坛由 8.10 链接下载,命令行输入  opendcl 就可以使用了
简单改写了 ...

Free-Lancer大师, 请问这个需要xd::dcl:radioaction 吗?

点评

radio_button 是单选按钮,一个组内只能选择一个 toggle 可选项,可以同时勾选多个  详情 回复 发表于 2014-12-22 19:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2014-12-22 19:52:59 | 显示全部楼层
lucas3 发表于 2014-12-22 19:43
Free-Lancer大师, 请问这个需要xd::dcl:radioaction 吗?

radio_button 是单选按钮,一个组内只能选择一个

toggle 可选项,可以同时勾选多个


点评

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

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

 楼主| 发表于 2014-12-22 20:40:09 | 显示全部楼层
iLisp 发表于 2014-12-22 19:52
radio_button 是单选按钮,一个组内只能选择一个

toggle 可选项,可以同时勾选多个

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

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

 楼主| 发表于 2015-1-9 08:29:50 | 显示全部楼层
Free-Lancer 发表于 2014-12-15 09:09
Opendcl 要装  Runtime 在 ODCL  论坛由 8.10 链接下载,命令行输入  opendcl 就可以使用了
简单改写了 ...


Free-Lancer大师,您好!您帮我改的那个“圆变螺孔”的程序,我补充了下对话框,现在运行后可以弹出对话框了,但是无法驱动,您的那个XD::DCL:ToggleAction示例不是很完整,下面不知道怎么继续了..................


  1. (defun c:tt (/ ss dcl fn id isBlock isErased isText)
  2.   (defun _make
  3.          (e l / r pcen dis lst str xk mr cel p1 p2 p3 p4 cir ln1 ln2)
  4.     (setq lst '((2.5 "M3" 0.06 1.5)
  5.                 (3.3 "M4" 0.08 1.5)
  6.                 (4.2 "M5" 0.1 2.5)
  7.                 (5.0 "M6" 0.12 3.0)
  8.                 (6.8 "M8" 0.16 4.0)
  9.                 (8.5 "M10" 0.2 5.0)
  10.                 (10.5 "M12" 0.24 6.0)
  11.                 (12.0 "M14" 0.28 7.0)
  12.                 (14.0 "M16" 0.32 8.0)
  13.                 (15.5 "M18" 0.36 9.0)
  14.                 (17.5 "M20" 0.4 10.0)
  15.                )
  16.     )
  17.     (setq r    (vlax-get e 'radius)
  18.           pcen (vlax-get e 'center)
  19.     )
  20.     (mapcar 'set '(str xk mr) (cdr (assoc r lst)))
  21.     (setq
  22.       cel (if (eq (car (setq lt (vlax-get e "linetype"))
  23.                        "ByLayer"
  24.                   )
  25.               )
  26.             (vlax-get
  27.               (vla-item (fy:aclayers) (vlax-get e "layer"))
  28.               "linetype"
  29.             )
  30.             (car lt)
  31.           )
  32.     )
  33.     (setq dis (* r 1.1)
  34.           p1  (polar pcen 0. dis)
  35.           p2  (polar pcen _pi2 dis)
  36.           p3  (polar pcen pi dis)
  37.           p4  (polar pcen (- _pi2) dis)
  38.     )
  39.     (if        isBlock
  40.       (setq space (vlax-invoke (fy:acblocks) 'add pcen "*"))
  41.       (setq space (fy:acms))
  42.     )
  43.     (setq cir (vlax-invoke space 'addcircle pcen r)
  44.           arc (vlax-invoke space 'addarc pcen mr 4.71239 3.14159)
  45.           ln1 (vlax-invoke space 'addline p1 p3)
  46.           ln2 (vlax-invoke space 'addline p2 p4)
  47.     )
  48.     (mapcar '(lambda (x)
  49.                (vlax-put (car x) 'layer "screw")
  50.                (vlax-put (car x) 'color (cadr x))
  51.                (vlax-put (car x) "linetype" (caddr x))
  52.                (vlax-put (car x) "linetypescale" xk)
  53.              )
  54.             (list (list cir 33 cel)
  55.                   (list arc 3 cel)
  56.                   (list ln1 1 "center")
  57.                   (list ln2 1 "center")
  58.             )
  59.     )
  60.     (if        isText
  61.       (progn
  62.         (setq txt (vlax-invoke space 'AddText str pcen (* mr 0.4)))
  63.         (vla-put-alignment txt acAlignmentTopCenter)
  64.         (vla-put-textalignmentpoint
  65.           txt
  66.           (vlax-3d-point (polar pcen (- _pi2) (* mr 0.17)))
  67.         )
  68.       )
  69.     )
  70.     (if        isBlock
  71.       (vlax-invoke
  72.         (fy:acspace)
  73.         'insertblock
  74.         pcen
  75.         (vla-get-name space)
  76.         1.
  77.         1.
  78.         1.
  79.         0.
  80.       )
  81.     )
  82.   )
  83.   (setq        dcl '("screw:dialog{"
  84.               "label = \"参数设置\";"
  85.               " :toggle{ key = \"isErased\"; label = \"删除原线条\";}"
  86.               " :toggle { key = \"isText\"; label = \"显示文字\";}"
  87.               " :toggle { key = \"isBlock\"; label = \"生成块\";}"
  88.               " ok_cancel;"
  89.               "}"
  90.              )
  91.         fn  (xd::dcl:make dcl)
  92.         id   (xd::dcl:load fn "screw")
  93.   )
  94.     (xd::Dcl:toggleaction
  95.     '("isErased" "isText" "isBlock");_key 列表
  96.     'status;_记录 勾选项 的变量,做全局变量时下次有默认值
  97.   );_设置 Toggle  并定义 Action
  98.   (xd::dcl:start id fn)
  99.   (fy:begin)
  100.   (if (setq ss (ssget '((0 . "circle"))))
  101.     (progn
  102.       (if (not (tblsearch "style" "txt"))
  103.         (command ".style"    "txt"         "txt.shx,gbcbig.shx"
  104.                  0.0             1.0         0.0             "n"
  105.                  "n"             "n"
  106.                 )
  107.       )
  108.       (if (not (tblsearch "ltype" "hidden"))
  109.         (vla-load (fy:acltypes) "hidden" "acadiso.lin")
  110.       )
  111.       (if (not (tblsearch "ltype" "center"))
  112.         (vla-load (fy:acltypes) "center" "acadiso.lin")
  113.       )
  114.       (mapcar '(lambda (x) (_make x)) (fy:cset->objs))
  115.       (if isErased (command ".erase" ss ""))
  116.     )
  117.   )
  118.   (princ)
  119. )

点评

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

使用道具 举报

发表于 2015-1-9 09:08:30 | 显示全部楼层
lucas3 发表于 2015-1-9 08:29
Free-Lancer大师,您好!您帮我改的那个“圆变螺孔”的程序,我补充了下对话框,现在运行后可以弹出对 ...

还没有搞好啊!


点评

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

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

 楼主| 发表于 2015-1-9 09:27:06 | 显示全部楼层

是啊,大师,汗颜啊 呜呜...,

点评

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

使用道具 举报

发表于 2015-1-9 09:58:46 | 显示全部楼层
lucas3 发表于 2015-1-9 09:27
是啊,大师,汗颜啊 呜呜...,

  1. (defun c:tt (/ ss dcl fn id klst)
  2.   (defun _make (e l / r        pcen dis lst str xk mr cel p1 p2 p3 p4 cir ln1
  3.                 ln2)
  4.     (setq lst '((2.5 "M3" 0.06 1.5)
  5.                 (3.3 "M4" 0.08 1.5)
  6.                 (4.2 "M5" 0.1 2.5)
  7.                 (5.0 "M6" 0.12 3.0)
  8.                 (6.8 "M8" 0.16 4.0)
  9.                 (8.5 "M10" 0.2 5.0)
  10.                 (10.5 "M12" 0.24 6.0)
  11.                 (12.0 "M14" 0.28 7.0)
  12.                 (14.0 "M16" 0.32 8.0)
  13.                 (15.5 "M18" 0.36 9.0)
  14.                 (17.5 "M20" 0.4 10.0)
  15.                )
  16.     )
  17.     (setq r    (vlax-get e 'radius)
  18.           pcen (vlax-get e 'center)
  19.     )
  20.     (mapcar 'set '(str xk mr) (cdr (assoc r lst)))
  21.     (setq
  22.       cel (if (eq (car (setq lt (vlax-get e "linetype"))
  23.                        "ByLayer"
  24.                   )
  25.               )
  26.             (vlax-get
  27.               (vla-item (fy:aclayers) (vlax-get e "layer"))
  28.               "linetype"
  29.             )
  30.             (car lt)
  31.           )
  32.     )
  33.     (setq dis (* r 1.1)
  34.           p1  (polar pcen 0. dis)
  35.           p2  (polar pcen _pi2 dis)
  36.           p3  (polar pcen pi dis)
  37.           p4  (polar pcen (- _pi2) dis)
  38.     )
  39.     (if        (member "isBlock" slst)
  40.       (setq space (vlax-invoke (fy:acblocks) 'add pcen "*"))
  41.       (setq space (fy:acms))
  42.     )
  43.     (setq cir (vlax-invoke space 'addcircle pcen r)
  44.           arc (vlax-invoke space 'addarc pcen mr 4.71239 3.14159)
  45.           ln1 (vlax-invoke space 'addline p1 p3)
  46.           ln2 (vlax-invoke space 'addline p2 p4)
  47.     )
  48.     (mapcar '(lambda (x)
  49.                (vlax-put (car x) 'layer "screw")
  50.                (vlax-put (car x) 'color (cadr x))
  51.                (vlax-put (car x) "linetype" (caddr x))
  52.                (vlax-put (car x) "linetypescale" xk)
  53.              )
  54.             (list (list cir 33 cel)
  55.                   (list arc 3 cel)
  56.                   (list ln1 1 "center")
  57.                   (list ln2 1 "center")
  58.             )
  59.     )
  60.     (if        (member "isText" slst)
  61.       (progn
  62.         (setq txt (vlax-invoke space 'AddText str pcen (* mr 0.4)))
  63.         (vla-put-alignment txt acAlignmentTopCenter)
  64.         (vla-put-textalignmentpoint
  65.           txt
  66.           (vlax-3d-point (polar pcen (- _pi2) (* mr 0.17)))
  67.         )
  68.       )
  69.     )
  70.     (if        (member "isBlock" slst)
  71.       (vlax-invoke
  72.         (fy:acspace)
  73.         'insertblock
  74.         pcen
  75.         (vla-get-name space)
  76.         1.
  77.         1.
  78.         1.
  79.         0.
  80.       )
  81.     )
  82.   )
  83.   (if slst (setq        slst '("isErased" "isText" "isBlock")))
  84.   (setq        dcl  '("screw:dialog{"
  85.                "label = \"参数设置\";"
  86.                " :toggle{ key = \"isErased\"; label = \"删除原线条\";}"
  87.                " :toggle { key = \"isText\"; label = \"显示文字\";}"
  88.                " :toggle { key = \"isBlock\"; label = \"生成块\";}"
  89.                " ok_cancel;"
  90.                "}"
  91.               )
  92.         klst '("isErased" "isText" "isBlock")
  93.         fn   (xd::dcl:make dcl)
  94.         id   (xd::dcl:load fn "screw")
  95.   )
  96.   (xd::Dcl:toggleaction
  97.     klst ;_key 列表
  98.     'slst ;_记录 勾选项 的变量,做全局变量时下次有默认值
  99.     nil
  100.   ) ;_设置 Toggle  并定义 Action
  101.   (xd::dcl:start id fn)
  102.   (fy:begin)
  103.   (if (setq ss (ssget '((0 . "circle"))))
  104.     (progn
  105.       (if (not (tblsearch "style" "txt"))
  106.         (command ".style"    "txt"         "txt.shx,gbcbig.shx"
  107.                  0.0             1.0         0.0             "n"
  108.                  "n"             "n"
  109.                 )
  110.       )
  111.       (if (not (tblsearch "ltype" "hidden"))
  112.         (vla-load (fy:acltypes) "hidden" "acadiso.lin")
  113.       )
  114.       (if (not (tblsearch "ltype" "center"))
  115.         (vla-load (fy:acltypes) "center" "acadiso.lin")
  116.       )
  117.       (mapcar '(lambda (x) (_make x)) (fy:cset->objs))
  118.       (if (member "isErased" slst)
  119.         (command ".erase" ss "")
  120.       )
  121.     )
  122.   )
  123.   (princ)
  124. )

另外的 XD:: ToggleAction 函数
  1. (defun XD::DCL:ToggleAction
  2.        (_$klst _$symL _$callbackL / _sToggleAction)
  3.   (defun _sToggleAction        (_$key _$symL _$callbackL)
  4.     (action_tile
  5.       _$key
  6.       (strcat "(if (= $value \"0\")"
  7.               "(setq "
  8.               (vl-symbol-name _$symL)
  9.               "(vl-remove $key "
  10.               (vl-symbol-name _$symL)
  11.               "))(if (not (member $key "
  12.               (vl-symbol-name _$symL)
  13.               "))(setq "
  14.               (vl-symbol-name _$symL)
  15.               "(cons $key "
  16.               (vl-symbol-name _$symL)
  17.               "))))"
  18.               (if _$callbackL
  19.                 (strcat "(" _$callbackL ")")
  20.                 ""
  21.               )
  22.       )
  23.     )
  24.   )
  25.   (XD::DCL:ToggleInit _$klst _$symL)
  26.   (if (listp _$klst)
  27.     (while _$klst
  28.       (_sToggleAction (car _$klst) _$symL (car _$callbackL))
  29.       (setq _$klst        (cdr _$klst)
  30.             _$callbackL        (cdr _$callbackL)
  31.       )
  32.     )
  33.     (_sToggleAction _$klst _$symL _$callbackL)
  34.   )
  35. )

点评

感谢大师再次相助!!! 大师,XD:CL:ToggleInithan函数在哪儿呢?  详情 回复 发表于 2015-1-9 10:58

评分

参与人数 1D豆 +5 收起 理由
lucas3 + 5 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

 楼主| 发表于 2015-1-9 10:58:09 | 显示全部楼层
Free-Lancer 发表于 2015-1-9 09:58
另外的 XD:: ToggleAction 函数

感谢大师再次相助!!! 大师,XD::DCL:ToggleInithan函数在哪儿呢?


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

使用道具 举报

发表于 2015-1-9 11:42:07 | 显示全部楼层
lucas3 发表于 2015-1-9 10:58
感谢大师再次相助!!! 大师,XD:CL:ToggleInithan函数在哪儿呢?

  1. 设置 toggle 控件
  2. _$klst ---- 控件名或控件名列表
  3. _$symL ---- 值为控件名或控件名列表的变量名
  4.             含有该控件的为勾选,否则不选
  5. |;
  6. (defun XD::DCL:ToggleInit (_$klst _$symL)
  7.   (if (listp _$klst)
  8.     (mapcar '(lambda (x)
  9.                (if (and _$symL (member x (vl-symbol-value _$symL)))
  10.                  (set_tile x "1")
  11.                  (set_tile x "0")
  12.                )
  13.              )
  14.             _$klst
  15.     )
  16.     (set_tile _$klst
  17.               (if (and _$syml (vl-symbol-value _$symL))
  18.                 "1"
  19.                 "0"
  20.               )
  21.     )
  22.   )
  23. )

点评

谢谢大师,可是程序仍然不能正常执行,选择圆后总是 显示Error: 参数太少  详情 回复 发表于 2015-1-9 13:32

评分

参与人数 1D豆 +5 收起 理由
lucas3 + 5 技术引导讨论和指点奖!

查看全部评分

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

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

 楼主| 发表于 2015-1-9 13:32:34 | 显示全部楼层


谢谢大师,可是程序仍然不能正常执行,选择圆后总是 显示Error: 参数太少

点评

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

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-1-9 14:21:24 | 显示全部楼层
lucas3 发表于 2015-1-9 13:32
谢谢大师,可是程序仍然不能正常执行,选择圆后总是 显示Error: 参数太少

目测  _make 子函数多了个 l 参数,去掉试试

点评

不行哟,去掉显示参数太多 , 另外,还有问题就是弹出对话框后,不点确定,直接点取消,程序没有结束,而是仍然要求选择对象  详情 回复 发表于 2015-1-9 17:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

 楼主| 发表于 2015-1-9 17:28:51 | 显示全部楼层
iLisp 发表于 2015-1-9 14:21
目测  _make 子函数多了个 l 参数,去掉试试

不行哟,去掉显示参数太多 , 另外,还有问题就是弹出对话框后,不点确定,直接点取消,程序没有结束,而是仍然要求选择对象

点评

自己改一下吧 (fy:begin) (if (and (= (xd::dcl:start id fn) 1) (setq ss (ssget '((0 . "circle")))) )  详情 回复 发表于 2015-1-9 17:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2015-1-9 17:32:25 | 显示全部楼层
lucas3 发表于 2015-1-9 17:28
不行哟,去掉显示参数太多 , 另外,还有问题就是弹出对话框后,不点确定,直接点取消,程序没有结束,而 ...




  1. (defun c:tt (/ ss dcl fn id klst)
  2.   (defun _make
  3.          (e / r pcen dis lst str xk mr cel p1 p2 p3 p4 cir ln1 ln2)
  4.     (setq lst '((2.5 "M3" 0.06 1.5)
  5.                 (3.3 "M4" 0.08 1.5)
  6.                 (4.2 "M5" 0.1 2.5)
  7.                 (5.0 "M6" 0.12 3.0)
  8.                 (6.8 "M8" 0.16 4.0)
  9.                 (8.5 "M10" 0.2 5.0)
  10.                 (10.5 "M12" 0.24 6.0)
  11.                 (12.0 "M14" 0.28 7.0)
  12.                 (14.0 "M16" 0.32 8.0)
  13.                 (15.5 "M18" 0.36 9.0)
  14.                 (17.5 "M20" 0.4 10.0)
  15.                )
  16.     )
  17.     (setq r    (vlax-get e 'radius)
  18.           pcen (vlax-get e 'center)
  19.     )
  20.     (mapcar 'set '(str xk mr) (cdr (assoc r lst)))
  21.     (setq cel (if (eq (setq lt (vlax-get e "linetype"))

  22.                       "ByLayer"
  23.                   )
  24.                 (vlax-get
  25.                   (vla-item (fy:aclayers) (vlax-get e "layer"))
  26.                   "linetype"
  27.                 )
  28.                 lt
  29.               )
  30.     )
  31.     (setq dis (* r 1.1)
  32.           p1  (polar pcen 0. dis)
  33.           p2  (polar pcen _pi2 dis)
  34.           p3  (polar pcen pi dis)
  35.           p4  (polar pcen (- _pi2) dis)
  36.     )
  37.     (if        (member "isBlock" slst)
  38.       (setq space (vla-add (fy:acblocks) (vlax-3d-point pcen) "*U"))
  39.       (setq space (fy:acms))
  40.     )
  41.     (setq cir (vlax-invoke space 'addcircle pcen r)
  42.           arc (vlax-invoke space 'addarc pcen mr 4.71239 3.14159)
  43.           ln1 (vlax-invoke space 'addline p1 p3)
  44.           ln2 (vlax-invoke space 'addline p2 p4)
  45.     )
  46.     (mapcar '(lambda (x)
  47.                (vlax-put (car x) 'layer "screw")
  48.                (vlax-put (car x) 'color (cadr x))
  49.                (vlax-put (car x) "linetype" (caddr x))
  50.                (vlax-put (car x) "linetypescale" xk)
  51.              )
  52.             (list (list cir 33 cel)
  53.                   (list arc 3 cel)
  54.                   (list ln1 1 "center")
  55.                   (list ln2 1 "center")
  56.             )
  57.     )
  58.     (if        (member "isText" slst)
  59.       (progn
  60.         (setq txt (vlax-invoke space 'AddText str pcen (* mr 0.4)))
  61.         (vla-put-alignment txt acAlignmentTopCenter)
  62.         (vla-put-textalignmentpoint
  63.           txt
  64.           (vlax-3d-point (polar pcen (- _pi2) (* mr 0.17)))
  65.         )
  66.       )
  67.     )
  68.     (if        (member "isBlock" slst)
  69.       (vlax-invoke
  70.         (fy:acspace)
  71.         'insertblock
  72.         pcen
  73.         (vla-get-name space)
  74.         1.
  75.         1.
  76.         1.
  77.         0.
  78.       )
  79.     )
  80.   )
  81.   (if slst
  82.     (setq slst '("isErased" "isText" "isBlock"))
  83.   )
  84.   (setq        dcl  '("screw:dialog{"
  85.                "label = \"参数设置\";"
  86.                " :toggle{ key = \"isErased\"; label = \"删除原线条\";}"
  87.                " :toggle { key = \"isText\"; label = \"显示文字\";}"
  88.                " :toggle { key = \"isBlock\"; label = \"生成块\";}"
  89.                " ok_cancel;"
  90.                "}"
  91.               )
  92.         klst '("isErased" "isText" "isBlock")
  93.         fn   (xd::dcl:make dcl)
  94.         id   (xd::dcl:load fn "screw")
  95.   )
  96.   (xd::Dcl:toggleaction
  97.     klst ;_key 列表
  98.     'slst ;_记录 勾选项 的变量,做全局变量时下次有默认值
  99.     nil
  100.   ) ;_设置 Toggle  并定义 Action
  101.   (xd::dcl:start id fn)
  102.   (fy:begin)
  103.   (if (setq ss (ssget '((0 . "circle"))))
  104.     (progn
  105.       (if (not (tblsearch "style" "txt"))
  106.         (command ".style"    "txt"         "txt.shx,gbcbig.shx"
  107.                  0.0             1.0         0.0             "n"
  108.                  "n"             "n"
  109.                 )
  110.       )
  111.       (if (not (tblsearch "ltype" "hidden"))
  112.         (vla-load (fy:acltypes) "hidden" "acadiso.lin")
  113.       )
  114.       (if (not (tblsearch "ltype" "center"))
  115.         (vla-load (fy:acltypes) "center" "acadiso.lin")
  116.       )
  117.       (mapcar '(lambda (x) (_make x)) (fy:cset->objs))
  118.       (if (member "isErased" slst)
  119.         (command ".erase" ss "")
  120.       )
  121.     )
  122.   )
  123.   (princ)
  124. )


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

使用道具 举报

发表于 2015-1-9 17:36:54 | 显示全部楼层
lucas3 发表于 2015-1-9 17:28
不行哟,去掉显示参数太多 , 另外,还有问题就是弹出对话框后,不点确定,直接点取消,程序没有结束,而 ...

自己改一下吧

  (fy:begin)
  (if (and (= (xd::dcl:start id fn) 1)
       (setq ss (ssget '((0 . "circle"))))
      )



点评

大师,重新使用28楼的程序,并将29楼处的替换掉,问题还存在,还是参数太少, 点取消还是要选择对象  详情 回复 发表于 2015-1-9 18:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

 楼主| 发表于 2015-1-9 18:20:19 | 显示全部楼层
Free-Lancer 发表于 2015-1-9 17:36
自己改一下吧

  (fy:begin)

大师,重新使用28楼的程序,并将29楼处的替换掉,问题还存在,还是参数太少, 点取消还是要选择对象
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 00:08 , Processed in 0.495309 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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