iCAx开思工具箱

标题: CAA:怎样给CATPart文件中的Part特征添加属性页 [打印本页]

作者: cupcake    时间: 2006-12-20 10:14
标题: CAA:怎样给CATPart文件中的Part特征添加属性页
问题是这样的:在part design中,右键点击Part1,选择properties,出现下图,请问能不能用程序做到给这个文件多加一个属性页,就是说能不能给part文件多加一个像图中的Mechanical,Mass,Graphic,Product这样的属性页。看到一个例子可以加,但是是给自己定义的文件格式上面加的。如果可以做的话,大概怎么做呢,能不能给个思路?
作者: hick    时间: 2006-12-20 12:53
这个问题,我也想了很久, 一直没有实现. 可能需要做个part的extension
具体的实现思路,还没有

盼,高人指点
作者: cupcake    时间: 2006-12-21 15:26
高手帮忙看看吧
:)
作者: acoka    时间: 2006-12-22 23:15
>看到一个例子可以加,但是是给自己定义的文件格式上面加的。
请提供这个例子的detail
作者: cupcake    时间: 2006-12-23 00:37
谢谢acoka兄了,那个给自定义文件加属性页的程序在encyclopedia中的这篇文章中有讲:file:///F:/CAADoc/Doc/online/CAACafUseCases/CAACafSampleEditProperties.htm,代码在CAAGeo\CAACATIAApplicationFrm.edu\CAACafEditTextureProp.m中(由于论坛对附件大小的限制,我只发了CAACATIAApplicationFrm.edu中的几个模块,这个例子需要CAASystem.edu等其他例子一起才能显示结果)。


作者: acoka    时间: 2006-12-24 01:16
简单看了一下,usecase写得很明白嘛
我们做过给tools->option加页(你说的地址的楼下),但没有覆盖过catia原有的属性选项

不单限制于Product,Part,任何object都可以,不一定非要extension,override掉catia的属性imp而已

把usecae的必要的模块给切下来,把object的latetype改成MechanicalPart,依葫芦画瓢,应该不难实现
作者: hick    时间: 2006-12-25 17:46
CATIEditProperties ,中说明必须自定义interface , factory ,  有必要吗?

只做了下面的扩展,在CATIA中显示part没有属性,错误!
...
CATImplementClass(TSTProp,
                  DataExtension,
                  CATBaseUnknown,
                  MechanicalPart );
...
...
#include "TIE_CATIRootProperties.h"
TIE_CATIRootProperties( TSTProp);

....

CATListOfCATString TSTProp::GetListOfEditors ()
{

    CATListOfCATString ListOfEditor ;

    ListOfEditor.Append(CATString("TSTPropertyPageEdt"));  //自己做的属性页
    return (ListOfEditor);
}
作者: horizan    时间: 2006-12-26 09:55
多谢acoka,原来一直以为这种方法可行,但苦于不知道应该把latetype设置为什么。
hick应该dico文件中在添加一项。

在请教acoka:装配体中没一个子单元的latetype应该设置为什么?
作者: hick    时间: 2006-12-26 12:03
原帖由  于 2006-12-26 09:55 发表
多谢acoka,原来一直以为这种方法可行,但苦于不知道应该把latetype设置为什么。
hick应该dico文件中在添加一项。



谢谢!

dico文件中添加一行?  具体的应是什么呢?

我现在的dico中(ContextMenu为moudle名):  
MechanicalPart        CATIRootProperties        libContextMenu

现在在CATIA中右键点part 的properties显示如下错误:
作者: horizan    时间: 2006-12-26 12:32
1:你属性页在DICO文件中是否有添加项;
2:若有,就表示你的属性页Editor的代码有问题,贴出来看一下,可能的原因是属性页初始化有错误。
作者: hick    时间: 2006-12-26 13:02
我是看的帮助里的有个add property page例子, 很多都是直接copy的

