Siemens NX 2506(UG)图纸模板

最近更新于 2026-04-16 17:08

前言

2025/10/27
刚从 Solidworks 换成 NX 建模和出图纸,还在不断摸索 NX 的图纸使用,本篇将摸索经验汇总记录。主要是实现修改模板做到一键填写图纸标题栏(值来源于零件属性),以及一些改进设置。
注意本文适用于中文语言设置下,其它语言下模板路径设置是不同的。

零件属性模板

创建

新建一个空白文件
file

打开属性模板
文件 – 实用工具 – 属性模板
file

切换到目录
file

开始创建属性,这里类别我都统一写的“自定义模型属性”,每次设置后点“应用”就不会关闭窗口
file

  • DB_PART_NAME 零件名 字符串
  • DB_PART_NO 图号 字符串
  • DESIGNER 设计 字符串
  • Designer_Date 设计日期 字符串
  • CHECKER 校对 字符串
  • Checker_Date 校对日期 字符串
  • AUDITOR 审核 字符串
  • Auditor_Date 审核日期 字符串
  • APPROVER 批准 字符串
  • Approver_Date 批准日期 字符串
  • DB_PART_TYPE 类型 字符串
  • DMaterial 材料 字符串
  • CompanyName 公司名 字符串

创建好后,展开操作,导出至目录
file

选一个固定目录保存,并命名文件
file

修改默认属性模板

文件 – 实用工具 – 用户默认设置
file

基本环境 – 用户属性,在 Windows 那里点击“浏览”,选择前面导出的文件,修改后重启 NX 生效,前面创建的空白文件可以不用保存
file

设置生效后,新建零件或打开零件也都有这些属性
在装配导航器的零件上右键属性就能看到对应零件的属性


如果要恢复可以设为原值:%UGII_TMP_DIR%\NXAttributeCatalog.xml

批量编辑属性

在装配导航器重可以同时选择多个零件,按住Ctrl就是累计点选,按住Shift就是选中两次点击之间的所有零件,然后右键,点开属性,可以进行批量编辑
file

Python 脚本自动化

将脚本添加快捷按钮,参考:https://blog.iyatt.com/?p=22144#%E4%B8%BA%E8%87%AA%E5%AE%9A%E4%B9%89%E5%91%BD%E4%BB%A4%E6%B7%BB%E5%8A%A0%E6%89%A7%E8%A1%8C%E6%8C%89%E9%92%AE

添加按钮后,点击即可执行代码
file

更新图号和名称

我设计工装时,文件的命名都是 "图号 名称.prt",这里就写了一个脚本,实现自动分解文件名填给 DB_PART_NO 和 DB_PART_NAME 两个属性。

import NXOpen
import os

def main():
    session = NXOpen.Session.GetSession()
    work_part = session.Parts.Work
    lw = session.ListingWindow
    lw.Open()

    if not work_part:
        lw.WriteLine("未检测到活动零件。")
        return

    # 从顶层装配开始递归处理所有组件
    root_component = work_part.ComponentAssembly.RootComponent
    if root_component is None:
        # 当前是单个零件
        update_part_attributes(work_part, lw)
    else:
        # 当前是装配体
        process_component_recursive(root_component, lw)

    lw.WriteLine("\n=== 属性更新完成 ===")

def process_component_recursive(component, lw):
    """递归遍历组件及其子组件"""
    try:
        # 获取组件对应的零件对象
        part = component.Prototype
        if part is not None:
            update_part_attributes(part, lw)
    except Exception as e:
        lw.WriteLine("组件处理失败:{} -> {}".format(component.DisplayName, e))

    # 递归子组件
    for child in component.GetChildren():
        process_component_recursive(child, lw)

def update_part_attributes(part, lw):
    """根据零件文件名更新属性"""
    try:
        if not part.IsFullyLoaded:
            part.LoadFully()

        filename = os.path.basename(part.FullPath)
        name_without_ext, ext = os.path.splitext(filename)

        # 拆分格式 “图号 名称.prt”
        parts = name_without_ext.split(" ", 1)
        if len(parts) != 2:
            lw.WriteLine("❌ 文件名不符合规则: {}".format(filename))
            return

        part_no, part_name = parts

        # 设置属性
        set_nx_attribute(part, "DB_PART_NO", part_no)
        set_nx_attribute(part, "DB_PART_NAME", part_name)

        lw.WriteLine("✔ [{}] DB_PART_NO='{}', DB_PART_NAME='{}'".format(
            filename, part_no, part_name
        ))

    except Exception as e:
        lw.WriteLine("更新零件失败:{} -> {}".format(part.FullPath, e))

