CAD在网页中绘图,并为新绘的对象写扩展数据和读取扩展数据

在网页中绘图,并为新绘的对象写扩展数据和读取扩展数据。下面帮助的完整例子,在控件安装目录的 Sample\Ie\iedemo.htm 中。


主要用到函数说明:


_DMxDrawX::InsertBlock


向数据库中插入一个图块,DWG图块文件可以是本地文件,也可以是网络文件。详细说明如下:函数成功返回1,失败返回0。


参数 说明
BSTR pszDwgFileName

图块定义的dwg 文件,支持http://开头的网络路径

BSTR pszBlockName

新插入的图块名


_DMxDrawX::DrawBlockReference


绘制一个块引用对象,返回新绘的对象id。详细说明如下:


参数 说明
DOUBLE dPosX  

插入点的X坐标

DOUBLE dPosY

插入点的Y坐标

BSTR pszBlkName

图块名

DOUBLE dScale  

图块缩放比例

DOUBLE dAng

图块的旋转角度


MxDrawDatabase::ObjectIdToObject


由实体id返回实体对象。


MxDrawEntity::SetXData


设置实体的扩展数据,详细说明如下:


参数 说明
[in] IMxDrawResbuf* pXData

扩展数据链表


MxDrawEntity::GetXData


返回实体的扩展数据。


js中实现代码说明:


绘制一个块引用对象,并向新绘的对象写一个扩展数据,比如GUID,用来标识它。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// 得到网页中的控件对象
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("插入失败");
     }
}


读取扩展数据:


1
2
3
4
5
6
7
8
9
10
11
12
// 得到网页中的控件对象.
var mxOcx = document.all.item("MxDrawXCtrl");
  
// 与用户交互,在图上选择一个实体
var ent = mxOcx.GetEntity("选择要读扩展数据的实体:");
 if(ent == null)
  {
// 用户取消了选择.
          return;
}
// 得到WriteGuid函数写的扩展数据.
  alert(ReadGuid(ent) );


写扩展数据:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
}

posted on   梦想CAD控件  阅读(446)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示