明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1280|回复: 6

备份一个思路 以备后期寻找 视口内按比例调整标注和文字

  [复制链接]
发表于 2020-9-24 21:32:34 | 显示全部楼层 |阅读模式
本帖最后由 xj6019 于 2020-9-24 22:02 编辑

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=107011&highlight=%B4%B0%BF%DA%C4%DA
参照以上链接的4楼代码
;可见区域重生成(hbllw 2010-11-6)
(defun c:re( / $screen atio ce ch ch2 hh hh2 k p1 p2 ss)
(setq $screen (getvar "SCREENSIZE"))
(setq ch (getvar "viewsize"))
(setq ch2 (/ ch 2)) (setq ce (getvar "viewctr"))
(setq atio (/ (car $screen) (cadr $screen)))
(setq hh (* atio ch))
(setq hh2 (/ hh 2))
(setq p1 (polar (polar ce 0 hh2)
(* 1.5 pi) ch2))
(setq p2 (polar (polar ce pi hh2)
(* 0.5 pi) ch2))
(setq SK (ssget "C" p1 p2))
(setq k -1)
(if (> (sslength SK) 0)
(repeat (sslength SK)
(entupd (ssname SK (setq k (1+ k))))))

;(command "要执行的命令" SK "")

(princ))


可取得视口内所有图元并做成选择集SK.

http://bbs.mjtd.com/thread-182353-1-1.html
这个链接的2楼
(sssetfirst nil sK)
使视口内对象处于选择状态
(vl-cmdf "-dimstyle" "a" SK "") 将当前标注样式刷入到SK选择集。
重复上面的步骤。
用字高的代码刷字高。
字高的代码很多,可以把字高读取当前标注比例因子,然后按照倍数设置字高,这样字高可以根据不同标注样式自由调整。
通俗的说就是激活视口下,将当前视口比例,调整为自己标注样式对应的比例,然后把视口内对象字高和标注都刷成相同的比例,
论坛里面有“根据布局视口比例变化自动更改标注”的代码,不过是只改标注的比例因子,改后会比较乱,
相同标注样式下会出现各种比例因子的对象,不利于后期改图的时候的区分,比方说看着像是50倍的标注样式,查询却发现其实是用的20倍的标注样式改过来的情况多的话,会乱七八糟,因此才想弄出今天这个功能代码来。


各位老师有更好的方法请赐教,我这个纯属是乱凑,不过功能是可以实现的。

各位同僚,有更好的代码也请贴出来,大家一起钻研一下哦。我这个通用性太差,也可以说没通用性,只能局限于一个人,或者几个人用同样的cad模板出图的时候用。

当然可能会有人说为啥不用注释行标注呀,说实在的个人感觉注释性标注用起来还真不得劲,有种墨守成规很死板的感觉。虽然很多大型设计院都是用注释性来出图,个人感觉不用自定义代码的话完全可以去适应注释性标注,用自定义代码插件的话,搭配出一组标注专属的代码后,比注释标注要快,要方便的多。纯属个人见解哦,不同意的勿拍砖。





 楼主| 发表于 2020-9-24 21:39:46 | 显示全部楼层
本帖最后由 xj6019 于 2020-9-24 22:06 编辑

上面不知道怎么粘贴了代码后格式乱套了,重启一层楼


大体格式如下,因为我自己的标注样式和文字格式啥的都是我自己这边专用的,相应代码贴出来也没意义,只能局限于我自己使用,因此我只提供一下思路,自己找到对应的代码,套上就能用,改字高的代码,论坛里面一堆一堆的,不是问题。
(defun c:TT( )
(一楼的代码直接去掉C:  做成子函数,这里调用)
(sssetfirst nil SK)
(字高的代码  给SK刷入字高)
(一楼的代码直接去掉C:  做成子函数,这里调用)
(sssetfirst nil SK)
(vl-cmdf "-dimstyle" "a" SK "") ;将当前标注样式刷入 SK
(princ)
)


我找遍了论坛和百度,就只找到了1楼那个代码可以这样调用,这样虽然是凑班子的感觉,好在完全实现了我理想的功能,非常棒,画图又省事了。

发表于 2020-9-25 09:40:31 | 显示全部楼层
天呐,,这样标注起来,对小白更方便理解呀,谢谢楼主了
 楼主| 发表于 2020-9-25 10:21:29 | 显示全部楼层
999999 发表于 2020-9-25 09:40
天呐,,这样标注起来,对小白更方便理解呀,谢谢楼主了

我也是小白,纯净的小白
发表于 2020-9-25 12:02:32 | 显示全部楼层
把代码转成自定义函数很简单啊,你要调用其他程序就把它改一下就行了
(defun c:tt (/ ss)
(setq ss (ssget))
......
)
改为:
(defun tt (ss  /)
(setq ss (ssget))
......
)
把变量改为参数就可以随便调用了。(tt ss)

点评

谢谢指导,这个问题已经解决完了,效果很理想了,达到我的预期了  发表于 2020-9-25 12:26

评分

参与人数 1明经币 +1 收起 理由
xj6019 + 1 很给力!

查看全部评分

发表于 2020-10-31 06:20:46 来自手机 | 显示全部楼层
用处很大。。。定。。希望继续完善
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 08:40 , Processed in 0.279685 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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