baoyizhu 发表于 2023-12-19 17:09:34

将某个标注样式置为当前

文字样式置为当前的代码
(setvar 'TEXTSTYLE "标注样式名称")

这样是可行的,
为何标注样式这样写却不行?
(setvar "DIMSTYLE" "标注样式名称")
调试结果是这样的:

命令: (setvar 'DIMSTYLE "BIAOZHU")
Application Error: 20 :- AutoCAD 变量设置被拒绝: DIMSTYLE "BIAOZHU"
error!!ADS 请求错误

下面这个是可行的
(command "dimstyle" "r" "biaozhu")
请教还有其它方式吗?特别不喜欢用command

飞雪神光 发表于 2023-12-19 17:24:24

(defun BF-ent-activedimstyle(dimname / acaddocument acadobject currdimstyle mspace)
                (vl-load-com)
                (setq entname (tblobjname "DIMSTYLE" dimname))
                (setq
                        acadobject(vlax-get-acad-object)
                        acaddocument(vla-get-activedocument acadobject)
                        mspace(vla-get-modelspace acaddocument)               
                )          
                (setq currdimstyle (vlax-ename->vla-object entname))
                (vla-put-activedimstyle acaddocument currdimstyle)
                ;(princ (vla-get-name currdimstyle))
                (princ)
        )

jun353835273 发表于 2023-12-19 17:23:36

如果不存在 "BIAOZHU")这个的情况会报错

baoyizhu 发表于 2023-12-19 17:24:35

jun353835273 发表于 2023-12-19 17:23
如果不存在 "BIAOZHU")这个的情况会报错

BIAOZHU这个样式是存在的哦

mokson 发表于 2023-12-20 09:05:46

应该是当前的标注样式正在使用,不可以更改。
就像文件正在编辑中,不可以删除一样。

lidaxiu 发表于 2023-12-20 09:45:32

(setq biaozhu (ssget '((0 . "*DIMENSION,LEADER"))))
(command "dimstyle" "R" "" biaozhu "" ))

baoyizhu 发表于 2023-12-20 10:43:09

飞雪神光 发表于 2023-12-19 17:24


好吧 还是用command吧,只要一句话{:1_1:}

liweitung 发表于 2023-12-21 09:00:30

这些功能原版本的就很好用。

Bdj 发表于 2023-12-24 20:59:41

飞雪神光 发表于 2023-12-19 17:24


;飞雪函数的用法,哈哈
(defun c:tt()
        (setq dimname (cdr (assoc 3 (entget (car (entsel))))))
        (BF-ent-activedimstyle dimname)
)

YueFeng 发表于 2023-12-25 14:28:35

(vla-put-activedimstyle
          (vla-get-activedocument (vlax-get-acad-object))
          (vlax-ename->vla-object
            (tblobjname "DIMSTYLE" "尺寸样式名")
          )
      )
页: [1] 2
查看完整版本: 将某个标注样式置为当前