iCAx开思网

标题: 零件编号是怎么写入属性页的? [打印本页]

作者: walkerjiang    时间: 2012-5-4 16:51
标题: 零件编号是怎么写入属性页的?
在装配环境下,点击generate number按钮,选取根产品会对以下的part在属性页中生成number属性。请问我通过哪个接口能够获得这一属性呢??通过属性遍历的方式,并没有获得这一生成的属性。
作者: SkyWolf88    时间: 2012-5-7 15:03
具体没研究过,应该是记录在Part的实例当中,
你对实例(不是引用)的属性进行遍历查找看看。
作者: walkerjiang    时间: 2012-5-7 16:02
SkyWolf88 发表于 2012-5-7 15:03
具体没研究过,应该是记录在Part的实例当中,
你对实例(不是引用)的属性进行遍历查找看看。

这样操作过,没有获得想要的,不知道是不是遍历方式的问题。
CATIAttributesDescription *piAttrDesc = NULL;
               

                spProduct->QueryInterface(IID_CATIAttributesDescription, (void **) &piAttrDesc);


                spProduct->QueryInterface(IID_CATIInstance, (void **) &piInstance);
               
                piAttrDesc->List(&attrInfoList);

        }
        for (int i = 1; i <= attrInfoList.Size(); i++)

        {

                CATAttributeInfos attrInfo = attrInfoList;

                CATUnicodeString propertyName =attrInfo.Name(); //属性名

                CATUnicodeString valueType = attrInfo.Type()->Name(); //属性类型

                CATIValue *pValue = piInstance->GetValue(propertyName); //获得对应属性名的属性值
                CATUnicodeString NameVal;
                pValue->AsString(NameVal);
                cout<<propertyName<<"属性名"<<endl;
                cout<<valueType<<"属性类型"<<endl;
                cout<<NameVal<<endl;
作者: walkerjiang    时间: 2012-5-7 16:04
本帖最后由 walkerjiang 于 2012-5-10 07:49 编辑
SkyWolf88 发表于 2012-5-7 15:03
具体没研究过,应该是记录在Part的实例当中,
你对实例(不是引用)的属性进行遍历查找看看。


ding!
作者: SkyWolf88    时间: 2012-5-7 16:43
你用VB的API获取属性的,应该用CAA的吧?大致程序如下:(你测试下看看)
//注意:各指针在使用前,需判断是否为空,
//          还有那个pListChildProduct,在使用后,需释放
CATProduct_var spRootProduct=........;
CATListValCATBaseUnknown_var *pListChildProduct=NULL;
pListChildProduct = spRootProduct->GetAllChildren(); //获取所有的子Product (获得的是实例)
for(int i=1;i<=pListChildProduct->Size();i++) {
   CATIProduct_var spiChildProduct=pListChildProduct[i];
   CATISpecObject_var spiSpecOnPrd=spiChildProduct;
   CATIParmPublisher_var spParmPub(spiSpecOnPrd);
   CATLISTV(CATISpecObject_var) oListParms;
   spParmPub->GetAllChildren("CATICkeParm",oListParms);
   for(int j=1;j<=oListParms.Size();j++) {
     CATICkeParm_var spiCkeParm=oListParms[j];
     CATUnicodeString attName=spiCkeParm->Name();
     CATUnicodeString attValue=spiCkeParm->Show();
   }
}
作者: walkerjiang    时间: 2012-5-7 16:51
本帖最后由 walkerjiang 于 2012-5-10 08:12 编辑
SkyWolf88 发表于 2012-5-7 16:43
你用VB的API获取属性的,应该用CAA的吧?大致程序如下:(你测试下看看)
//注意:各指针在使用前,需判断 ...


哪个是VB的API啊?
谢谢你的指导,我明天早上试下!
作者: SkyWolf88    时间: 2012-5-7 16:53
CATIAttributesDescription 好像是VB的API吧?一般CATIA开头的,都是VB的API,但也有特例的。。。呵呵
CATIAttributesDescription 这个API没怎么用过。。。
作者: walkerjiang    时间: 2012-5-7 16:57
SkyWolf88 发表于 2012-5-7 16:53
CATIAttributesDescription 好像是VB的API吧?一般CATIA开头的,都是VB的API,但也有特例的。。。呵呵
CAT ...

这样啊,这个应该是这样的CATI    Att......
作者: walkerjiang    时间: 2012-5-8 08:13
SkyWolf88 发表于 2012-5-7 16:43
你用VB的API获取属性的,应该用CAA的吧?大致程序如下:(你测试下看看)
//注意:各指针在使用前,需判断 ...

今天早上试了下这段代码,依然没有成功。得到的都是结构树上的参数。还需要继续研究啊。
作者: walkerjiang    时间: 2012-5-10 08:42
本帖最后由 walkerjiang 于 2012-5-18 14:35 编辑

自己顶一下,希望高手来关注!


建立个群,有想法的朋友也可以来这里面研讨。148843173

作者: hhlgmm    时间: 2012-6-29 21:10
ding!!!!!!!!!!!!!!!!!!!!




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3