iCAx开思工具箱

标题: 【讨论】Catia CAA(C++)难道真的不支持这样二次开发吗??? [打印本页]

作者: DragonSeraph    时间: 2004-9-14 01:50
标题: 【讨论】Catia CAA(C++)难道真的不支持这样二次开发吗???
花了很长时间,还是没有搞定,快对CAA绝望了。
  
其实说起来似乎很简单:我用C++开发的能独立运行的应用程序,要求能够连接
Catia(如果没有正在运行的Catia,就启动Catia),然后我的程序能通过CAA
API获得Catia的各种object,并且能让catia执行一些操作,比如打开零件图,
给零件图中的一些尺寸赋值,并读取另外一些尺寸值什么的。
  
对其他的CAD软件,包括solidworks,UG,IDEAS,ADAMS等都用C++做过这样的
二次开发,按理说catia也应该提供了这样的做法,可到现在一点进展没有。
  
大家提点建议,或者来讨论讨论,看有没有可能用C++实现(我知道用automation是可以的)。
作者: acoka    时间: 2004-9-14 11:54
你不需要图形界面?
那么直接开文件,改数据就好,不好用,但可以实现
只出cmd的文本屏幕
  
图形UI也要用你的想法了话,是舍近求远
作者: DragonSeraph    时间: 2004-9-14 22:17
我说acoka,你能不能提点建设性的意见,要照你的说法,其他的CAD软件
提供这样的开发思路全都是舍近求远了。二次开发的思路和范畴远不止你
现在所作的。
作者: acoka    时间: 2004-9-15 09:58
软件结构上不同的,开发的方法也不同,
不是说谁好谁坏,
  
如同用VC开发WINDOWS的程序,大家都会尽量利用mfc,轻松又方便
  
能用AUTOMATION做的东西,基本上用VC都可以
  
我是搞不清你的独立运行是什么意思
既然
要求能够连接
Catia(如果没有正在运行的Catia,就启动Catia)
那么就不是独立的
  
你或许要你的程序始终保持100%的前台优先,不让USER执行CATIA的原有命令,那你把CATIA的WORKBENCH都屏蔽掉,只出你的COMMAND不行?
作者: DragonSeraph    时间: 2004-9-15 12:09
那你应该知道MFC也并不能满足所有的开发需要,有时我们也不得不跳过MFC去直接使用WINDOWS API.
  
我这里说的"独立运行"是指我的程序象其他WINDOWS应用程序一样,由操作系统启动运行,但是我需要在我的程序中设计一个接口,用来启动连接CATIA(我的程序还要完成其他功能,还要同其他CAD软件进行会话)
  
如果是用Automation,在VB中,只需要简单的:
Dim ObjCATIA As Object                                                      
Set ObjCATIA = CreateObject("CATIA.Application")                           
就可以启动CATIA,然后通过ObjCATIA就可以操纵CATIA实现一系列的操作.
实际上这就是我现在想用C++做的事.
作者: CATIA_Boy    时间: 2004-9-15 12:15
DragonSeraph wrote:
我说acoka,你能不能提点建设性的意见,要照你的说法,其他的CAD软件  
  提供这样的开发思路全都是舍近求远了。二次开发的思路和范畴远不止你  
  现在所作的。

  
说话要注意,不知道Acoka是CAA的老大吗?你还教育起人来了,不会就虚心点!
作者: acoka    时间: 2004-9-15 14:18
CATIA_Boy wrote:
   
  
  说话要注意,不知道Acoka是CAA的老大吗?你还教育起人来了,不会就虚心点!

  
没有什么大不大的
caa内容很多,没有人能看全
我也不过知道些皮毛罢了
  
DragonSeraph有自己的实际情况,不过要和其它cadcam联动了话,的确很难
作者: acoka    时间: 2004-9-15 19:52
既然你用script已经解决了
用c++的AutomationInterfaces::CATScriptUtilities来执行它们不行?
虽然启动速度会比较慢
  
ApplicationFrame里的interface也可以提供操作frame window的方法,你确认它们都不符合你的要求?
  
所有的catia命令都有ID,可以直接调用,但不一定都是带参数的
作者: DragonSeraph    时间: 2004-9-15 22:24
CATIA_Boy wrote:
   
   
  说话要注意,不知道Acoka是CAA的老大吗?你还教育起人来了,不会就虚心点!

  
不好意思,不知道acoka是这里的老大,情急之下的话希望不要介意。
作者: DragonSeraph    时间: 2004-9-15 22:39
acoka wrote:
既然你用script已经解决了  
  用c++的AutomationInterfaces::CATScriptUtilities来执行它们不行?  
  虽然启动速度会比较慢  
   
  ApplicationFrame里的interface也可以提供操作frame window的方法,你确认它们都不符合你的要求?  
   
  所有的catia命令都有ID,可以直接调用,但不一定都是带参数的

  
