本文介绍在 pyautocad 环境下通过底层 com 接口直接设置 autocad 三维网格实体颜色的两种主流方式:基于 aci(autocad color index)的索引色与基于 rgb 的真彩色(truecolor)。
本文介绍在 pyautocad 环境下通过底层 com 接口直接设置 autocad 三维网格实体颜色的两种主流方式:基于 aci(autocad color index)的索引色与基于 rgb 的真彩色(truecolor)。
在 pyautocad 中,pyautocad 本身并未封装对 Acad3DMesh 或其他实体颜色属性的高级接口(如 .color 或 .truecolor 的便捷赋值),因此需借助其底层依赖的 win32com(或更现代的 pyrx_impx/Ax 模块)直接操作 AutoCAD COM 对象。核心思路是:获取目标网格实体后,通过其 color(ACI 值)或 TrueColor 属性进行赋值。
✅ 方法一:使用 ACI(AutoCAD Color Index)设置颜色
ACI 是 AutoCAD 内置的 255 色索引系统(1–255),其中 1 表示红色,2 为黄色,3 为绿色,7 为白色等。适用于快速指定标准色:
import win32com.client
acad = win32com.client.Dispatch("AutoCAD.Application")
doc = acad.ActiveDocument
model = doc.ModelSpace
# 假设 mesh_obj 是已创建的 3D Mesh 实体(例如通过 Add3DMesh)
# mesh_obj = model.Add3DMesh(...)
# 设置 ACI 颜色(例如红色)
mesh_obj.color = 1⚠️ 注意:color 属性仅在实体 ColorMethod 为 acColorByLayer 以外时生效(默认通常为 acColorByLayer)。若颜色未变化,请先检查并修改 ColorMethod:
CAD通信网关(公共库) 复用建筑施工图方案的Skill0公共库下载CAD通信网关公共库(装修设计扩展版)。提供统一CAD COM封装接口,支持AutoCAD/天正双模式,包含装修专业图层体系、材料图块、房间边界检测、弧形吊顶COM接口。复用建筑施工图方案Skill0公共库。
mesh_obj.ColorMethod = 0 # acColorByEntity (0) 或 acColorByBlock (1)
✅ 方法二:使用 TrueColor(RGB)设置自定义颜色
如需精确控制 RGB 值(如森林绿 R=34, G=139, B=34),必须使用 TrueColor 属性配合 AcCmColor 对象:
from pyrx_impx import Ax # 推荐用于 AutoCAD 2021+ 的现代化 COM 封装
# 获取当前文档
axApp = Ax.getApp()
axDoc = axApp.ActiveDocument
# 交互式选择网格对象(也可通过 ObjectId 或遍历 ModelSpace 获取)
axEntRes = axDoc.Utility.GetEntity("请选择一个网格对象:")
axEnt = axEntRes[0]
# 方式1:直接设置 ACI(红色)
axEnt.color = 1
# 方式2:设置 TrueColor(绿色)
acColor = Ax.AcadAcCmColor()
acColor.SetRGB(34, 139, 34) # R, G, B ∈ [0, 255]
axEnt.TrueColor = acColor
# 可选:强制刷新视图
axDoc.Regen(Ax.AcRegenType.acAllViewports)? 关键注意事项
- 权限与上下文:脚本需在 AutoCAD 宿主环境中运行(非纯 Python 独立进程),且用户具有编辑权限;
- 对象类型兼容性:TrueColor 对 Acad3DMesh、AcadPolyline、AcadSolid 等均有效,但不适用于图层(Layer)级颜色;
- 颜色继承优先级:实体颜色受 ColorMethod 控制——若为 acColorByLayer(默认),则 color 和 TrueColor 设置将被忽略,此时应改用 Layer.Color 或切换 ColorMethod;
- 错误处理:建议包裹 try/except,尤其在交互式选择时防范用户取消操作引发的 COM 异常。
✅ 总结
虽然 pyautocad 提供了简洁的建模接口,但深度图形属性(如颜色、线型、材质)仍需回归 AutoCAD 原生 COM 模型操作。掌握 color(ACI)与 TrueColor(RGB)双路径,可灵活满足标准化配色与设计级精准着色需求。实际开发中,推荐优先使用 pyrx_impx.Ax 模块替代原始 win32com,以获得更稳定的类型提示与 AutoCAD 版本兼容性。


















