ID和句柄具有各自的特点:

1、 ID:在一个任务中,本次任务中都是独一无二的。在不同的任务中,同一个图形对象的ID可能不同。

2、句柄:在一个任务中,不能保证每个对象的句柄都唯一,但是在一个图形数据库中所有对象的句柄都是唯一的。句柄随DWG图形一起保存,在两次任务期间同一对象的句柄是相同的。

实体id返回实体对象

1、IMxDrawDatabase::ObjectIdToObject

2、实体id返回实体对象,具体详细如下:

参数

说明

[in] LONGLONG lId

实体id

3、JS代码中绘一个直线,得到直线id,再调该得到直线对象,然写扩展数据的例子。

​​function​​​ ​​DoCommandEventFunc(iCmd)​​
​​{​​
​​if​​​ ​​(iCmd == 1)​​
​​{​​
​​var​​​ ​​mxOcx = document.all.item(​​​​"MxDrawXCtrl"​​​​);​​
​​mxOcx.focus();​​
​​var​​​ ​​point1 = mxOcx.GetPoint(​​​​null​​​​,​​​​"n 点取开始点:"​​​​);​​
​​if​​​​(point1 == ​​​​null​​​​)​​
​​{​​
​​return​​​​;​​
​​}​​
​​var​​​ ​​point2 = mxOcx.GetPoint(point1,​​​​"n 点取结束点:"​​​​);​​
​​if​​​​(point1 == ​​​​null​​​​)​​
​​{​​
​​return​​​​;​​
​​}​​
​​// 直线的id​​
​​var​​​ ​​lineId = mxOcx.DrawLine(point1.x,point1.y,point2.x,point2.y);​​

​​// 为新写的直线写一个字符串扩展数据​​
​​var​​​ ​​database = mxOcx.GetDatabase();​​
​​var​​​ ​​ent = database.ObjectIdToObject(lineId);​​

​​if​​​​(ent == ​​​​null​​​​)​​
​​{​​
​​return​​​​;​​
​​}​​
​​var​​​ ​​exData = mxOcx.Call(​​​​"Mx_NewResbuf"​​​​,​​​​""​​​​);​​
​​exData.AddString(​​​​"TestApp"​​​​,1001);​​
​​exData.AddString(​​​​"用户的扩展数据内容。。。"​​​​,1000);​​
​​ent.SetXData(exData);​​

​​}​​
​​}​​