def set_nx_attribute(part, attr_name, value):
    """设置或更新属性"""
    part.SetUserAttribute(attr_name, -1, value, NXOpen.Update.Option.Now)

if __name__ == "__main__":
    main()

同步材料

将材料值从系统属性 NX_MATERIAL 同步到自定义属性 DMaterial

import NXOpen

def main():
    session = NXOpen.Session.GetSession()
    lw = session.ListingWindow
    lw.Open()

    # 获取当前工作部件(若是装配,则后续递归遍历)
    work_part = session.Parts.Work

    # 用集合去重,避免装配中多次实例化同一 part 文件
    processed = set()

    def process_part(part):
        """递归处理装配并给每个零件写 DMaterial"""
        if part is None:
            return
        # 按完整路径去重
        key = part.FullPath
        if key in processed:
            return
        processed.add(key)

        # 取 NX_Material(系统只读属性)
        nx_mat = part.GetStringAttribute("NX_Material")

        if nx_mat:
            # 写入/覆盖 DMaterial
            part.SetUserAttribute("DMaterial", 0, nx_mat, NXOpen.Update.Option.Now)
            lw.WriteLine(f"{part.Leaf}  -->  DMaterial = {nx_mat}")
        else:
            lw.WriteLine(f"{part.Leaf}  -->  NX_Material 为空,跳过")

        # 若是装配,继续递归
        if part.ComponentAssembly.RootComponent:
            for comp in part.ComponentAssembly.RootComponent.GetChildren():
                child_part = comp.Prototype
                process_part(child_part)

    # 从工作部件开始
    process_part(work_part)
    lw.WriteLine("==== 全部完成 ====")

if __name__ == "__main__":
    main()

质量属性

设置自动创建质量属性

打开用户默认设置
基本环境 – 材料/质量
在部件属性选项里,确保质量相关的属性勾选了“创建属性”
file

在累计属性选项里,确保质量相关的属性勾选了“创建属性”
file

在杂项选项里,勾选“生成质量数据”,并将“替代生成质量数据”选为“始终生成”
file

测试:新建一个零件,随意建模一个实体,并保存文件,在零件上右键属性,在质量选项卡下可以看到质量
file

然后我创建了一个子零件,在属性选项卡可以看到“MassPropRollupMass”的值就是累计质量(所选装配体的总质量),“MassPropMass”是当前零件的质量
file

制图标准

打开用户默认设置,左边点到制图,右边制图标准选GB,然后点定制标准
file

另存为
file

这里我取名为GB-自定义
file

然后返回到用户默认设置制图标准选刚才另存的标准GB-自定义,然后点应用将其设为默认。
file

用文件资源管理器打开

%USERPROFILE%\AppData\Local\Siemens\NX2506

就可以看到有 2 个配置文件,后面其它电脑可以同样复制这 2 个文件再设置为默认即可。
file

然后再点定制标准进行具体设置。

字体相关设置

参考现行标准《GB/T 14691-1993》,字体使用长仿宋体,字宽=\frac{字高}{\sqrt2}\approx0.71\times字高。也就是仿宋体,但字体高度:宽度=1:0.71。
file

公共-文字

字体选仿宋,高度3.5,宽高比设置为0.71,符号字体文件为 NX ISO Symbols
file
file

尺寸-文本-单位

小数位数 3,一般机加工 3 位小数足够
file

尺寸-文本-附加文本

file

尺寸-文本-尺寸

file

尺寸-文本-公差

file

尺寸-公差

小数位数:3
file

孔和螺纹标注设置

展开尺寸-孔和螺纹标注,有:常规孔、钻形孔、螺钉间隙孔、螺纹孔、符号螺纹,可以分别设置,主要是根据需要设置标注内容以及汉化(加工的人可能看不懂英语名称)。

