|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
实体表达方式:handle, ObjectID,ads_name,指针point$ Y# I D4 w3 v/ b- _5 r
Object Arx中,表达实体的方式主要有handle, ObjectID,ads_name,指针point;这些方式之间有什么区别呢? 3 i( J5 s; L/ z& z$ {$ M
Handle: 永远不变,存在DWG文件中;
) E# B5 O* S* V! w9 V$ sObjectId:每次打开一个图,所有的对象都分得一个ObjectId,这个ObjectId维持不变,直到DWG被关闭
! v3 K7 I7 ~( ^7 O- Q% `Point: 每次得到它,它总在变,就算它代表的实体是不变的.- l- Y& N, M0 {( W X
ads_name 同 Point一样
9 Y, Q; C+ C/ J* \+ x- d0 a
6 G$ m) M& G3 d$ y# t& c& V7 i以下函数是常用的:* @: |, a1 W" M a( |
Acad::ErrorStatus & L. c6 b4 B$ ?2 F9 k+ N
AcDbDatabase::acdbOpenObject(AcDbObject*& obj, AcDbObjectId id, AcDb::OpenMode mode,* q" M& t) p9 K- v
Adesk::Boolean openErasedObject = Adesk::kFalse)/ X$ i9 U% R+ M( m0 k z6 z
Acad::ErrorStatus
/ M% C! d' I% g) h* g' U2 VgetAcDbObjectId(AcDbObjectId& retId,Adesk::Boolean createIfNotFound,. r8 K- p' \/ Z
const AcDbHandle& objHandle,Adesk::UInt32 xRefId=0);1 H! t1 g9 y1 U8 S0 X
2 Q# A% P- ?$ x3 G4 s" mAcDbObject* pObject;
; ?/ S8 U$ Y9 w; C3 ~/ G# VAcDbHandle handle;
- Z6 D# P9 j, T& n. c% v3 ^
1 {) b% H9 t* p+ k1 F( lpObject->getAcDbHandle(handle);
6 m2 [* I9 L$ T+ A( s: }. Z+ L( CacdbGetAdsName(ads_name& objName,AcDbObjectId objId); / Y3 w2 ?9 m. {8 y, R) j( V
acdbGetObjectId(AcDbObjectId& objId,ads_name objName);
, q9 H. g, ^ [0 p; l/ b. vacdbHandEnt(const char * handle,ads_name entres); |
|