NX二次开发-检测和获取已打开部件
适用版本:NX6以上
本技巧主要讨论会话中存在已打开部件的情况和如何进行检测并获取已打开的部件。
”
在本地环境下,若我们尝试通过PartCollection.Open()等方法去打开一个已经存在于会话中的prt文件时会提示文件已经存在。
事实上,根据NX内部的规则,会话中不可能存在相同部件名的部件。而在本地环境下,会话中的部件名由文件名决定,因此,NX中不能打开两个文件名相同的prt文件,即使他们在不同的路径下。这样的情况也可能发生在打开两个独立的装配的时候,两个装配都使用了同一个名字的组件,但是事实上它们是完全不一样的文件。这时其中一个就会直接引用另一个装配中已经加载了的同名部件,这样会造成装配的显示不正确。
因此我们需要遍历当前会话中所有的已打开部件,与需要打开的文件的名称进行对比,代码如下:
此处输入值可以为需要查找文件的路径也可以是文件名,若找到已打开或同名部件则返回此部件,否则返回空。
TC环境下不存在“同名”的部件,因为TC环境中的NX部件数据集通过对应的item和数据集名称作为区分。但是TC中却存在版本的区别。因此当会话中已经存在一个版本,而我们尝试打开另一个版本时NX仍然会返回上文所说的文件已存在错误。
这时我们可以遍历会话中已打开部件并解析ItemID、数据集类型和数据集名称三个数据进行比较判断。代码如下:
通过遍历所有打开的部件并根据部件名称规则进行手工的比较,这种方式需要我们写更多的判断代码,而且还必须根据不同的环境应用不同的规则,可靠程度也不高。但我们也可以使用UF函数:UF_PART_ask_part_tag()来获取会话中已经打开的部件。在本地环境中,这个函数可以输入prt文件的文件名或完整的文件路径,在TC环境中输入值可以是部件的CLI名称(@DB/ItemID/RevisionID的形式),也可以是TC内部的完整标识。并且经过测试可以发现即使我们输入的是不同路径下的同名部件,或是不同版本号的同一Item,它都会返回会话中已有的会被判断为相同的部件。使用代码如下:
查找会话中已存在部件是一个很重要的例行步骤,我们可以通过NX判断相同的规则去手动查找,也可以运用UF方法去获取已经存在的部件。
免责声明:
1、本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
2、本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
3、本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
4、侵权违法和不良信息举报 举报邮箱:cnddit@qq.com
还没有评论,来说两句吧...