在网页中绘图,并为新绘的对象写扩展数据和读取扩展数据
MxDraw网页开发|黄洪辉|2018-05-07 10:43
-
回答:
绘制一个块引用对象,并向新绘的对象写一个扩展数据,比如GUID,用来标识它。
// 得到网页中的控件对象 mxOcx = document.all.item("MxDrawXCtrl"); mxOcx.focus(); 把服务器上的dwg文件,插入到控件中,也可以是一个本地文件. if(mxOcx.InsertBlock("http://www.mxdraw.com/downland/test.dwg","MyBlkName") != 0) { // 与用户交互,从图上点取一个插入点. var point = mxOcx.GetPoint(null,"\n 点插入点:"); if(point == null) { // 用点击了取消键. return; } // 绘制一个块引用对象,point.x,point.y是插入位置,MyBlkName是引用的块表记录名称. var blkRefId = mxOcx.DrawBlockReference(point.x,point.y,"MyBlkName",1.0,0.0); // 得到控件的数据库对象. var database = mxOcx.GetDatabase(); //由块引用对象id,得到块引用实体. var ent = database.ObjectIdToObject(blkRefId); if(ent == null) { alert("插入失败"); return; } // 为新插入的对象写一个扩展数据,值为"guid val 324322" WriteGuid("guid val 324322",ent,mxOcx) // 缩放视区,把所有实体都放到视区中显示. mxOcx.ZoomAll(); alert("插入成功"); } else { alert("插入失败"); } }
读取扩展数据:
// 得到网页中的控件对象. var mxOcx = document.all.item("MxDrawXCtrl"); // 与用户交互,在图上选择一个实体 var ent = mxOcx.GetEntity("选择要读扩展数据的实体:"); if(ent == null) { // 用户取消了选择. return; } // 得到WriteGuid函数写的扩展数据. alert(ReadGuid(ent) );
写扩展数据:
function WriteGuid(guid,ent,mxOcx) { // 创建一个扩展数据连表对象. var exData = mxOcx.CallCustomFunction("Mx_NewResbuf",""); // 添一个扩展数据,应用程序名,1001是AutoCAD dxf组码,表示"对象标注id数据"是一个扩展数据名称. exData.AddString("对象标注id数据",1001); // 设置一个字符串扩展数据,1000是AutoCAD dxf组码,表示是一个字符串 exData.AddString(guid,1000); // 设置对象扩展数据. ent.SetXData(exData); }