|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
实体表达方式:handle, ObjectID,ads_name,指针point
6 B! v1 q! X8 A+ GObject Arx中,表达实体的方式主要有handle, ObjectID,ads_name,指针point;这些方式之间有什么区别呢? 4 h w+ l& v( p6 ^, g. N& V
Handle: 永远不变,存在DWG文件中;6 J5 K9 ^& N" x4 A, o. L" U
ObjectId:每次打开一个图,所有的对象都分得一个ObjectId,这个ObjectId维持不变,直到DWG被关闭% w1 ]2 A; u/ U* r K
Point: 每次得到它,它总在变,就算它代表的实体是不变的.+ k' ]& q/ o4 y u, n) J
ads_name 同 Point一样 8 ?% f' J7 |: B/ _8 P" |# [
4 A) n! J( b$ J以下函数是常用的:
/ _! b6 d& s* Z+ D/ d- T8 ?Acad::ErrorStatus : J( R! }, t" e+ Q* Z" u
AcDbDatabase::acdbOpenObject(AcDbObject*& obj, AcDbObjectId id, AcDb::OpenMode mode,
% g- e- b5 L" C9 n Adesk::Boolean openErasedObject = Adesk::kFalse)
9 T; D) G& f1 t7 L; r: q0 pAcad::ErrorStatus
' Q0 m! z8 a* s* U F6 ugetAcDbObjectId(AcDbObjectId& retId,Adesk::Boolean createIfNotFound,
2 @5 h3 r8 X u const AcDbHandle& objHandle,Adesk::UInt32 xRefId=0);! E5 E. [. {, S4 i q- @' @6 t; }
% r- O U+ g' z! p" `# ?- d
AcDbObject* pObject;
" U/ p; e/ T) T0 T# G7 { p& ]AcDbHandle handle;+ o) P3 `) c0 D3 T. n
( z, H6 c( r! C" H$ Q( tpObject->getAcDbHandle(handle);
; r0 s! ^) z' ]acdbGetAdsName(ads_name& objName,AcDbObjectId objId);
, K, [' S6 \- c! NacdbGetObjectId(AcDbObjectId& objId,ads_name objName); / l. V' z t' W7 J. @! W
acdbHandEnt(const char * handle,ads_name entres); |
|