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); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界