You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyautocad调用AddHatch时遇COM错误(-2147352571)求解决方案

问题解决:pyautocad中AddHatch的COM类型不匹配错误

错误原因

你遇到的COM Error: (-2147352571, 'Type mismatch.', ...)错误,核心是两个问题:

  1. AddHatch参数顺序完全错误:原代码错误地将拾取点作为第二个参数传入,但AutoCAD的AddHatch方法第二个参数应为填充图案名称,而非坐标点。
  2. 缺少填充必需的封闭边界:AutoCAD的填充操作必须依赖已存在的封闭图形(如闭合多段线),无边界直接传拾取点无法触发填充逻辑。

修正后的代码

import pyautocad
from pyautocad import APoint
import comtypes

acad = pyautocad.Autocad()

# 1. 创建封闭的矩形边界(填充必须基于封闭图形)
points = [APoint(0, 0), APoint(10, 0), APoint(10, 5), APoint(0, 5), APoint(0, 0)]  # 首尾重合确保封闭
polyline = acad.model.AddLwpolyline(points)
polyline.Closed = True  # 显式设置多段线为封闭状态

# 2. 正确调用AddHatch创建填充
try:
    # AddHatch参数说明:
    # pattern_type: 0=预定义图案, 1=用户定义, 2=自定义
    # pattern_name: 填充图案名称(如"SOLID"为实心填充)
    # associative: 是否关联填充(True=填充随边界变化自动更新)
    hatch = acad.model.AddHatch(0, "SOLID", True)
    
    # 将矩形边界添加为填充的外边界
    hatch.AppendOuterLoop([polyline.ObjectID])
    
    # 生成填充效果
    hatch.Evaluate()
 
except comtypes.COMError as e:
    print(f"COM Error: {e}")

关键修正点

  • 确保边界封闭:通过首尾点重合或polyline.Closed = True保证图形是封闭的,这是填充的必要前提。
  • 修正参数顺序:严格按照pattern_type→pattern_name→associative的顺序传入参数,避免类型不匹配。
  • 绑定填充边界:通过AppendOuterLoop方法将封闭图形的ObjectID传入,明确告诉AutoCAD需要填充的区域,而非直接传拾取点。

内容的提问来源于stack exchange,提问作者raghu raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:50:10