明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 731|回复: 11

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

[复制链接]
发表于 2024-10-17 20:57:20 | 显示全部楼层 |阅读模式
如下图标注,我想把得到的数字是1位是在前面加0,是二位以上时把前面0去掉.

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-10-18 05:13:26 | 显示全部楼层
难道你有看到过这种标注?

点评

搞了半天没能搞出来,冒试不能通过设置标注搞出来了.OFFICE里可以做到.  发表于 2024-10-18 17:57
发表于 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

点评

感谢大神!!这是C语言吧!可以来个LISP的不.还是谢谢大神的热情.  发表于 2024-10-18 21:30
 楼主| 发表于 2024-10-18 18:07:23 | 显示全部楼层
你有种再说一遍 发表于 2024-10-18 18:02
通过加入图元事件,
判断dim.数值.ToString()长度,

中间来一句看不懂噢.可以来个完整的吗?谢谢!请教了!最好带一个傻瓜试的说明
发表于 2024-10-18 18:10:42 来自手机 | 显示全部楼层
本来想看看自定义尺寸样式的,结果翻了一圈没看到这个能达到这个设置。
发表于 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获取就简单了.要在标注上适时更新.
发表于 2024-10-19 00:12:29 | 显示全部楼层
简单的解决方案是写几行代码,需要时手动执行,更新一下尺寸标注添加0或者将原来加了0后来又加长不需要0的去掉0.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-22 02:14 , Processed in 0.183688 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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