找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 26746|回复: 16
打印 上一主题 下一主题

请教:如何利用CAA在CATIA中为product添加properties,并能够显示在属性页?

[复制链接]
跳转到指定楼层
1
发表于 2006-3-9 20:42:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
CATIPrdProperties,CATIInstance ,CATIAttributesDescription  这几个接口都看了一下,没有找到能够添加属性的方法,不知道各位有没有高招?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 赞一下!赞一下!
2
发表于 2006-3-11 00:08:16 | 只看该作者
这些Properties实际上存在CATICkeParameterSet下面。现在的问题是如何找出这个Set:
CATDocument --> CATInit --> CATInit::GetRootContainer("CATIContainer") --> CATIContainer:istMembersHere("CATICkeParameterSet", list)
在所有这些Set中找出其Name中含有Properties的那个,接下来就简单了, 用Parameters()可看到已有的Properties, 用CATIParmPublisher::Append可添加Properties。
3
发表于 2006-3-14 20:07:02 | 只看该作者
thank you xyzhu,I will try later.
4
发表于 2006-3-22 19:50:13 | 只看该作者
xyzhu你好。
添加新的property后,如何使它显示到属性对话框中呢?
我添加后,仅仅在product的parameterset里面新增了parameter.
5
发表于 2006-3-22 22:22:11 | 只看该作者
A better way:
               CATIProduct* piInstanceProd = ....
               CATICkeParm_var spParm = ....
                CATIPrdProperties_var spProp(pInstanceProd);
                if(!!spProp)
                {
                        CATIParmPublisher* pPublisher = NULL;
                        spProp->GetUserProperties(pPublisher, TRUE);
                        pPublisher->Append(CATISpecObject_var(spParm));
                }

GetUserProperties is a "nodoc".
6
发表于 2006-3-29 21:03:08 | 只看该作者
xyzhu你好。你的办法我试了一下,没有成功。添加的parameter始终不能出现在property属性框里。
我看了一下user interface的内容,其中有个示例是为一个全新的feature添加属性页。整个例子涉及东西太多,我还没有理清楚。不知道你做过这方面的东西没有?
7
发表于 2006-3-30 13:04:54 | 只看该作者
必须把你的parmeter给挂到一个type为Bom...的parameterSet下才可以看到
8
发表于 2006-3-30 15:02:34 | 只看该作者
void AddProperties(CATIProduct* iInstanceProd, CATDocument * ipDoc)
{
        CATInit_var spInitOnDoc = ipDoc;
        if (NULL_var == spInitOnDoc)
        {
                cout << "Could not get init on doc.\n";
                return ;
        }
        CATIContainer * pCont =
                (CATIContainer*) spInitOnDoc->GetRootContainer("CATIContainer");
        CATICkeParmFactory_var spFact(pCont);
        if(NULL_var == spFact)
        {
                cout << "Could not get parm factory.\n";
                return;
        }

        CATUnicodeString key = "Key";
        CATICkeParm_var spParm = spFact->CreateString(key, "Hallo");
       
       
        CATIPrdProperties_var spProp(iInstanceProd);
        if(!!spProp)
        {
                CATIParmPublisher* pPublisher = NULL;
                spProp->GetUserProperties(pPublisher, TRUE);
                pPublisher->Append(CATISpecObject_var(spParm));
        }
}
9
发表于 2006-3-30 16:36:43 | 只看该作者
其实是一码事,
GetUserProperties是nodoc的非公开method,所以用它而出现的问题无法向DS转嫁责任,实际上估计它内部也就是找type为BOMMANAGER的set
BOMMANAGER这个名字可以从BOM的interface里得到,用它检索出来的CATIParmPublisher如果出问题,可以说是DS的bug

改天有时间写个报告要求DS把这个nodoc去掉正式公开好了
10
发表于 2006-3-30 21:25:41 | 只看该作者
谢谢xyzhu兄,这次成功添加了属性,并能够正确显示。我今天终于弄明白了新属性页的添加方式,还想着明天来建立属性页与parameter之间的联系。晚上看到你的回复,问题一下就简化了,再次深表感谢!!

另外再问一下,正如acoka兄所说,这些都是非公开的method,对于此类方法你们是如何查到并获得其用法的呢?
去查CATIPrdProperties的头文件吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-23 03:16 , Processed in 0.031841 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

快速回复 返回顶部 返回列表