[quote]原帖由
作者: horizan    时间: 2006-12-26 13:37
你把你implement接口CATIEditProperies的ExtractFromSelection函数贴出来看一下,我以前错在这里。
如果实在找不到错误,只有在console一步步cout你的信息了。
作者: hick    时间: 2006-12-26 13:49
[quote]原帖由
作者: horizan    时间: 2006-12-26 14:35
哈,其实我也只作到这一步.


...
CATImplementClass(TSTProp,
                  DataExtension,
                  CATBaseUnknown,
                  MechanicalPart );
...
...
#include "TIE_CATIRootProperties.h"
TIE_CATIRootProperties( TSTProp);

....

CATListOfCATString TSTProp::GetListOfEditors ()
{

    CATListOfCATString ListOfEditor ;

    ListOfEditor.Append(CATString("TSTPropertyPageEdt"));  //自己做的属性页
    return (ListOfEditor);
}

你把implement的类型或者GetListOfEditors 改一下试一试.
作者: hick    时间: 2006-12-26 14:45
呵呵,我也在想可能要改CATListOfCATString TSTProp::GetListOfEditors ()
里的 CATListOfCATString ListOfEditor
这里的ListOfEditor  应该有个getAllListofEidtor什么的方法,可以获得现有属性页的list editors
然后在list 中append, 而不是一开始就是个空的listofeditors

可是怎么获得一个part的ListOfEditors呢????
作者: horizan    时间: 2006-12-26 15:38
恐怕不太好弄。
1、或者你在ContextMenu添加一项专门处理你的新加属性
2、或者不用管它,新加的属性并不影响原来的,只是需要点击你属性页右面的more按钮就可以调入系统原有的属性页。新的属性页和原有的不能共存,默认的是你新加的。
作者: hick    时间: 2006-12-26 16:11
原帖由  于 2006-12-26 15:38 发表
恐怕不太好弄。
1、或者你在ContextMenu添加一项专门处理你的新加属性

这种方法可以,但有个存储的问题.
2、或者不用管它,新加的属性并不影响原来的,只是需要点击你属性页右面的more按钮就可以调入系统原有的属性页。新的属性页和原有的不能共 ...

哈哈,还不知道,more点之后原来的属性页都有了,
基本可以解决问题了.

多谢,多谢.  研究研究,是否可以获得现有part属性的一个listEditors就更好了.

作者: horizan    时间: 2006-12-27 11:17
原帖由  于 2006-12-26 16:11 发表

这种方法可以,但有个存储的问题.

哈哈,还不知道,more点之后原来的属性页都有了,
基本可以解决问题了.

多谢,多谢.  研究研究,是否可以获得现有part属性的一个listEditors就更好了.

获取系统原有的listEditors,貌似不太可行啊!
作者: huangsteve    时间: 2007-4-14 21:09
acoka
您好,我做标注粗糙度或者几何公差的时候。只能作出annotationSet,下面的view和roughness作不出来。本来想给你发邮件,不知道你的邮箱或其他的联系方法。我的qq 55849182
huangsteve@163.com
作者: acoka    时间: 2007-4-18 11:56
To: huangsteve

你好,

  我本月中开始暂时离开CAA的开发工作。这周末回哈尔滨等地休个长假
所以手头不再有开发环境了

加view?

         CATITPSViewFactory* pTPSViewFact = NULL;
        pTPSSet(annotationSet's pointer)->QueryInterface(IID_CATITPSViewFactory, (void **)&pTPSViewFact);
        if ( !pTPSViewFact ) {
                        pTPSSet->Release();
                        pTPSSet = NULL;
                        break;
                }

                // create support math plan for view
                CATMathPoint orin;
                CATMathPlane MathPlane( orin, GetViewNormalVecByIndex( iIndex));

                // create view
        pTPSViewFact->CreateView(&pRet, &MathPlane, DftFrontView);
        pTPSViewFact->Release();
        pTPSViewFact = NULL;
        if ( !pRet) {
                        break;
                }
作者: huangsteve    时间: 2007-8-29 15:05
非常感谢acoka的指导。我很崇拜你对caa的了解。
我为了学习,转贴了不少帖子收藏起来。




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3