`中微子 发表于 2024-10-17 20:57:20

请教大神们一个尺寸标注数字问题!

如下图标注,我想把得到的数字是1位是在前面加0,是二位以上时把前面0去掉.

比如标注是7时,显示为07
标注是8时,显示为08
标注是10时,显示为10
标注是11时,显示为11
加前缀位数可以,是二位数前面还是有零.

你有种再说一遍 发表于 2024-10-18 05:13:26

难道你有看到过这种标注?

kozmosovia 发表于 2024-10-18 08:42:18

特殊要求,需要写代码做反应器

`中微子 发表于 2024-10-18 17:55:33

kozmosovia 发表于 2024-10-18 08:42
特殊要求,需要写代码做反应器

没有写过这样的代码,可以给点提示或参考吗?复杂不?

你有种再说一遍 发表于 2024-10-18 18:02:19

本帖最后由 你有种再说一遍 于 2024-10-18 19:25 编辑


using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;


// 继承加载自动执行接口
public class MyExtensionApplication : IExtensionApplication {


    // 在扩展应用程序初始化时调用
    public void Initialize() {
      // 获取当前活动的文档的数据库
      Database db = Application.DocumentManager.MdiActiveDocument.Database;
      // 为数据库添加一个事件处理器,用于监听对象修改事件
      db.ObjectModified += OnObjectModified;
    }


    // 在扩展应用程序终止时调用
    public void Terminate() {
      // 获取当前活动的文档的数据库
      Database db = Application.DocumentManager.MdiActiveDocument.Database;
      // 从数据库移除之前添加的对象修改事件处理器
      db.ObjectModified -= OnObjectModified;
    }


    // 数据库对象修改事件的处理方法
    private void OnObjectModified(object sender, ObjectEventArgs e) {
      // 获取触发事件的数据库对象所在的数据库
      var db = e.DBObject.Database;
      // 开启一个事务,用于修改数据库中的对象
      using (Transaction tr = db.TransactionManager.StartTransaction()) {
            // 尝试获取触发事件的对象,这里假设它是一个RotatedDimension类型的对象
            var ent = tr.GetObjectId(e.DBObject.ObjectId, OpenMode.ForWrite) as RotatedDimension;
            if (ent == null) return;
            // 获取标注的两个端点
            Point3d pt1 = ent.XLine1Point;
            Point3d pt2 = ent.XLine2Point;
            // 两个端点的距离,尖括号是测量值的占位符
            double dist = pt1.GetDistanceTo(pt2);   
            if (dist < 10) {
                ent.Content = "0<>";
            }
            // 提交事务,使修改生效
            tr.Commit();
      }//tr
    }//func
}//class

`中微子 发表于 2024-10-18 18:07:23

你有种再说一遍 发表于 2024-10-18 18:02
通过加入图元事件,
判断dim.数值.ToString()长度,



中间来一句看不懂噢.可以来个完整的吗?谢谢!请教了!最好带一个傻瓜试的说明:lol

Bao_lai 发表于 2024-10-18 18:10:42

本来想看看自定义尺寸样式的,结果翻了一圈没看到这个能达到这个设置。

ljpnb 发表于 2024-10-18 20:47:13

如果先标注再作修改很容易实现,可以判断标注值大小,小10,则修改为0<>,大于10,不修改
如果想标注时就能自动判断,可能需要用到反应器。

`中微子 发表于 2024-10-18 21:13:49

ljpnb 发表于 2024-10-18 20:47
如果先标注再作修改很容易实现,可以判断标注值大小,小10,则修改为0,大于10,不修改
如果想标注时就能自 ...

在标注上显示,用LISP获取就简单了.要在标注上适时更新.

kozmosovia 发表于 2024-10-19 00:12:29

简单的解决方案是写几行代码,需要时手动执行,更新一下尺寸标注添加0或者将原来加了0后来又加长不需要0的去掉0.
页: [1]
查看完整版本: 请教大神们一个尺寸标注数字问题!