当前位置:首页>python>Python-CAD 自动重建图名下划线

Python-CAD 自动重建图名下划线

  • 2026-09-16 16:01:27
Python-CAD 自动重建图名下划线

 🙋‍♀️ 本期工具展示

图名修改后,下划线长度不再匹配。开发工具自动删除旧线并按真实文字长度重建双下划线,支持循环处理整张图。

本期小工具

--------------------

🔍背景

在实际绘图过程中,图名经常会发生修改,导致原有的下划线长度往往不再合适。常见做法是直接拉伸、缩放,或者删除重画。要是没有强迫症,经过几次操作后,整体视觉开始变得不整洁。

因此想要一个可重复调用的整理工具:删除旧下划线,根据文字真实长度自动生成新的双下划线,并支持循环操作,最后统一整理整张图。

--------------------

💡实现思路

实现过程可以拆分为四个步骤:

1·选择文字对象

2·删除已存在的下划线

3·获取文字真实显示长度

4·按设定比例生成新的双下划线

其中关键点在第三步。不能通过“字符个数 × 字高”来估算文字宽度,因为不同字体、中英文混排、宽度比例、旋转角度都会影响最终显示长度。必须直接从CAD获取已经计算完成的

真实边界。

1. 连接CAD

import pythoncomimport win32com.clientdef connect_cad():    pythoncom.CoInitialize()    cad = win32com.client.Dispatch("ZWCAD.Application")    return cad

2·获取文字真实长度

核心方法是 GetBoundingBox()。它返回文字的实际显示边界。

min_point, max_point = text_entity.GetBoundingBox()min_x = float(min_point[0])max_x = float(max_point[0])text_length = max_x - min_x
  • 这个方式的优点是:

  • 自动适配中文与英文宽度差异

  • 自动适配不同字体

  • 自动适配宽度比例

  • 自动适配旋转后的显示范围

因此不需要做任何字符计算,直接使用CAD内部计算结果。

3·创建带宽度的双下划线

由于第一条线需要设置宽度,不能使用 AddLine(),必须使用 AddLightWeightPolyline()。同时要注意,COM接口需要使用 VARIANT 构造安全数组,否则会报参数错误。

def to_variant_points(pt1, pt2):    return win32com.client.VARIANT(        pythoncom.VT_ARRAY | pythoncom.VT_R8,        [pt1[0], pt1[1], pt2[0], pt2[1]]    )

宽度按文字高度比例设置,第一条线设置宽度,第二条保持细线。

width1 = text_height * 0.1offset1 = text_height * 0.3offset2 = text_height * 0.5
--------------------

我的工具箱

这个功能本身不复杂,但在图纸反复修改的过程中,可以作为统一整理的一步。修改完图名后,循环执行工具,即可自动删除旧线并重建符合当前文字长度的下划线,保持整图统一。

它不是独立的“大功能”,而是我的工具箱中的一个小模块。和批量打印一样,它的意义在于融入日常流程,使重复操作变得可控、可复用。

--------------------

🚀开始摸鱼!

🙋‍♀️ 作者:leilei

💫 碎碎念学习记录

📅 更新时间:2026年3月

最新文章

随机文章