Community写作与编辑github.com

DWG 转 PDF

无需上传至网络服务,将 CAD 图纸(DWG/DXF)本地转换为 PDF 文件。

DWG 转 PDF 是什么?

此技能用于将 CAD 图纸(DWG 或 DXF 格式)转换为 PDF 文件,所有处理均在本地完成,无需将图纸上传至任何网络服务。用户需提供源文件路径及可选输出路径;若未指定输出路径,PDF 将保存在源文件同目录下。技能利用 `scripts/convert_dwg_to_pdf.py` 脚本执行转换,该脚本通过命令行参数 `--input` 和 `--output` 处理绝对路径。对于 DWG 文件,脚本会先使用 ODA File Converter 将其转换为 DXF,再渲染为 PDF;DXF 文件则直接渲染。转换完成后,会验证生成的 PDF 是否包含至少一页且文件大小大于 0 字节,并生成首页的预览 PNG 供快速检查。如果预览图空白或裁剪不当,可尝试调整纸张大小或建议用户直接使用 ODA 查看器手动打印。技能还通过 Windows Package Manager 管理 ODA 依赖,通过 pip 管理 Python 库(`ezdxf`、`matplotlib`、`pymupdf`),并针对中文等非 ASCII 输出路径采用了临时复制策略以避免编码问题。该技能主要面向 Windows 平台,支持在 Claude Code 等 AI 代理工具中作为技能使用。

兼容平台~Claude Code✓Codex CLI~Cursor
npx skills add 2807334132-lab/codex-skills

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

DWG 转 PDF 是做什么的?

概述

使用此技能将 CAD 图纸转换为 PDF 文件,无需将图纸上传到网络服务。优先使用附带的脚本进行转换,因为 DWG 转换在 Windows 上有几个脆弱的细节:ODA 命令行参数顺序、CAD 库依赖关系以及非 ASCII 输出路径。

工作流程

  1. 确认源文件存在并识别它是 .dwg 还是 .dxf 格式。
  2. 选择输出路径。如果用户未指定,则将 <源文件名>.pdf 保存在源文件旁边。
  3. 使用绝对路径运行 scripts/convert_dwg_to_pdf.py:
python scripts/convert_dwg_to_pdf.py --input "D:\path\plan.dwg" --output "D:\path\plan.pdf"
  1. 验证脚本输出结果:
    • pages 必须至少为 1。
    • bytes 必须大于 0。
    • preview 应指向第一页渲染后的 PNG 预览图。
  2. 当用户要求“打开”PDF 或者打开操作明显有用时,为用户打开 PDF。

工具

脚本支持:

  • .dwg:使用 ODA File Converter 转换为 DXF,然后渲染为 PDF。
  • .dxf:直接渲染为 PDF。

如果 ODA File Converter 缺失,在允许的情况下使用 Windows Package Manager 安装:

winget install --id ODA.ODAFileConverter -e --accept-source-agreements --accept-package-agreements --disable-interactivity

脚本需要 Python 包 ezdxf、matplotlib 和 pymupdf。如果这些包缺失且允许安装,则安装它们:

python -m pip install ezdxf matplotlib pymupdf

质量检查

始终检查生成的 PDF 是否正常渲染。非空的 PDF 仍然可能是错误的,例如绘制的图形不可见、页面严重裁剪或文字/字体渲染失败。

使用生成的预览 PNG 进行快速视觉检查。如果预览图空白或严重裁剪:

  • 使用更大的纸张尺寸重新运行,例如 --paper a2-landscape;
  • 如果绘图使用了 ezdxf 无法良好渲染的布局或功能,尝试直接使用 ODA 查看器/手动打印;
  • 告知用户输出可能无法精确保留所有 CAD 特性。

备注

  • 不要修改原始 DWG 文件。在转换时,从复制的中间文件夹开始操作。
  • 除非用户明确同意上传图纸,否则避免使用网络转换器。
  • 当保存到中文或其他非 ASCII 路径时,让脚本先写入一个 ASCII 临时 PDF,然后再复制到请求的输出路径。
  • 最终回复中使用绝对文件路径。

相关技能