乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 29|回复: 4

[综合讨论] AutoCAD 2004工具栏按钮Qu

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-7 19:18:40 | 显示全部楼层 |阅读模式
大家好;
 
我开始学习如何为ACAD 2004制作我自己的工具栏按钮,但我很难在特定操作的按钮创建对话框中编写宏命令。
 
将有3个按钮。一个用于。二十、 一个。三十、 一个。现有尺寸的XXXX精度编辑。看,如果我有一个2位精度的尺寸,并希望它是4位,我会点击'。XXXX按钮,然后单击尺寸,它将更改为4个位置。此外,如果可能的话,我希望它能像“匹配属性”一样,立即更新为多维度选取。
 
有什么想法吗?
 
谢谢你的帮助,
 
K2
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-7 19:42:12 | 显示全部楼层
您正在寻找一种编程方法来更改给定维度的精度,但还需要检查/修改维度的“superss trailing zeros”属性。
 
考虑这些LISP示例。。。
 
键盘快捷键:
  1. (defun c:ChgDimPrec (/ ss prec)
  2. ;; © RenderMan 2011, CADTutor
  3. (princ "\rCHANGE DIMENSION PRECISION ")
  4. (vl-load-com)
  5. (if (and (setq ss (ssget '((0 . "DIMENSION"))))
  6.           (not (initget 7 "1 2 3 4 5 6 7 8"))
  7.           (setq prec (getint "\nEnter DIM precision [1/2/3/4/5/6/7/8]: ")))
  8.    (progn
  9.      (vla-startundomark
  10.        (cond (*activeDoc*)
  11.              ((setq *activeDoc*
  12.                      (vla-get-activedocument
  13.                        (vlax-get-acad-object))))))
  14.      (if (/= prec (getvar 'dimdec))
  15.        (setvar 'dimdec prec))
  16.      (vlax-for oDim (setq ss (vla-get-activeselectionset *activeDoc*))
  17.        (if (= :vlax-true (vla-get-suppresstrailingzeros oDim))
  18.          (vla-put-suppresstrailingzeros oDim :vlax-false))
  19.        (vla-put-primaryunitsprecision oDim prec))
  20.      (vla-endundomark *activeDoc*)
  21.      (vla-delete ss))
  22.    (cond (ss (prompt "\n** Invalid color entered ** "))
  23.          (T (prompt "\n** Nothing selected ** "))))
  24. (princ))

 
接受精度参数的函数(用于工具栏宏):
  1. (defun ChgDimPrec (prec / ss color)
  2. ;; © RenderMan 2011, CADTutor
  3. ;; Example: (ChgDimPrec 0)
  4. (princ "\rCHANGE DIMENSION PRECISION ")
  5. (vl-load-com)
  6. (if (setq ss (ssget '((0 . "DIMENSION"))))
  7.    (progn
  8.      (vla-startundomark
  9.        (cond (*activeDoc*)
  10.              ((setq *activeDoc*
  11.                      (vla-get-activedocument
  12.                        (vlax-get-acad-object))))))
  13.      (if (/= prec (getvar 'dimdec))
  14.        (setvar 'dimdec prec))
  15.      (vlax-for oDim (setq ss (vla-get-activeselectionset *activeDoc*))
  16.        (if (= :vlax-true (vla-get-suppresstrailingzeros oDim))
  17.          (vla-put-suppresstrailingzeros oDim :vlax-false))
  18.        (vla-put-primaryunitsprecision oDim prec))
  19.      (vla-endundomark *activeDoc*)
  20.      (vla-delete ss))
  21.    (cond (ss (prompt "\n** Invalid color entered ** "))
  22.          (T (prompt "\n** Nothing selected ** "))))
  23. (princ))
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-7 19:56:48 | 显示全部楼层
感谢您的回复RenderMan;
 
虽然我理解你所说的“不”超过尾随零的意思(如.25转换为.2500仍将显示为.25),但对我自己来说,这不应该是一个只会超过前导的问题。然而,我确信,由于我的无知,我试图利用您花时间生成的脚本,但只收到了“参数太多”的错误消息。很可能放置在错误的区域,因为它不适用于自定义屏幕,但仅适用于当前菜单区域。。。。。无论如何,在自定义窗口中,我已经取得了一些成功。
 
201843ojoz4k7wmeegfkpk.jpg
 
它位于“与此按钮相关联的宏”窗格中,我通常会在其中放置文本。。。。上面的脚本是在那里写的吗?
 
谢谢你的帮助,
 
K2
回复

使用道具 举报

0

主题

12

帖子

12

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-7 20:06:47 | 显示全部楼层
 
有几种方法可以做到这一点:
 
1.您可以在工具栏按钮上使用以下宏。
 
^C^Cdimdec;4;^C^C-dimstyle;A、 \;;
 
您可以对所有按钮使用相同的宏,只需更改值“4”以匹配您希望尺寸的位置/感知数量。问题是,您将为当前标注样式创建样式替代。要消除样式替代,可以在宏中添加另一行以恢复当前的dimstyle。但这意味着您必须将标注样式名称写入宏代码中。因此,如果使用不同的dim样式,这可能不起作用,因为宏中只有一个被还原的样式名。当然,如果你不在乎风格覆盖,那也没关系。
 
2.说到覆盖。。。。。您可以只选择要更改感知的DIM,然后在Properties屏幕中修改它们。这样,您只会覆盖您选择的dim,而不是整个dim样式。
 
3、你可以根据自己的感知水平制作不同的昏暗风格。然后,只需在要更改感知的DIM上执行属性。
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-7 20:19:48 | 显示全部楼层
感谢您的建议CADguy209;
 
我不确定这正是我想要的,但你和Renderman的回答都在帮助我获得想法。
 
再次感谢!
 
K2
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 12:34 , Processed in 0.415915 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表