iCAx开思工具箱

标题: CAA中如何在一个窗口中打开一个文档? [打印本页]

作者: ashio    时间: 2007-5-7 15:54
标题: CAA中如何在一个窗口中打开一个文档?
在CAA百科全书中,Document模块File里有关Loading a Document的部分提供的是一个以batch program的方式打开文档的方法,不是可视化的。现在我想通过按钮响应,在一个窗口中打开一个文件(比如一个part文件),CAA help文档中看到用CATIIniInteractiveSession这个接口的open()方法
public virtual HRESULT Open(const CATUnicodeString&   iCompleteName,
                                               const CATBoolean              iFlagRead,
                                  CATIEditor**              oIEditorDocument)= 0
Opens a document and opens a window to visualize it.
请问这个方法可以吗?第三个参数CATIEditor**如何得到?
以下语句可以吗:
CATIEditor * pIEditor = NULL ;
HRESULT rc = QueryInterface (IID_CATIEditor, (void**)&pIEditor);
或者还是有其它的方法
还请各位指教!!
作者: skyzhangwalkman    时间: 2007-5-7 16:49
CATIEditor* oIEditorDocument = NULL;
        CATString FilePath ="D:\\New.CATPart";//需要打开的文件目录
        CATSession * pSession = CATSession::GetPtrSession();
        CATIIniInteractiveSession * pIOnInteractiveSession=NULL;
        HRESULT hr = pSession -> QueryInterface ( IID_CATIIniInteractiveSession, (void **) &pIOnInteractiveSession ) ;
        HRESULT a= pIOnInteractiveSession -> Open(FilePath.CastToCharPtr(),FALSE, &oIEditorDocument);

就可以了 。。
作者: ashio    时间: 2007-5-8 11:47
非常感谢 skyzhangwalkman !!
以后还请多多指教:)
作者: ashio    时间: 2007-5-8 21:19
又遇到问题了
如果用CATIIniInteractiveSession这个接口要在Imakefile.mk中添加module CATInteractiveInterfaces
同样的用CATSession类,要添加CATObjectModelerBase
但是添加之后有这样的报错:
1.  Module [CATObjectModelerBase.m] in LINK_WITH is ignored since it is in framework [D:\DassaultSystemes\B14\.\ObjectModelerBase] which is not a direct prerequisite.
2.  Module [CATInteractiveInterfaces.m] in LINK_WITH is ignored since it is in framework [D:\DassaultSystemes\B14\.\InteractiveInterfaces] which is not a direct prerequisite.
在IdentityCard.h里添加了AddPrereqComponent("CATObjectModelerBase",Protected);
                                           AddPrereqComponent("CATInteractiveInterfaces",Protected);
也没有用,有报错:
mkmk-ERROR: CATInteractiveInterfaces -> This Framework was not found in specified Workspace(s).
mkmk-ERROR: CATObjectModelerBase -> This Framework was not found in specified Workspace(s).
和上面1,2两条报错

问题解决了,应该添加    AddPrereqComponent("ObjectModelerBase",Protected);
                                            AddPrereqComponent("InteractiveInterfaces",Protected);


作者: ashio    时间: 2007-5-8 22:15
编译通过了,但是调试运行时还是不行,有如图的报错对话框弹出,不知道是什么问题,还请指教!!
作者: ashio    时间: 2007-5-10 18:09
试着用UseCase里讲的,在内存中加载文档,也不行。请问是什么原因?
作者: ashio    时间: 2007-5-10 23:17
在窗口中打开文档的方法,CATSession指针和CATIIniInteractiveSession接口指针都能获得,但是到了打开文件这一条语句是发生错误,弹出document cannot be read的警告对话框。

在内存中加载文档也是如此,可以获得当前Session,但是同样无法加载。
和文件本身和文件位置有关吗(d:\trail.CATPart)

还有一个问题,我是在partdesign里做的addin,进入partdesign后自动会新建一个文件。这样是不是就不能再用Create_Session(),建立一个新的Session了,而必须去获取现在的Session?不能在内存中加载文件是不是和我是在partdesign里做的addin也有关?

还请各位指点!!
作者: ashio    时间: 2007-5-11 13:07
问题基本解决了,  再次谢谢 skyzhangwalkman
关于出现Command Interrupted警告对话框的问题也解决了

不过还有些疑问,那就是似乎只能打开根目录下的文件
比如路径  “d:\\partdoc\trail.CATPart” 的文件就无法打开
请问是这样的吗?还是有别的原因?


作者: skyzhangwalkman    时间: 2007-5-14 01:05
我可以打开的
难道是版本问题?
作者: ashio    时间: 2007-5-14 11:36
我用的是R14
和环境变量设置有关吗?
作者: beijiu    时间: 2007-5-14 13:43
我的也打不开。什么问题呀?
作者: skyzhangwalkman    时间: 2007-5-16 16:53
看了一下
d:\\partdoc\trail.CATPart???
这样怎么可以?
d:\\partdoc\\trail.CATPart

你不会少画一条斜杠吧?
作者: ashio    时间: 2007-5-16 20:32
额,就是少了条斜杠
用双斜杠是它的路径表示标准吗?
十分感谢  skyzhangwalkman 的帮助,以后还请多多指教:)
作者: skyzhangwalkman    时间: 2007-5-17 10:31
不是标准了
是转义字符
\\
就是代表\
作者: ashio    时间: 2007-5-17 13:26
哦,明白了:)
谢谢!!
艾,基础实在是差,以后请多指教,再次感谢!
作者: ririyeyjl    时间: 2007-5-18 11:11
“d:\\partdoc\trail.CATPart”  都是要用"\\"来格开把  你中间那个还是用"\"




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