框选标注修改
各位大佬,我搞了一个框选修改标注的代码,但新生成的标注样式的全局比例没办法跟着变动?(defun c:GH (/ ss factor styleName baseStyleName)
; 框选图形,
(setq ss (ssget))
(if ss
(progn
; 提示用户输入比例因子,并将结果存储在 factor 变量中
(setq factor (getreal "\n请输入比例因子: "))
; 根据比例因子生成新的标注样式名称,格式为 DIM+比例因子
(setq styleName (strcat "DIM" (rtos factor)))
; 检查生成的标注样式是否存在
(if (tblsearch "DIMSTYLE" styleName)
(progn
; 如果存在,使用 command 函数将该标注样式设置为当前样式
(command "DIMSTYLE" "R" styleName "")
; 仅对之前选择的对象应用标注更新
(command "DIMSTYLE" "APPLY" ss "")
; 刷新视图
(command "regen")
)
(progn
; 查找基础样式 DIM1 是否存在
(setq baseStyleName (tblsearch "DIMSTYLE" "DIM1"))
(if baseStyleName
(progn
; 复制 DIM1 为新样式
(command "_DIMSTYLE" "" "DIM1" styleName)
; 将新样式设置为当前样式
(command "DIMSTYLE" "S" styleName)
)
; 如果基础样式 DIM1 不存在,输出相应错误信息
(princ "\n基础样式 DIM1 不存在,无法创建新样式.")
)
; 设置全局比例因子
(setvar "DIMSCALE" factor)
; 调用 modifyDimStyle 函数修改标注样式的比例因子
(modifyDimStyle (getvar "DIMSTYLE") factor)
; 仅对之前选择的对象应用标注更新
(command "DIMSTYLE" "APPLY" ss "")
; 刷新视图
(command "regen")
)
)
)
; 如果未框选图形,输出相应信息
(princ "\n未框选图形.")
)
(princ)
)
(defun modifyDimStyle (dimstyle value)
; 获取标注样式的对象名称
(setq dimObjName (tblobjname "DIMSTYLE" dimstyle))
; 将对象名称转换为实体对象
(setq dimObj (entget dimObjName))
; 查找 DIMSCALE 的组码在标注样式对象中的位置
(setq dimscaleIndex (assoc 40 dimObj))
; 修改 DIMSCALE 的值
(setq dimObj (subst (cons 40 value) dimscaleIndex dimObj))
; 更新标注样式对象
(entmod dimObj)
)
页:
[1]