AutomationInterfaces::CATScriptUtilities可以启动CATIA,但它不能返回任何的CATIA OBJECT的句柄,所以我也没法操纵启动后的CATIA进行操作。
  
比如说同样一个语句:CATApplicationFrame * pFrame = CATApplicationFrame::GetFrame(); 如果是由CATIA来调用,就会返回CATIA的ApplicationFrame;但是如果在我的程序中调用,只会返回NULL,因为我的程序是在CATIA进程之外的另外一个独立的进程。
作者: DragonSeraph    时间: 2004-9-16 01:56
我曾经以为CAA提供的CATInteractiveApplication类是用来给外部进程连接CATIA的,但似乎也不是。我在我的程序中用CATInteractiveApplication也没能建立起和CATIA的对话。
作者: acoka    时间: 2004-9-16 17:08
get_Application( CATIAApplication*&  oApplication)=0  
也不行?
  
这部分我没做过,如果有,多半在System 的Framework里头
作者: saeba    时间: 2005-9-21 17:11
挖坟翻出了这个帖子。
给还有同样困惑的朋友们一点希望:
CAA的BackBone就是用来干这事的,提供和CATIA的后台连接
你可以在CAADialog.edu里找到很好的例子:
CAADlgBBSender.m
CAADlgBBReceiver.m
稍微改改就能用。
作者: dreambzy    时间: 2005-9-23 09:44
DragonSeraph :
    我用啦你的     Dim ObjCATIA As Object                                                      
                             Set ObjCATIA = CreateObject("CATIA.Application")  
    但是没有看见CATIA的程序界面阿,应该怎么让他出来啊?还有,这种方法不需要添加引用吗?
我以前做AutoCAD的时候需要添加引用才能启动并操作他。
作者: lzg681113    时间: 2005-9-25 16:22
可能用VBS好一点吧
作者: Mayalog    时间: 2005-9-27 10:21
是要加入应用的, 另外有一点,不知道你的CATIA是不是正版的,据我的经验,加入使用group.dll破解文档的版本是不能用这个办法启动Catia的
作者: xinghesnak    时间: 2005-10-26 09:23
深奥,不懂,顶一下!
作者: sinocc    时间: 2005-11-3 14:07
原帖由  于 2005-9-23 01:44 发表
DragonSeraph :
    我用啦你的     Dim ObjCATIA As Object                                                      
                             Set ObjCATIA = CreateObject("CATIA.Application&qu ...

ObjCATIA.Visible = TRUE
作者: xacf    时间: 2005-11-8 15:24
原帖由  于 2005-9-27 10:21 发表
是要加入应用的, 另外有一点,不知道你的CATIA是不是正版的,据我的经验,加入使用group.dll破解文档的版本是不能用这个办法启动Catia的

我有Z版也不用,用D版,没发现。只是D版的有些“实用程序”不好用。
要 CNEXT  -REGSERVER
就好了
作者: applejan    时间: 2007-9-12 23:29
原帖由  于 2004-9-16 01:56 发表
我曾经以为CAA提供的CATInteractiveApplication类是用来给外部进程连接CATIA的,但似乎也不是。我在我的程序中用CATInteractiveApplication也没能建立起和CATIA的对话。



請問各位前輩
用C++進行開發要怎麼連接設定?
我始終弄不起來
我用的是catia v5r16, Rade v5r16,visual studio 2002
在VC裡面會說找到license...但是沒有授權..
要怎麼解決呢?
作者: ririyeyjl    时间: 2007-9-13 12:19
老大这个贴子你也能挖出来  不过不挖出了真埋没了这好贴
你的是D版的么 是的话 找个JS0GROUP.dll
不是的话找DS
作者: applejan    时间: 2007-9-18 01:29
我是D版的  有JS0GROUP.dll呀
難道是檔案不對嗎

怎麼解決好
作者: ririyeyjl    时间: 2007-9-18 11:37
难道你这JS0GROUP.dll没破解好  
你去下个JS0GROUP.dll替换下你的看
作者: qibulin    时间: 2010-11-2 16:15
我只会C#,不知CAA是否支持
作者: taojiuchao    时间: 2010-11-4 19:40
找到老大了acoka,认识一下呵呵。老大好跟你混了。以后请多指教谢谢。
作者: cymdj    时间: 2010-11-25 21:12
我也想知道这个问题的答案,不过看来无果了……
作者: beacher0234    时间: 2011-1-17 17:23
我只是做到了提取二维工程图的尺寸信息,三维的也能,但是好像不全
作者: TeamWorks    时间: 2011-1-21 16:10
能否提供一下catia caa,email:werming@126.com,QQ:744849107




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