默认的标注内容有点多,不需要的可以不勾选。
file
比如螺纹孔螺纹公差默认省略就是6H,根本就不需要固定标注6H。反而如果不是要6H的时候,还要再去删掉6H手动添加需要的公差。不如一开始就不标注6H,需要非6H公差时自己输入即可。
符号螺纹也不勾选螺纹公差
file
file

螺纹间隙孔不勾选等尺寸配对,这个勾选了会显示螺纹间隙孔的配对松紧,如H12、H13、H14。
file

螺纹间隙孔不勾选螺丝规格,这个勾选了还会显示螺纹是多大的,没啥意义,只需要标注出这个螺丝过孔的大小即可
file

常规孔翻到底下,通孔文本默认是THRU,可以改为贯穿
终止倒斜角后缀-Other End可以改为-另一端
其它孔如图改即可
file
file
file
file
file

孔表设置

表 – 孔表 – 格式

显示列X 和 Y,勾选合并相同尺寸的单元格
file

表 – 孔表 – 标签格式

索引字母和数字
这样同种规格的孔是同一个字母,可以快速辨别,和 Solidworks 孔表默认一样。
file

尺寸 – 坐标

给孔表原点添加符号,方便一眼看到
显示名称样式用户定义
用户定义文本填(直接复制我下面的内容粘粘进去即可)

<F10><F>

file

这个符号的效果如下图
file

线宽

根据自己需要设置。
这里按照粗实线 0.25,细实线 0.13 设置,除了模型可见边使用粗实线,其它全部细实线。

设置线宽 0.25:

  • 视图-公共-可见线
    file

设置线宽 0.13:

  • 公共-直线/箭头-箭头
  • 公共-直线/箭头-箭头线/指引线
  • 公共-直线/箭头-延伸线
  • 注释-GDT
  • 注释-符号标注
  • 注释-基准目标
  • 注释-边条件符号
  • 注释-表面粗糙度符号
  • 注释-焊接符号
  • 注释-目标点符号
  • 注释-相交符号
  • 注释-剖面线/区域填充
  • 注释-中心线
  • 视图-公共-隐藏线
  • 视图-公共-虚拟交线
  • 视图-公共-次要几何体
  • 视图-公共-光顺边
  • 视图-局部放大图
  • 视图-剖切线
  • 视图-断开

标签

视图-剖视图

标签页下,前缀输入一个空格进去
不然剖视图的时候会显示类似“SECTION A-A”这种,输入一个空格替换后,默认就显示“ A-A”了。
file

保存制图标准

设置完一定要记得点保存,建议一边设置一边保存,不然一不小心按出去了就比较麻烦。最终设置完成以后要把 NX 关闭后重新打开才会更新用户默认设置。
file

图纸模板

这里以 A3 图框示例,其它大小的图框设置可以同样操作。

新建一个 A3 图框文件
file

文件 – 首选项 – 制图
制图首选项的设置内容是保存在图纸文件里的,设置好模板就不用再改了
file

看底下的继承,把它展开,设置源用户默认设置,然后点击吸管图标从用户默认设置加载,接着确定即可。
file

标题栏

Ctrl+L打开图层设置,勾选 170 图层,这样标题栏就可以编辑了。修改完后,再重新勾选仅可见,锁定标题栏。
file

标题栏引用

(1)公司名可以直接编辑修改作为固定值,或者我这里设置成引用 CompanyName 的值
file

file

标题栏有些单元格设置的属性值可以维持默认不修改
file
(2)重量,双击编辑,填入

<W@NX_MassPropRollupMass>

再右键设置
file
公共 – 单元格
类别设置为数值,小数位数一般 2 位
file
还可以设置一下后缀 kg
file

(3)共 页,双击编辑,填入

共 <W@$SH_NUMBER_OF_SHEETS> 页

(4)第 页,双击编辑,填入

第 <W@$SH_SHEET_NUMBER> 页

(5)设计日期
file

<W@Designer_Date>

(6)校对日期
file

<W@Checker_Date>

(7)审核日期
file

<W@Auditor_Date>

(8)批准日期
file

<W@Approver_Date>

(9)材料
file

<C1.500><W@DMaterial><C>

(10)比例
file

