一款简易的CASS宗地注记排版插件,闲暇时自行设计,功能较为基础,实用性有限,具体效果可参考对比图示。
1、 启动Cass软件,进入地籍菜单选择绘制权属线功能,绘制宗地并添加文字标注,预先设置相关参数即可生成与示例一致的图形。
2、 在命令行输入vbaide后按回车,启动VBA编辑器。于工程资源管理器中右键单击,选择插入模块,并将代码复制到右侧的代码编辑区域中。
3、 本程序旨在实现文本对象的自动化排列,通过用户指定三个关键点来完成精确布局。首先定义圆周率常量PI,其值为3.1415927,用于后续角度与几何计算。程序运行时会创建一个临时的选择集,用于筛选图形中所有文字类型的实体。若此前已存在同名选择集,则先将其清除再重新建立,以确保操作环境干净无误。新建的选择集仅过滤TEXT类型对象,并允许用户在屏幕上进行交互式选取。
4、 当选取完成后,系统统计所选中文本的数量并赋值给变量Num,作为后续分布计算的基础参数。接下来进入关键点输入阶段:程序提示用户依次点击三个位置——第一点和第二点用于确定排列方向线段,第三点则决定整体偏移距离及方向。这三个点共同构成排布逻辑的核心依据。
5、 根据前两点坐标,计算出每个文本之间在主方向上的平均位移增量,即X轴方向步长aX与Y轴方向步长aY,二者分别为两点横纵坐标差值除以文本总数。这一分段处理确保所有文本沿直线均匀分布。
6、 为了准确控制旋转方向,程序需计算该连线相对于水平轴的夹角xzd。通过反正切函数Atn获取基础角度后,结合两点坐标的相对关系判断象限,从而修正最终旋转角。具体而言,当起点位于终点右下方时,角度为负;起点在左下方则保持正值;其他情况依坐标变化调整符号或补角至π范围之内,确保旋转方向符合实际指向。
7、 为进一步实现垂直方向的偏移控制,程序构建了垂直于原方向线的单位向量。该向量通过交换原方向向量的X、Y分量并反转其中一个符号得到,随后归一化处理,使其长度为1。此向量将用于后续向左或向右侧的等距偏移计算。
8、 紧接着,利用点到直线的距离公式,求解第三点到由第一、二点所确定直线的垂直距离。为此,先根据两点式写出直线的一般方程Ax + By + C = 0,其中系数A、B、C由坐标代入得出。然后代入第三点坐标,运用点线距离公式 |Ax?+By?+C| / √(A?+B?) 计算出实际偏移量d。该数值代表所有文本整体偏离原始连线的距离,模拟三点定面的空间定位思想。
9、 同时,程序还需获取当前文本的高度H,以便在排布过程中维持字体大小一致性,并可据此动态调整间距或对齐基准。通常可通过读取任一选中文本的属性获得该值。
10、 完成上述参数提取后,程序开始逐个处理选择集中的每一个文本对象。对于第i个文本(i从0到Num-1),其目标位置由以下方式确定:起始点pd0加上i倍的步长向量(aX, aY),再加上垂直方向单位向量乘以偏移距离d。这样既保证了沿主方向的等距分布,又实现了整体向一侧的平行移动。
11、 此外,每个文本的旋转角度也被设置为之前计算出的xzd,使其字符走向与排列路径一致,提升视觉协调性。若需要反向排列,可通过调整索引顺序或改变步长方向实现。
12、 整个过程充分结合了解析几何原理与AutoCAD对象模型的操作接口,借助坐标变换、向量运算和几何公式,实现了高度灵活且精准的文字排版功能。用户只需简单点击三个参考点,即可完成复杂布局,极大提升了制图效率与规范性。
13、 值得注意的是,程序开头设置了错误忽略语句On Error Resume Next,目的在于防止因用户中途取消操作或选择无效对象而导致中断。虽然这在调试阶段可能掩盖潜在问题,但在正式使用中能增强程序鲁棒性,使流程更加流畅。
14、 在完成所有文本的位置与角度更新后,应及时释放相关对象引用,清理临时选择集,避免占用内存或影响后续操作。整个模块设计简洁高效,逻辑清晰,适用于大批量标注、线路编号、设备标签等多种工程场景下的自动对齐需求。
15、 通过这种三定点控制策略,不仅克服了传统线性排列无法兼顾方向与偏移的问题,还引入了非线性布局的可能性。例如稍加扩展,即可支持曲线路径上的文本分布,或是基于多边形边界进行环绕排布。此外,还可加入人机交互界面,让用户自定义间距、对齐方式、是否镜像翻转等参数,进一步提升实用性。
16、 该脚本体现了参数化设计的基本思路:将几何关系抽象为数学表达,利用程序自动求解并驱动图形变化。它不仅是提高绘图效率的工具,更是连接设计意图与数字模型之间的桥梁,展示了自动化技术在工程制图领域的重要价值。
17、 双击AutoCAD对象中的ThisDrawing,在右侧代码窗口中输入相应代码即可。
18、 在VBA中点击保存,选择路径与工程名,随后关闭窗口即可。
19、 在命令行输入快捷键as,选中需排版的文字,依次选择第一、第二、第三选项,即可完成排版,具体操作所示。
20、 通过从右下向左上拖动选择文字,可保持其原始生成顺序。
21、 若逐个点击选择文字,最终顺序将按点击的先后排列。
22、 选取第一点和第二点,第三点所示。前两点确定的直线作为文字对齐的基准边方向。第三点可选上侧线段上的任意位置,用于确定宗地两侧的距离,从而进一步明确文字偏移的具体位置。
23、 欢迎指出文中不解或谬误之处,共同探讨,本人仅是应用技术的爱好者。