|
关于日期自动写入属性的做法参考https://www.ugsnx.com/thread-353801-1-1.html
分割文件名并写入属性的方式,论坛里以前有使用表达式的方式。同日期自动写入属性一样,再次尝试使用自定义用户命令调用C#操作记录文件的方式来做。
文件名的命名我个人以前是"图号"+空格+"名称"的方式(例如:"Jix25060701 测试零件");或者直接文件名就是零件名,图号手动在制图里写。
分割文件名就是以文件名里的第一个空格将文件名分成两个,第一个空格前的字符作为图号,第一个空格后的字符作为零件名,如果文件名里没有空格,则文件名就是零件名。了解这个逻辑后就可以写代码了。
代码1:
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 partName = workPart.Name;
//将文件名以第一个空格分割,此处单引号里有一个空格,如果是用其它字符分割文件名,将里面空格替换成对应字符
int firstSpaceIndex = partName.IndexOf(' ');
//定义图号变量并赋值空
string partNamePrefix = "";
//定义零件名变量并赋值空
string partNameSuffix = "";
//判断文件名是否被分割
if (firstSpaceIndex >= 0)
{
// 找到空格,分割名称
partNameSuffix = partName.Substring(0, firstSpaceIndex);
partNamePrefix = partName.Substring(firstSpaceIndex + 1);
}
else
{
// 没有空格,整个名称作为零件名
partNamePrefix = partName;
}
try
{
workPart.SetUserAttribute(
"RELEASE_DATE", //将日期写入属性RELEASE_DATE,可更改为实际要写入的属性名
-1,
currentDate,
Update.Option.Now
);
workPart.SetUserAttribute(
"DB_PART_NAME", //写入零件名属性DB_PART_NAME,可更改为实际要写入的属性名
-1,
partNamePrefix,
Update.Option.Now
);
// 设置第二个属性:部件名后缀
workPart.SetUserAttribute(
"DB_PART_NO", //写入图号属性DB_PART_NO,可更改为实际要写入的属性名
-1,
partNameSuffix,
Update.Option.Now
);
theSession.UpdateManager.DoUpdate(0);
}
catch
{
}
}
}
这段代码效果与用表达式的方式相似
事实上是可以继续优化的,比如先判断部件属性是否有值,有就不用写入属性,没有才将分割的文件名写入,也可以设置弹窗来确认是否将分割文件名写入属性,甚至指派材料等等~~~
|
评分
-
查看全部评分
|