Siemens NX 2506(UG)图纸模板

最近更新于 2025-11-11 12:32

前言

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

图纸模板

可以选择自己新建一个空白文件,然后进入制图环境绘制图框,这样创建的模板文件更小一点,我这里就直接用自带的模板修改,操作更简单。
这里以 A3 图框示例,其它大小的图框设置可以同样操作。

制图首选项

新建一个 A3 图框文件
file

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

字体设置

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

公共 – 文字
字体选仿宋,高度3.5,宽高比设置为0.71
file

同样操作,在尺寸 – 文本下,分别设置附加文本、尺寸文本、公差文本
file
file
file

孔标注设置

尺寸 – 孔和螺纹标注
在类型那里可以选不同的孔,下面勾选这种类型的孔要标注的内容,一般孔就标注大小和深度就行了,那一堆让位槽、孔口倒角就不用标注了,看着烦,就取消勾选了。通孔文本可以汉化一下,我就写成完全贯穿。
file
file

孔表

表 – 孔表 – 格式
一般只需要 X 和 Y 坐标就行,合并相同尺寸的单元格
file

表 – 孔表 – 标签格式
Solidworks 中默认用字母和数字,NX 默认是直接全编数字,我觉得 Solidworks 默认的更好。
这里也改为字母和数字,这样同种大小的孔用一个字母,可以快速区分不同孔
file

坐标原点符号

主要是 NX 的孔表默认状态不会在图上标识原点(创建的时候有,创建好了就不显示了),就显示一个“ORDINATE数字”,看图的时候就不太明确了。
file

file

尺寸 – 坐标
原点符号:显示名称样式选“用户定义”
点下面输入框右侧的“A”编辑文本符号
file

点“符号”
file

点“更多符号”
file

在“系统字体”选项卡下
字体:NX ISO Symbols
子集:Basic Latin
下面就可以看到基准符号,选中一个,然后点击右下角插入字符按钮
file

就插入符号了
file

这样创建好孔表的时候就会在原点显示这个符号
file

file

尺寸标注的小数位数

尺寸 – 文本 -单位
我这边搞机械加工,一般以丝为单位,即0.01,所以一般情况至少要 2 位小数
file

尺寸 – 公差
公差一般涉及 3 位小数
file

删除剖视图标签

图纸视图 – 截面 – 标签
把前缀填的 SECTION 删掉,这样剖视图就不会显示 SECTION 标签了
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 7 执行可能出错

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

Write-Host "==============================================="
Write-Host "🔧 正在更新 NX 启动模板文件与图框..."
Write-Host "==============================================="

# 源目录=脚本所在目录
$srcDir = $PSScriptRoot
$dstDir = Join-Path $env:UGII_BASE_DIR "GCTOOLKIT\prc\simpl_chinese\startup"

# 仅取当前目录下的 .prt 和 .pax 文件
$files = Get-ChildItem -Path $srcDir -File |
         Where-Object { $_.Extension -in '.prt','.pax' }

if (-not $files) {
    Write-Host "⚠️ 当前目录未发现任何 .prt 或 .pax 文件,脚本终止。"
    exit 1
}

# 确保目标目录存在
if (-not (Test-Path -Path $dstDir)) {
    Write-Host "📁 目标目录不存在,正在创建: $dstDir"
    New-Item -ItemType Directory -Force -Path $dstDir | Out-Null
}

# 复制+只读
foreach ($file in $files) {
    $dstPath = Join-Path $dstDir $file.Name
    Write-Host "➡️ 正在复制:$($file.Name)"
    Copy-Item -Path $file.FullName -Destination $dstPath -Force
    (Get-Item $dstPath).Attributes = 'ReadOnly'
}

Write-Host "==============================================="
Write-Host "✅ 模板文件复制完成并已设置为只读。"
Write-Host "目标路径: $dstDir"
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
打开目录