这篇文章的内容涉及比较多,我一次写不完,要分几次去更新。
相信很多人在刚开始学NX装配相关二次开发的时候,都会有点搞不清楚,什么是实例,什么是原型这些专业术语等等。
我在刚接触的时候,也是很懵逼的。今天我整理了一下,做个装配篇特辑。
------------------------------------------------------------------------
Assembly装配的常用术语
在装配环境中总保持只有一个部件是当前活动的,它叫工作部件(workpart)。用户创建的所有UF对象、表达式等都是在工作部件中创建。此外,还有一个叫当前显示部件(displaypart)的概念。
在UG的某些应用(如Modeling)时,当前显示部件和工作部件可以不同。
装配图是一类特殊的Part,它本身由多个Part所组成。装配图中的各个子图称为组件,组件本身也可以是装配图。装配图中并不包含子图,而是子图的再现。子图的所有再现都来自子图的原型,
子图的每个再现都叫做子图的实例。
- Prototype Tag:Part或Object在原本文件中的tag。
- Instance Tag:子Part被装配到父档中作为Instance的tag,是指用户绝对装配次数。
- Occurrence Tag:子Part或Object装配到主文档中作为Occurrence的tag。它只是一种映像,当同一个子Part或Object在主文档中被装配多次,它们的Occurrence Tag是不同的,分别表明了装配的先后次序以及在主文档中不同的映像。
装配树的结构
UG装配是以树型结构组织装配中的部件,一个部件文件中只能有一棵装配树,即只能存在一个装配根节点。装配中的节点由部件原型、部件事件与部件实例3种对象进行描述。
- 部件事件(partoccurrence)是装配环境下对实际存在的部件模型(即部件原型)的一种引用,部件事件也可以理解为指向部件原型的指针。如果需要一次或多次装配一个部件,并不复制该部件的原型,而是建立该部件原型所对应的事件。在装配中,不同的部件事件表征不同的装配节点,因此UG赋予它唯一的标识。
- 部件原型(partPrototype)是真实存在的部件模型,它记录了模型所需的所有数据。当一个部件文件被多次装入时,将产生不同的部件事件,但这些事件都指向相同的部件原型。可以看出,部件原型与部件事件之间形成一对多的映射关系。部件事件随原型的改变而改变,但修改部件事件不会影响它的原型。
- 部件实例(partInstance)记录子节点与其父节点之间的关联关系,从而形成各节点间的层次结构。在装配体重,部件与其子部件之间的装配关系是利用部件实例来描述的。部件实例是指一次或多次装入装配体的部件对象,它描述装配环境下实例之间的层次关系,并表征唯一的上下级部件间的装配关系。部件实例也可以理解为一种指针,由下级部件事件指向上一级部件事件。可以看出,部件实例与部件事件之间形成一对多的映射关系,即不同的装配节点可能具有相同的装配关系。
装配节点具有相同部件实例的条件有3个:
- 装配节点具有相同的部件原型。
- 父装配节点不能相同,即父节点事件不同。
- 父节点事件指向同一个部件文件,即父节点原型相同。
Assembly结构范例
例如,由于Wheel Part-occur-tag-5与Wheel Part-occur-tag-7具有相同的部件原型和不同的父节点事件Axle Part-occur-tag-3与Axle Part-occur-tag-4,且父节点事件都指向相同
的部件原型,因此它们具有相同的部件实例Instance-tag-1;尽管Wheel Part-occur-tag-5与Wheel Part-occur-tag-6指向同一个部件原型,但其父节点相同,不满足上述条件(2),因此它们具有不同的部件实例Instance-tag-1与Instance-tag-2。
通俗讲解:
以上这一堆专业术语都是出自西门子文档里。
你能看懂,能理解最好,不理解,我下面在通俗的讲一下,我个人的理解。如果理解有误,请留言评论指正错误。
一个工作部件里面添加了装配,由装配树根目录可以找到实例,实例可以找到部件事件(partocc),事件可以找到原型对象(objectocc)
当前工作部件,当前显示部件,装配树,装配引用集这些我就不讲了,做二次开发的,应该多少都知道。
这里只重点介绍 部件事件,部件原型,部件实例。三种的区别。
- 部件事件(也叫partocc)
- 部件原型(也叫partPrototype)
- 部件实例(也叫partInstance)
请看下图
如图所示:我在当前的part里装配进来三个装配组件,这三个装配实际是由两个part装配进来的。而这两个单独part里的块和球是就是部件原型。
然后现在你把块装配进来了,就产生了一种映射关系,被装配进来的并不是部件原型,而是部件事件,一个部件原型块,被装配进来两次,就产生了两个部件事件。
上面装配进来显示的1,2,3块和球就是部件事件(partocc)。
那部件实例,又是什么呢?装配进来后,在装配树上体现父子级的,就是装配实例的体现。我们对装配子部件的操作,也都是要对部件实例去操作的,比如组件移动,组件抑制等等。
简单讲,每一个部件事件(partocc)都对应一个部件实例,想要在当前工作部件里对装配子部件做操作,就要先获取部件实例,在对其操作。如果操作部件事件或者部件原型是不管用的。
每个部件实例的名字是不同的,正常来说就是part文件的名字。但可以通过二次开发API把名字改掉,可以改成全部一样,或者全部不一样。手动没有办法去修改实例的名字,只能另存组件part,或者
重新装一个不同名字的组件进来。
装配模块常用API介绍:
1.UFUN C
2.NXOPEN C++
3.NXOPEN C#
Caesar卢尚宇
2020年9月19日