cad

DXF image entity group code explanation

ぃ、小莉子 提交于 2019-12-11 03:48:42
问题 I'm working on a Delphi class to import/export some kind of entities from DXF file. I'd like add support for Image entity but I don't understand some group codes. I'm using official DXF guide reference (2002): http://www.autodesk.com/techpubs/autocad/dxf/dxf2002.pdf I have understand the group codes 10, 20 and 30, there are the "Insertion point" and work like any other entities. The problem are group codes: -11, 21 and 31: U-vector of a single pixel (points along the visual bottom of the

CAD动态提示操作(com接口网页版)

夙愿已清 提交于 2019-12-10 15:19:53
鼠标移动到实体上后,停留一会,控件可能得到该实体对象,然后能动态提示一些信息。响应控件事件:DMxDrawXEvents::InputPointToolTipEvent,详细说明参考: http://www.mxdraw.com/help/MxDrawXLib___DMxDrawXEvents__InputPointToolTipEvent@IDispatch_@BSTR_.htm ,调用函数SetDynToolTipPopTime设置动态提示时间。 1. 增加InputPointToolTipEvent事件响应函数: document.getElementById("MxDrawXCtrl").ImpInputPointToolTipFun = DoInputPointToolTipFun; 2. 在事件中返回需要提示的字符串,在事件代码里,把对象类型名提示出来: function DoInputPointToolTipFun(ent) { { var sClassName = ent.ObjectName; var tip = "<b><ct=0x0000FF><al_c>"+sClassName+ "</b><br><ct=0x00AA00><hr=100%></ct><br>"; mxOcx.SetEventRetString(tip); } ent = null;

CAD关于实体的选择操作(com接口网页版)

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-10 15:07:13
调用控件的AddCurrentSelect函数,把实体设置成选中状,函数详见: http://www.mxdraw.com/help/MxDrawXLib___DMxDrawX__AddCurrentSelect@LONGLONG@VARIANT_BOOL@VARIANT_BOOL.htm 调用控件的ClearCurrentSelect函数清除当前选择 调用IMxDrawSelectionSet::CurrentSelect 得到当前选择的实体,详见: http://www.mxdraw.com/help/IMxDrawSelectionSet__CurrentSelect@[in,defaultvalueNULL]_IMxDrawResbuf_.htm 下面代码,得到当前选择的实体: //实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。 var ss = mxOcx.NewSelectionSet(); //构造一个过滤链表 var filter = mxOcx.NewResbuf(); ss.CurrentSelect(filter); for (var i = 0; i < ss.Count; i++) { var ent = ss.Item(i); if (ent.ObjectName == "McDbLine") { // 是个直线。 var line =

CAD关于闪烁实体操作(com接口网页版)

寵の児 提交于 2019-12-10 15:04:58
我们控件可以对实体进行一个动画的闪烁,这样可以更方便提示用户。 调用控件函数:TwinkeEnt,StopTwinkeEnt,StopAllTwinkeEnt,SetTwinkeTime,SetTwinkeColor ,实现实体的闪烁控制。 如下代码,让用户在图上选择一个对象,然后闪烁: // 让用户在图上选择一个对象。 var ent = mxOcx.GetEntity("选择实体"); if (ent == null) return; // 准备闪烁颜色. var colors = mxOcx.NewResbuf(); colors.AddLongEx(255); colors.AddLongEx(65280); mxOcx.SetTwinkeColor(colors); // 设置闪烁间隔的时间 mxOcx.SetTwinkeTime(2000); // 开始闪烁 mxOcx.TwinkeEnt(ent.ObjectID); 控件DrawImageMark函数,在图上绘制一个图片标记,该标记可以是一组的图片组成,如果闪烁这样的图片标记对象,就可以做出一个图片动画效果。 例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 //新建一个COM组件对象 参数为COM组件类名 var getPt = mxOcx

CAD关于线型操作(com接口网页版)

非 Y 不嫁゛ 提交于 2019-12-10 10:13:26
1.得到图上所有线型 下面js代码,取到数据库的线型表,然后遍历表中所有线型记录对象,并得到线型名输出 var database = mxOcx.GetDatabase(); //返回数据库中的线型表对象 var linetypeTable = database.GetLinetypeTable(); //创建遍历器 var iter = linetypeTable.NewIterator(); if (iter == null) return; var sRet = null; //移动当前遍历器位置 for (; !iter.Done(); iter.Step(true, false)) { //返回遍历器当前位置的线型样式 var lineType = iter.GetRecord(); //得到文字样式名 sRet = sRet + ',' + lineType.Name; } alert(sRet); 2. 修对象的线型 下面代码,让用户在图上选择一个对象,然后新增加一个线型,再把对象的线型改成新增加的线型。 var ent = mxOcx.GetEntity("\n 选择实体对象:"); if (ent == null) { return; } mxOcx.AddLinetype("MyLineType", "6,-10"); // 设置实体线型。 ent

CAD线型

