[MXDRAW CAD控件文档] 下面帮助的完整例子,在控件安装目录的Sample\Ie\ iedemo.htm中. 1. 主要用到的函数说明: A. MxDrawXCustomFunction::Mx_DrawToJpg 把当前控件显示的DWG,任何一个给定区域转成jpg文件 。函数接口详细说明如下: static BOOL Mx_DrawToJpg(IN CString sJpgFilePath, IN double dLbx, IN double dLby, IN double dRtx, INdouble dRty, IN int iWidth = -1, IN int iHeight = -1, IN LONG* pBkColor = NULL); 参数 | 说明 | IN CString sJpgFilePath | Jpg文件名 | IN double dLbx | 输出范围的左下角坐标X,文档坐标系统 | IN double dLby | 输出范围的左下角坐标Y,文档坐标系统 | IN double dRtx | 输出范围的右上角坐标X,文档坐标系统 | IN double dRty | 输出范围的右上角坐标Y,文档坐标系统 | IN int iWidth = -1 | 位图宽度方向的像素,是-1并iHeight不是-1,由高度和文档高宽算出,否则取系统默认值:1000 | IN int iHeight = -1 | 位图高度方向的像素,是-1并iWidth不是-1, 由高度和文档高宽算出,否则取系统默认值:1000 | IN LONG* pBkColor = NULL | 位图的背影色,如果为NULL,取黑色为背景色 | hOcx | 当前控件名柄 |
2. JS中实现代码说明 用户点击 “保存显示区域到jpg” 按钮,将执行savejpg()函数 function savejpg() { // 下面的DoCommand(2)调用程序将跳到DoCommandEventFunc(iCmd)执行 document.getElementByIdx_x("MxDrawXCtrl").DoCommand(2); } function WriteJpg(obj) { // 得到控件对象。 var axMxDrawX = document.getElementByIdx_x(obj); // 得到当前视区显示的范围. var viewBound = axMxDrawX.CallCustomFunction("Mx_GetViewCoord",""); // 计算出保存的jpg的宽,高. var jpgWidth = viewBound.AtDouble(3) - viewBound.AtDouble(1); var jpgHeight = viewBound.AtDouble(4) - viewBound.AtDouble(2); // 把jpg的宽度、高度,由文档坐标变成象素坐标. var jpgWidth = axMxDrawX.CallCustomFunctionDoubleParam1("Mx_DocLongToViewCoord",jpgWidth); jpgWidth = jpgWidth.AtLong(1); var jpgHeight = axMxDrawX.CallCustomFunctionDoubleParam1("Mx_DocLongToViewCoord",jpgHeight); jpgHeight = jpgHeight.AtLong(1); // 创建一个参数对象. var savejpgParam = axMxDrawX.CallCustomFunction("Mx_NewResbuf",""); // 设置保存提jpg文件的位置,默认保存到c:\\1.jpg savejpgParam.AddString("c:\\1.jpg"); // 输入到jpg文件的图纸范围,就是当前视能看到范围 savejpgParam.AddDouble(viewBound.AtDouble(1)); savejpgParam.AddDouble(viewBound.AtDouble(2)); savejpgParam.AddDouble(viewBound.AtDouble(3)); savejpgParam.AddDouble(viewBound.AtDouble(4)); // jpg文件的宽高. savejpgParam.AddLong(jpgWidth); savejpgParam.AddLong(jpgHeight); // 调用保存jpg函数. var ret = axMxDrawX.CallCustomFunctionEx("Mx_DrawToJpg",savejpgParam); if(ret.AtString(0) == "Ok") { alert("成功把当前显示内容保存为jpg,文件保存在c:\\1.jpg"); } else { alert("保存失败.,可能C盘根目录没有写的权限,更改一下程序里保存位置"); } }
|