Bootstrap
mdo 云课精选 发表于:06-08 10:31   阅读(61)   回复(0)

来源: https://www.ugsnx.com/thread-353801-1-1.html

大神(夏季里那丝清凉)分享:

论坛里有利用表达式获取系统时间并写入制图图框的做法,以前我也一直是用表达式的方式,近来总看着这些多出来的表达式不爽,尝试用自定义命令调用操作记录文件的方式来写入系统时间。

1,用户默认设置里将操作记录语言更改为C#(可选,更改后方便自己录制一些简单命令并用自定义的用户命令按钮来调用)

2,自定义一个用户命令,右键编辑操作,更改类型为操作记录文件,选择文件类型用C#源文件。(可以自己随便录制一段操作记录并保存操作记录文件,之后选择该操作记录文件即可;抑或新建文本,更改后缀名为cs。)

3,将操作记录文件里的内容替换为这段代码,其中string attributeTitle = "RELEASE_DATE";的RELEASE_DATE为要写入日期的部件属性,可以更改为实际需要的日期属性。

4,点击一下自定义的用户命令,系统当前日期将写入RELEASE_DATE属性里,没有该属性会自动创建这个属性;string currentDate = DateTime.Now.ToString("yyyy-MM-dd");中的yyyy-MM-dd为日期格式,自行更改需要的格式。

操作记录文件的代码如下:

using System;
using NXOpen;
public class SetDateAttribute
{
    public static void Main(string[] args)
    {
        // 获取当前会话和工作部件
        Session theSession = Session.GetSession();
        Part workPart = theSession.Parts.Work;
        // 获取当前日期
        string currentDate = DateTime.Now.ToString("yyyy-MM-dd");
        string attributeTitle = "RELEASE_DATE";
        try
        {
            // 正确调用 SetUserAttribute 方法
            workPart.SetUserAttribute(
                attributeTitle,   // 属性名称
                -1,              // 索引 (-1 表示整个部件)
                currentDate,     // 属性值
                Update.Option.Now // 正确的更新选项
            );
            // 提交更新
            theSession.UpdateManager.DoUpdate(0);
        }
        catch
        {
            // 静默处理错误
        }
    }
}