找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: lliushaojiang

[求助] 大侠们帮个忙,用LISP如何实现尺寸标注箭头形式的修改功能

[复制链接]

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-10-17 11:41:15 | 显示全部楼层
Free-Lancer 发表于 2014-10-17 09:20
对照手册自己修改 key

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

使用道具 举报

已领礼包: 195个

财富等级: 日进斗金

 楼主| 发表于 2014-10-18 11:29:01 | 显示全部楼层
Free-Lancer 发表于 2014-10-17 09:20
对照手册自己修改 key

怎么无法运行?提示:命令: tt ; 错误: *error* 函数中出错AutoCAD 变量设置被拒绝: "CECOLOR" nil,是什么原因?

点评

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

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

发表于 2014-10-18 13:33:13 | 显示全部楼层
lliushaojiang 发表于 2014-10-18 11:29
怎么无法运行?提示:命令: tt ; 错误: *error* 函数中出错AutoCAD 变量设置被拒绝: "CECOLOR" nil,是什 ...

我很少上QQ的,只是偶尔登录一下 sshot-5.png
跟你打包好了, 运行命令dimarr , 加载程序后会有提示的


请点击此处下载

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

您的用户组是:游客

文件名称:dimarr.rar 
下载次数:57  文件大小:12.19 KB 
下载权限: 学生 以上  [免费赚D豆]




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

使用道具 举报

已领礼包: 195个

财富等级: 日进斗金

 楼主| 发表于 2014-10-18 20:02:11 | 显示全部楼层
本帖最后由 lliushaojiang 于 2014-10-18 20:13 编辑

简单的将函数和主程序放到一个lsp文件里无法运行
;; 仅设置 radio 组并记录选择的定义
;; _$klst ---- radio 组函数名或 函数名列表
;; _$symL ---- 函数名或函数名列表,默认值
(defun XD::DCL:RadioInit (_$klst _$symL / _sRadioInit)
  (defun _sRadioInit (_$kgrp _$def)
    (mapcar '(lambda (x)
               (if (= x (vl-symbol-value _$def))
                 (set_tile x "1")
                 (set_tile x "0")
               )
             )
            _$kgrp
    )
  )
  (if (listp _$symL)
    (mapcar '(lambda (x y)
               (_sRadioInit x y)
             )
            (mapcar 'vl-symbol-value _$klst)
            _$symL
    )
    (_sRadioInit (vl-symbol-value _$klst) _$symL)
  )
)

;;有回调函数或关联动作的 radio 组定义
;; _$klst ---- radio 组函数名或 函数名列表
;; _$symL ---- 函数名或函数名列表,默认值
;; _$callbackL -- 回调函数或列表,string
(defun XD::Dcl:RadioAction (_$klst _$symL _$callbackL / _gRadioAction)
  (defun _gRadioAction (keylst sym _$callback)
    (mapcar
      '(lambda (x)
         (action_tile
           x
           (strcat
             "(if "
             (vl-symbol-name sym)
             "(set_tile \""
             (vl-symbol-name sym)
             "\" \"0\"))"
             "(setq "
             (vl-symbol-name sym)
             " $key)"
             "(set_tile $key \"1\")"
             (if _$callback
               (strcat "(" _$callback ")")
               ""
             )
           )
         )
       )
      (vl-symbol-value keylst)
    )
  )
  (XD::DCL:RadioInit _$klst _$symL)
  (if (listp _$symL)
    (while _$klst
      (_gRadioAction (car _$klst) (car _$symL) (car _$callbackL))
      (setq _$klst        (cdr _$klst)
            _$symL        (cdr _$symL)
            _$callbackL        (cdr _$callbackL)
      )
    )
    (_gRadioAction _$klst _$symL _$callbackL)
  )
)

(defun c:tt (/ strl fn id klst1 klst2)
  (defun _changeArrowType (mod)
    (if        (= mod 1)
      (vlax-for        x (fy:cset)
        (vla-put-ArrowHead1Type x (eval (read key1)))
      )
      (vlax-for        x (fy:cset)
        (vla-put-ArrowHead2Type
          x
          (eval (read (vl-string-left-trim "F" key2)))
        )
      )
    )
    (vla-regen (fy:acdoc) acActiveViewport)
  )
  (or key1 (setq key1 "acArrowDefault"))
  (or key2 (setq key2 "FacArrowDefault"))
  (fy:begin)
  (if (ssget '((0 . "DIM*")))
    (progn
      (setq strl  '("temp:dialog{"
                    "label = \"Dim Arrow Stype\";"
                    ": row {"
                    "  :boxed_radio_column {"
                    "    :radio_button {label = \"Default\"; key = \"acArrowDefault\";}"
                    "    :radio_button {label = \"Dot\"; key = \"acArrowDot\";}"
                    "    :radio_button {label = \"None\"; key = \"acArrowNone\";}"
                    "  }"
                    "  :boxed_radio_column {"
                    "    :radio_button {label = \"Default\"; key = \"FacArrowDefault\";}"
                    "    :radio_button {label = \"Dot\"; key = \"FacArrowDot\";}"
                    "    :radio_button {label = \"None\"; key = \"FacArrowNone\";}"
                    "  }}"
                    "  ok_cancel;}"
                   )
            klst1 '("acArrowDefault" "acArrowDot" "acArrowNone")
            klst2 '("FacArrowDefault" "FacArrowDot" "FacArrowNone")
            fn          (xd::dcl:make strl)
            id          (xd::dcl:load fn "temp")
      )
      (xd::dcl:radioaction
        '(klst1 klst2)
        '(key1 key2)
        '("_changeArrowType 1" "_changeArrowType 2")
      )
      (xd::dcl:start id fn)
    )
  )
  (fy:end)
  (princ)
)

ca.lsp

3.6 KB, 下载次数: 34, 下载积分: D豆 -1 , 活跃度 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 05:20 , Processed in 0.261048 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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