明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 837|回复: 8

[提问] 获取已知标注的全局比例,并置为现在

[复制链接]
发表于 2022-4-20 22:19 | 显示全部楼层 |阅读模式

有这么一句:
(defun c:RD()
(command"-dimstyle""r"""))

可以实现命令”RD“后,点击已存在的标注,就将该标注的全局变量赋给了DimScale,没有问题。

现在我是想,怎么先可以:(1)先选择标注,再“RD”,回车后,就完成了DIMScale赋值。(2)如果没有选择标注,则提示选择标注尺寸,选择后,回车,完成赋值。选择尺寸时,要可以点选,也可以框选,只要选上了就行。
哪位大神帮忙写一下?
发表于 2022-4-21 11:11 | 显示全部楼层
;;;设置当前标注
(defun c:rd(/ ss)
  (setq ss (ssget ":S"))
  (command "-dimstyle" "r" "" ss)
  (setvar "cecolor" "bylayer")
  (command "Laymcur" ss)
  (princ)
)
回复 支持 1 反对 0

使用道具 举报

发表于 2022-4-21 10:12 | 显示全部楼层
不建议这么做,为什么不直接使用Annotative Scale呢?都不需要再搞这些,没什么意义了
发表于 2022-4-21 11:06 | 显示全部楼层
e2002 发表于 2022-4-21 10:12
不建议这么做,为什么不直接使用Annotative Scale呢?都不需要再搞这些,没什么意义了

图纸空间要设置多个步骤,Annotative Scale 单行标注好用,双行标注会发现不好摆放

点评

双行和多行的间距确实需要处理,有空了可以写一个处理工具  发表于 2022-4-21 12:17
 楼主| 发表于 2022-4-21 19:11 | 显示全部楼层
alexmai 发表于 2022-4-21 11:11
;;;设置当前标注
(defun c:rd(/ ss)
  (setq ss (ssget ":S"))

没错,是我想要的,谢谢。
 楼主| 发表于 2022-4-21 19:41 | 显示全部楼层
本帖最后由 sunfj 于 2022-4-21 19:43 编辑
alexmai 发表于 2022-4-21 11:11
;;;设置当前标注
(defun c:rd(/ ss)
  (setq ss (ssget ":S"))

我想再做一下改动,麻烦看看怎么改才行?

(defun c:rd ()
  (setq  (ssget ":S"))
  ;此步需要判断选择的对象是尺寸还是图框块
  ;如果选择的是尺寸,则执行下面的三行语句
  (command "-dimstyle" "r" "" ss)
  (setvar "cecolor" "bylayer")
  (command "Laymcur" ss)

  ;如果选择的是图框块,则将块的比例值赋给dimscale,即执行下面几句
  (setq entlist (entget (car name)));其中name是选择的图框名字
  (setq sc (cdr (assoc 41 entlist)))
  (command "dimscale" (* 1 sc))
  ;通过上面的两种选择,就可以实现即可以刷尺寸也可以刷图框来确定新的dimscale
  )
发表于 2022-4-22 16:38 | 显示全部楼层
sunfj 发表于 2022-4-21 19:41
我想再做一下改动,麻烦看看怎么改才行?

(defun c:rd ()

图框 一般是放在图纸空间的
发表于 2024-2-14 18:23 | 显示全部楼层
不错不错,就喜欢这种讨论帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-3 01:17 , Processed in 0.970179 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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