iCAx开思网
标题:
请教如何提取组件阵列的数量
[打印本页]
作者:
sipm27
时间:
2010-8-20 12:00
标题:
请教如何提取组件阵列的数量
大家好,请各位高手给予帮忙,在此先谢过了。
二次开发环境:ugnx7.0 + vs.net2008 + open/api.
提取数量,模型如下:部件A.prt, B.prt,B装配到A中。
A
|__B
选中B 右击属性,修改数量为5确定保存。
对B 进行组件阵列装配(4个阵列),结构如下:
A
|__B ----1
|__B ----2
|__B ----3
|__B ----4
其中1为阵列的模板,程序代码如下:
tag_t displayPart=UF_PART_ask_display_part(); //取到A.
tag_t rootoccs = UF_ASSEM_ask_root_part_occ(displayPart); //取A的根
//获取下层结构
tag_t *child_part_occs;
int nCount = UF_ASSEM_ask_all_part_occ_children(rootoccs, &child_part_occs);
for (int i = 0; i<nCount; i++)
{
tag_t child_occ = child_part_occs[i]; //取一个子 B ---1
tag_t occinst = UF_ASSEM_ask_inst_of_part_occ(child_occ); //子事例
char sTitle[UF_ATTR_MAX_TITLE_LEN+1] = {'\0'};
char sVal[UF_ATTR_MAX_TITLE_LEN+1] = {'\0'};
UF_ATTR_value_t vv;
vv.value.string = sVal;
strcpy(sTitle, "DB_QUANTITY");
UF_ATTR_read_value(occinst, sTitle,UF_ATTR_any, &vv);
//vv.value.string = "5" 这个是B ----1的数量,取到了。
//其他的子这里取到的vv.value.string是空字符串
//...
}
UF_free(child_part_occs);
操作说明如下:
如果对2的属性中,把数量修改后,或在属性列表中选中数量,确定或应用,都能取到数量的结果。
经过我多次调试后,发现一个问题,装配结构中的数量如果在装配后(包括零件的装配,不一定要阵列装配),没有进行
更新数量,这里取到的结果都是空值。
不过一般来说装配后默认的数量都是1,这个好解决,如今遇到这种修改了模板的数量后,再进行阵列装配,就无法取
到数量了。
作者:
sipm27
时间:
2010-8-20 16:51
没有人回答,我自己解决:
前面使用的是UGOPEN/API, vs.net2008 c++ 。
后来增加了NXOpen环境(参考其他仁兄的资料),代码如下:
//接上面的代码...
for (int i = 0; i<nCount; i++)
{
tag_t child_occ = child_part_occs[i];
NXOpen::Assemblies::Component *comp = (NXOpen::Assemblies::Component *)
NXOpen::NXObjectManager::Get(child_occ);
int n = comp->GetIntegerQuantity(); //这里就取到装配件的数量了。
}
UF_free(child_part_occs);
作者:
zale_lzj
时间:
2010-8-20 19:01
看不懂,为什么不用获取组件的数量呢
用个属性(DB_QUANTITY)干嘛?
欢迎光临 iCAx开思网 (https://www.icax.org/)
Powered by Discuz! X3.3