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

iCAx开思网

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

CAA:怎样给CATPart文件中的Part特征添加属性页

[复制链接]
11
发表于 2006-12-26 13:02:54 | 只看该作者
我是看的帮助里的有个add property page例子, 很多都是直接copy的

原帖由 horizan 于 2006-12-26 12:32 发表
1:你属性页在DICO文件中是否有添加项;

我看了下,在dico里边可能还要加上(例如
MechanicalPart                     CATIRootProperties        libContextMenu
CAACafTexturePropertyPageEdt   CATIEditProperties                    libCAACafEditTextureProp
CATEditorManager                          CAAICafTexturePropertyPageEdtFactory  libCAACafEditTextureProp

在fact中加入:
CAACafTexturePropertyPageEdt      CAAICafTexturePropertyPageEdtFactory

是否还有补充? 这里应该都写些什么?

2:若有,就表示你的属性页Editor的代码有问题,贴出来看一下,可能的原因是属性页初始化有错误。

测试了下,点properties后,测试Editor有运行, 所以属性页Editor的代码有问题, Editor该如何来写?构造函数如何来写?

因为不知道具体的添加属性页的方法流程,所以也没有仔细研究editor

能否告之个流程 和editor大概如何来写?  如果能给源代码就更好了

多谢

[ 本帖最后由 hick 于 2006-12-26 13:20 编辑 ]
12
发表于 2006-12-26 13:37:54 | 只看该作者
你把你implement接口CATIEditProperies的ExtractFromSelection函数贴出来看一下,我以前错在这里。
如果实在找不到错误,只有在console一步步cout你的信息了。
13
发表于 2006-12-26 13:49:05 | 只看该作者
原帖由 horizan 于 2006-12-26 13:37 发表
你把你implement接口CATIEditProperies的ExtractFromSelection函数贴出来看一下,我以前错在这里。
如果实在找不到错误,只有在console一步步cout你的信息了。


把它的代码修改了一下, 可是结果显示不对(结果见下图), 把原来有的part属性页都覆盖了,只有我新加的属性页

void CAACafTexturePropertyPageEdt::ExtractFromSelection ( CATLISTV(CATBaseUnknown_var)& oExtract,
                                                 const CATLISTV(CATBaseUnknown_var) * iSelection)
{
   cout << " CAACafTexturePropertyPageEdt::ExtractFromSelection" << endl ;

   oExtract.RemoveAll();

   if ( (NULL !=iSelection) && ( 0 != iSelection->Size()) )
   {
      HRESULT resu = E_FAIL;

      // Analyze all Objects in the cso
      int nb = iSelection->Size() ;
      for (int i=1 ; i<= nb; i++ )
      {
         if ( NULL_var != (*iSelection)  )
         {
            // The CSO contains CATPathElement
            CATBaseUnknown_var ukn  = (*iSelection);
            if ( !! ukn )
            {
               CATBaseUnknown * pukn = (CATBaseUnknown *) ukn;

               CATPathElement path = (CATPathElement &) *pukn;
               if ( 0 !=  path.GetSize() )
               {
                  // I retrieve the leaf of the path
                  CATBaseUnknown * pleaf = path[path.GetSize()-1];

                  if ( NULL != pleaf )
                  {
          oExtract.Append((*iSelection)) ;

                }
               }
            }
         }
     }
   }

}
结果是:

[ 本帖最后由 hick 于 2006-12-26 14:00 编辑 ]

本帖子中包含更多资源

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

x
14
发表于 2006-12-26 14:35:32 | 只看该作者
哈,其实我也只作到这一步.


...
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 改一下试一试.
15
发表于 2006-12-26 14:45:16 | 只看该作者
呵呵,我也在想可能要改CATListOfCATString TSTProp::GetListOfEditors ()
里的 CATListOfCATString ListOfEditor
这里的ListOfEditor  应该有个getAllListofEidtor什么的方法,可以获得现有属性页的list editors
然后在list 中append, 而不是一开始就是个空的listofeditors

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

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

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

多谢,多谢.  研究研究,是否可以获得现有part属性的一个listEditors就更好了.
18
发表于 2006-12-27 11:17:09 | 只看该作者
原帖由 hick 于 2006-12-26 16:11 发表

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

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

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

获取系统原有的listEditors,貌似不太可行啊!
19
发表于 2007-4-14 21:09:17 | 只看该作者
acoka
您好,我做标注粗糙度或者几何公差的时候。只能作出annotationSet,下面的view和roughness作不出来。本来想给你发邮件,不知道你的邮箱或其他的联系方法。我的qq 55849182
huangsteve@163.com
20
发表于 2007-4-18 11:56:49 | 只看该作者
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;
                }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2024-12-25 16:20 , Processed in 0.029017 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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