<W@$SH_SHEET_SCALE_NUMERATOR>:<W@$SH_SHEET_SCALE_DENOMINATOR>

比例的值由:图纸页右键 – 编辑图纸页,大小 – 比例 设置决定
似乎这里有 bug,如果一开始创建的基本视图不是用的 1:1,这个比例值依然会是 1:1,只有后期再修改这里的比例到一个不同的值才会刷新
file
file

像有些预填的文字,建议把两侧的F标签去掉
不然替换零件内图纸的时候,可能变成方块
比如下面的 F2 和 F,两侧的尖括号一起删掉
file

file

标题栏单元格格式

所有单元格建议都勾选 “自动调整文本大小”和“换行”,宽度小的把换行排到第一个,比如序号和数量,其它可以设置优先自动调整文本大小
file

file

材料明细表引用(非装配图框,跳过)

选中材料明细表,右键打开设置
file

零件明细表 – 列
把“单件”和“总计表”的“属性名称”都设置为“NX_MassPropRollupMass”,输入后回车确认
注意改属性名称时标题可能也会发生修改,记得把标题重新设回去
file

添加自定义模板

在资源管理器地址栏打开: %UGII_BASE_DIR%\GCTOOLKIT\prc\simpl_chinese\startup
本部分修改的文件都在这个目录下
file

新建/替换时使用的模板

将前面设置好的图纸文件复制到这个目录下,然后看到 ugs_drawing_templates_simpl_chinese.pax 文件,右键属性,取消只读
file

以管理员身份打开记事本,然后用记事本编辑这个文件,每一块都是一个图纸模板
file

复制一个,然后粘粘到末尾
原文件的 id 已经到 d52 了,我这里就从 d101 开始,也方便和原本的区别
name 设置图框名字,description 设置描述,Filename 设置自己创建的图框文件名
file

写好配置后,重新在这个文件上右键,设置只读
重启 NX,新建图纸里就能看见自己创建的图纸模板了
file

菜单 – GC 工具包 – 制图工具 – 替换模板
file

file

零件内插入图纸页时的模板

在图纸中切换图框的时候,模板列表要设置另外一个文件
文件名叫 ugs_sheet_templates_simpl_chinese.pax
同样先取消只读,然后以管理员打开记事本编辑,类似操作,复制里面的一个图纸模板来修改就行,注意不要沿用新建/替换写的配置,格式有点区别的
file

修改装配体和模型的制图首选项

前面修改的内容可以保证独立的图纸文件按照预期模板创建,但是如果是零件内插入图纸,只有图框会使用模板的配置内容,制图首选项相关的内容(字体、标注、孔表等)依然不生效,还需要修改模型和装配体模板才行。
公制单位的建模模板:model-plain-1-mm-template.prt
公制单位的装配模板:assembly-mm-template.prt

右键属性取消它们的只读,以管理员身份启动 NX 分别编辑。
比如现在打开了建模模板
file

Ctrl+Shift+D进入模型内置制图,任意选一个模板或图纸大小进去
file

Ctrl+L打开图层设置,勾选 170 图层的仅可见,不然插入的图纸页默认看不到图框
file

接下来的设置内容就参考制图首选项部分,完全一样的设置

设置完以后,按M回到建模环境,在部件导航器中展开图纸,在插入的图纸页上右键删除,这样就把前面为了配置制图首选项插入的图纸删掉了,接着保存文件
file

装配模板同样的方式修改,最后再把他们的属性设置回只读
file

补充:调试辅助脚本

自定义模板的时候,经常要复制文件操作,还要设置和取消只读,有点麻烦。我用 ChatGPT 写了脚本来执行复制操作。
把自定义的模板 .prt 文件保存到一个目录下,然后把配置文件的 .pax 文件也复制到这个目录下,并取消只读,方便随时编辑。
file

然后创建一个 PowerShell 脚本文件:复制模板文件.ps1
我使用的自己安装的 PowerShell 7,Windows 系统预装的 PowerShell 5 执行可能出错

Set-StrictMode -Version Latest
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

Write-Host "==============================================="
Write-Host "🔧 正在更新 NX 启动模板、图框及配置中心文件..."
Write-Host "==============================================="