心已入冬 提交于 2019-12-10 10:01:48
DWG数据库中,线型样式存放在线型样式表中,表类名:MxDrawLinetypeTable,它的详细接口说明参考: http://www.mxdraw.com/help/IMxDrawLinetypeTable.htm 线型样式表中每一条记录称为一种线型样式,类名:MxDrawLinetypeTableRecord,它的详细接口说明参考: http://www.mxdraw.com/help/IMxDrawLinetypeTableRecord.htm 线型样式是随图纸保存,不同的图纸使用的线型样式都可能会不一样。 文字样式设置命令:Mx_Linetype, 比如: ocx.SendStringToExecute("Mx_Linetype") 简单线型定义是通一个double数组来表示,大于零表示线型的实线长度,小于零表示线型的虚线长度,比如 1,-1,2,-2定义的线如下 在控件程序所在目录下有个mx.lin线型定义文件,定义了一些常用的线型,线型文件定义格式与AutoCAD线型定义文件一至,可在百度搜索到AutoCAD线型定义文件格式教程。 调用控件函数:LoadLinetypeFromFile从线型文件加载线型,函数详细说明: http://www.mxdraw.com/help/MxDrawXLib___DMxDrawX__LoadLinetypeFromFile@BSTR

CAD关于线型添加线型操作(com接口网页版)

家住魔仙堡 提交于 2019-12-10 09:40:54
使用控件的AddLinetype,AddLinetypeEx函数,添加一种线型,详细接口说明: http://www.mxdraw.com/help/MxDrawXLib___DMxDrawX__AddLinetype@BSTR@BSTR.htm 下面代码,添加一个虚线,然后绘制直线使用该线型 //绘制一个虚线 //定义虚线数据据,"MyLineType"是线型名,"6,-8"是虚线的一个单位定义,6是实线长,-8是空格长。 mxOcx.AddLinetype("MyLineType", "6,-10"); //设置当前线型为"MyLineType" mxOcx.LineType = "MyLineType"; //绘制一个虚线 mxOcx.DrawLine(0, 30, 100, 30); mxOcx.UpdateDisplay(); 下面代码,添加一个带文字的线型,如下: // 先添加一个线型中使用的文字样式 mxOcx.AddTextStyle1("MyLineTypeTextStyle", "txt.shx", "hztxt.shx", 1); //增加一个带有形的线型 mxOcx.AddLinetypeEx("MyLineType3", "(12.7,(\"T=MxDraw\",\"S=2.54\",\"L=-5.08\",\"R=0.0\",\"X=-2.54\",\

CAD关于块表选择实体做成块(com接口网页版)

ぐ巨炮叔叔 提交于 2019-12-09 19:30:40
下面代码,让用在图上选择实体,然后把实体做成一个图块,然后插入到图上。 js代码如下: //实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。 var ss = mxOcx.NewSelectionSet(); //构造一个过滤链表 var spFilte = mxOcx.NewResbuf(); //用户选择对象 得到用户选取的实体 ss.Select2(8, null, null, null, spFilte); var aryId = new Array(); for (var i = 0; i < ss.Count; i++) { var ent = ss.Item(i); if (ent != null) { aryId.push(ent.ObjectID); ent.Close(); } } //返回控件的数据库对象 var curDatabase =mxOcx.GetDatabase(); var dMinX = 0, dMinY = 0, dMaxX = 0, dMaxY = 0; var isFirstEnt = true; for (var l = 0; l < aryId.length; l++) { var pObj = curDatabase.ObjectIdToObject(aryId[l]); if (pObj == null)

CAD关于块表把一个DWG文件插入到当前文件(com接口网页版)

你离开我真会死。 提交于 2019-12-09 19:19:27
调用控件的InsertBlock函数,把一个DWG文件,插入到图上,指定一个块名,放在块表记录中。InsertBlock的函数详细说明: http://www.mxdraw.com/help/MxDrawXLib___DMxDrawX__InsertBlock@BSTR@BSTR.htm , 如果给的图块名,当前图上已经有该名称的图块,可以调用Mx_InsertBlockEx 自定义函数,告诉控件是否需要重新定义图块。Mx_InsertBlockEx的详细说明: http://www.mxdraw.com/help/MxDrawXCustomFunction__Mx_InsertBlockEx@CString@CString@INT@CString@bool.htm 然后调用DrawBlockReference函数绘制块引用,引用InsertBlock创建的块表记录。函数详细说明: http://www.mxdraw.com/help/MxDrawXLib___DMxDrawX__DrawBlockReference@DOUBLE@DOUBLE@BSTR@DOUBLE@DOUBLE.htm 下面代码,演示如何插入DWG. mxOcx.InsertBlock("G:\pt1000.dwg", "MyBlkName"); mxOcx.DrawBlockReference(0, 0,

CAD关于块表介绍

不打扰是莪最后的温柔 提交于 2019-12-09 16:45:16
DWG数据库中,所有图块存放在块表中,块表类名:MxDrawBlockTable,它的详细接口说明参考: http://www.mxdraw.com/help/IMxDrawBlockTable.htm 块表中每一条记录称为块表记录,类名:MxDrawBlockTableRecord,它的详细接口说明参考: http://www.mxdraw.com/help/IMxDrawBlockTableRecord.htm 块表记录中存放所有实体数据。每个DWG数据库中,到少有一个名为"*Model_Space"的块表记录(模型空间),CAD图纸打开后,默认看到的对象都存放在模型空间,有一种对象是块引用MxDrawBlockReference,它的详细接口说明参考: http://www.mxdraw.com/help/IMxDrawBlockReference.htm ,块引用又可以指向另一个块表记录。 调用MxDrawDatabase::GetBlockTable 得到DWG数据库中块表: // 得到当前数据库。 var database = mxOcx.GetDatabase(); // 得到块表. var blkTable = database.GetBlockTable(); 调用MxDrawDatabase::CurrentSpace 得到当前空间(当前显示的块表记录)