查看: 4157|回复: 1

CATIA 二次开发源码分享: CAA 如何新建一个文档

[复制链接]

2477

主题

1280

回帖

8万

积分

管理员

PLM之家站长

积分
82265
QQ
发表于 2017-12-27 08:59:02 | 显示全部楼层 |阅读模式

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

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

×
新建文档是CAA开发中的常用操作,分为在批处理环境下新建和在可视化交互环境下新建两种。下面以在批处理环境下新建为例,简要介绍步骤及涉及的方法。
$ p! c' S6 ]6 q& n: _' ?! m: E0 I1 f2 n. i  S
创建会话
1 ]$ g) Y9 u% n; b6 Q/ T; M* y
% h- c  j3 t2 {- d1 F这是一个批处理程序,在使用文档之前首先需要打开一个会话。在CAA中,打开一个会话可使用全局函数Create_Session。( r( P" G$ i1 ?) r4 q+ ]  o" L
  J4 d1 v) ^  W; G
char *sessionName = "CAA2_Sample_Session";
1 i. ^- q% G+ q* C& hCATSession *pSession = NULL;. n7 Z' E3 [' z. O, w. m
HRESULT rc = ::Create_Session(sessionName, pSession);
; s) p1 F8 F% E创建文档
7 y* G+ o3 c6 E6 ]4 R8 ^, h9 Y. f: {" b! M% K  K
会话打开之后,可以使用CATDocumentServices的静态方法New创建文档,该方法创建一个文档并对它进行初始化,使其可以被加载、存储和编辑。在该例子中,使用“Part”作为这个文档的类型,在交互式的模式中,这是使用File/New操作后显示的名称,不是文件的类型,即在这里不要使用“CATPart”。# g4 t, C1 O" C9 e( u

% O' ~" B4 U7 g+ _4 v1 N: `CATDocument* pDoc = NULL;5 P9 p( m4 D8 E, l9 f% @0 |
rc = CATDocumentServices::New("Part",pDoc);
9 X1 Q! U6 i/ w$ A) I1 Y5 Q8 Y: @if (NULL != pDoc) cout << "New document created OK" << endl;
$ g+ G6 X- @- `: @% E保存文档* t' r0 O5 C* v0 @; V1 t
  q6 L. l+ t+ M) x8 ~' I
使用CATDocumentServices的静态函数SaveAs保存文档,该方法使用指向前面使用New方法所创建文档的指针作为第一个参数,用文档文件名作为第二个参数。3 @) _! @, D1 i7 w8 _. U" d! x
# K- Q6 t. m) h0 h) `8 Q( {
rc = CATDocumentServices::SaveAs (*pDoc, "TestPart");
4 [- S" O% r9 U7 ^" e6 Y* b6 @9 x* gif (SUCCEEDED(rc)) cout << "Document saved OK" << endl;
) `: G. s. O, C- \移除文档
( Z8 \6 `# c5 c) i/ Q
, R  I/ i  x% @+ e% b  u# }在同一个Session中如果你要再次打开文档,有必要在保存完成以后从会话中移除文档。如果不需要再次打开文档,你就无需担心文档从会话中移除的问题,因为删除会话时会自动将文档移除。使用CATDocumentServices的静态方法Remove可以从会话中移除文档。+ _+ m5 [8 t+ }9 Q7 ~

. C0 ^, ~# _4 wrc = CATDocumentServices::Remove (*pDoc);, y% c9 u4 Z3 H  C3 g  p
if (SUCCEEDED(rc)) cout << "Document removed OK" << endl;! D7 `! N  n+ n: `4 m% \
pDoc = NULL ;0 A* I+ z2 b8 Q% @2 D( [& [
删除会话
! K7 s; K% \. {$ J
# d0 q- l* h3 z( L4 Q" v# h在程序的最后不要忘记使用全局函数Delete_Session删除会话。
8 {, M* K2 B* ^; |5 K( E0 `8 J, r! H3 ~% e% g& l
rc = ::Delete_Session(sessionName);: h" y/ k/ H4 p/ ], w
if (SUCCEEDED(rc)) cout << "Session deleted OK" << endl;
( u3 s) D! U: Z+ h  Y/ d
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

1

主题

38

回帖

603

积分

高级会员

积分
603
发表于 2018-2-28 06:22:14 | 显示全部楼层
显示所有内容
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部