# 定义源目录和目标目录
$srcDir = $PSScriptRoot
$dstDirStartup = Join-Path $env:UGII_BASE_DIR "GCTOOLKIT\prc\simpl_chinese\startup"
$dstDirConfig = Join-Path $env:USERPROFILE "AppData\Local\Siemens\NX2506"

# 1. 处理模板文件 (.prt, .pax)
$templateFiles = Get-ChildItem -Path $srcDir -File |
                 Where-Object { $_.Extension -in '.prt','.pax' }

if ($templateFiles) {
    if (-not (Test-Path -Path $dstDirStartup)) {
        New-Item -ItemType Directory -Force -Path $dstDirStartup | Out-Null
    }
    foreach ($file in $templateFiles) {
        $dstPath = Join-Path $dstDirStartup $file.Name
        Write-Host "➡️ 正在复制模板:$($file.Name)"
        Copy-Item -Path $file.FullName -Destination $dstPath -Force
        (Get-Item $dstPath).Attributes = 'ReadOnly'
    }
}

# 2. 处理配置文件 (.dpv, .xsl)
$configFiles = Get-ChildItem -Path $srcDir -File |
               Where-Object { $_.Extension -in '.dpv','.xsl' }

if ($configFiles) {
    if (-not (Test-Path -Path $dstDirConfig)) {
        Write-Host "📁 目标目录不存在,正在创建: $dstDirConfig"
        New-Item -ItemType Directory -Force -Path $dstDirConfig | Out-Null
    }
    foreach ($file in $configFiles) {
        $dstPath = Join-Path $dstDirConfig $file.Name
        Write-Host "➡️ 正在复制配置:$($file.Name)"
        # 配置文件通常不需要强制只读,如需只读请取消下行注释
        Copy-Item -Path $file.FullName -Destination $dstPath -Force
    }
}

if (-not $templateFiles -and -not $configFiles) {
    Write-Host "⚠️ 当前目录未发现相关文件 (.prt, .pax, .dpv, .xsl),脚本终止。"
    exit 1
}

Write-Host "==============================================="
Write-Host "✅ 所有文件处理完成。"
Write-Host "模板路径: $dstDirStartup"
Write-Host "配置路径: $dstDirConfig"
Write-Host "==============================================="

再创建了一个批处理文件:执行复制模板文件.bat
批处理文件可以直接右键管理员执行,用它间接调用 PowerShell 脚本

@echo off
chcp 65001 >nul
title 部署模板文件(管理员检测)

:: ---- 检测管理员权限 ----
fltmc >nul 2>&1 || (
    :: 非管理员:在当前窗口输出红字,然后 pause 等待
    powershell -NoLogo -NoProfile -Command "Write-Host '错误:本脚本需要以管理员身份运行!' -ForegroundColor Red"
    pause
    goto :EOF
)

:: ---- 已管理员,调用 PowerShell 脚本 ----
cd /d "%~dp0"
pwsh -NoLogo -NoProfile -ExecutionPolicy Bypass -File "复制模板文件.ps1"
pause

.prt 模板文件做好后,.pax 配置文件也设置好的情况下,直接右键执行
file
就把文件复制过去,并设置只读了
file

我上班的公司最大只能打印 A3 图纸,装配图基本固定使用 A3,零件使用 A3 或 A4,我总共就只改了这 3 个出来。

修改建模模板

验证自定义模板

独立图纸文件

我这里创建了一个装配体,命名是“图号 名称.prt”的格式
file

执行脚本自动根据文件名填写图号和名称
file
file

当零件处于工作部件时
菜单 – 工具 – 材料 – 指派材料
可以给零件设置材料
file

我这里已经设置好材料的,然后运行脚本把材料同步到自定义属性(用于标题栏显示)
file

新建图纸,为装配体文件创建图纸
file

Ctrl+S保存一下文件,可以看到标题栏的质量就显示出来了
file

菜单 – GC 工具包 – 标准化工具 – 属性工具
file

在属性同步标签页,点确定,就会把模型的属性同步到图纸,标题栏就会显示出来了
file

为零件创建图纸
file

进行同样的操作后,标题栏就会显示了
file

零件内图纸文件

Ctrl+Shift+D进入模型内置制图,选择自定义的图纸页
file

Siemens NX 2506(UG)图纸模板
Scroll to top
打开目录