mxdwg
发表于 2010-11-2 19:42:00
本帖最后由 作者 于 2010-11-4 17:03:13 编辑 <br /><br /> <p>2010.11.01更新地址</p>
<p> </p>
<p><font face="Verdana"><a href="http://www.mxdraw.com/?p=10&a=view&r=28"><font face="Verdana">http://www.mxdraw.com/?p=10&a=view&r=28</font></a></font></p>
<p> </p>
<p>1. 增加线重显示</p>
<p> </p>
<p>2. 增加射线显示</p>
<p> </p>
<p>3. 增加块参照显示</p>
<p> </p>
<p>4. 增加dwg批量转pdf功能,函数名为:static BOOL MxDraw::MultiDwgConvertPdf(IN const CString& sDwgFileDir,<br/> IN const CString& sPdfFileDir,IN CMxConvertPdfParam* pExParam = NULL);</p>
<p> </p>
<p>5. 增加控件换肤功能,函数名为:static void MxDraw::SetTheme(PaintTheme theme);</p>
<p> </p>
<p>6. 完善曲线打断函数,getSplitCurves,现在可以对Polyline,Line,Arc,做打断.</p>
<p> </p>
<p>7. 完善多行文字的绘制处理功能。</p>
mxdwg
发表于 2010-12-27 09:17:53
2010.12.24更新地址
http://www.mxdraw.com/?p=10&a=view&r=30
1. 增加Chm帮助文档
2. 增加固定夹点显示
3. 增加对多线显示支持
4. 增加PL 线自交功能
5.增加 实体删除,并把内存释放功能
6.增加实体被选择后的通知事件
7.修改一些细节错误
mxdwg
发表于 2011-4-15 12:16:57
本帖最后由 mxdwg 于 2011-4-15 12:21 编辑
2011.04.14更新下载地址:
http://www.mxdraw.com/?p=10&a=view&r=38
1. 更加完善的标注接口,MxDrawX.ocx里,可以非常方便绘制标注实体,和访问和修改标注实体信息
2.增加标注接口的VB调用例程,详细可以参考sample\MxDrawXTestVB6.0
如绘制对齐标注的代码:
Private Sub DrawDimAligned_Click()
MxDrawX1,AddDimStyle "MyDimStyle", "41,0.18,141,0.09,40,200", "77,1,271,3", "3,""+HZ""", "342,0"
MxDrawX1.DimStyle = "MyDimStyle"
'把颜色改回黑白色
MxDrawX1.DrawColor = 0
'把线型改成实线
MxDrawX1.LineType = ""
'设置线宽 4
MxDrawX1.LineWidth = 0
MxDrawX1.DrawDimAligned 0, 4000, 300, 4500, 150, 4600
'把所有的实体都放到当前显示视区
MxDrawX1.ZoomAll
'更新视区显示
MxDrawX1.UpdateDisplay
End Sub
3. 完善标注接口文档,和帮助文档
4. 增加线型标注
5. 增加对齐标注
6. 增加半径标注
7. 增加直径标注
mxdwg
发表于 2011-5-30 10:34:54
本帖最后由 mxdwg 于 2011-5-30 10:52 编辑
2011.05.24更新下载地址
http://www.mxdraw.com/?p=10&a=view&r=39
1. 图层亮度显示控制,可以把一些不重要的图层变成灰色显示,函数如下
// -------------------------------------------------------------------------
// Summary:
// 设置显示亮度,默认值为100%
// Parameters:
// bright - 亮度百分数,取值为0 ~100
//pszLayerName - 图层名,为空,就设置所有图层
//hOcx - 控件句柄,为空取当前句柄
//isAutoUpDisplay - 是否自动更新显示
// -------------------------------------------------------------------------
static bool MxDraw::SetDisplayBright(BYTE bright,LPCTSTR pszLayerName = NULL,
MXDRAWOCXHANDLE hOcx = NULL,bool isAutoUpDisplay = true);
2. 增加Undo功能,可以无限制的回退到以前任何操作状态.
调用static bool MxDraw::EnableUndo(bool isEnable);启用控件的undo功能
// -------------------------------------------------------------------------
// Summary:
// 是否启用undo功能,控件为了节约内存和效率,默认控件是不启用的
//该函数只会影响将要创建的控件的undo功能,如果已经创建的控件不受影响.
//所以建议最好在InitMxDraw函数后调用.
// Parameters:
// isEnable - 是否启用Undo.
// Returns:
// 返回设置前的undo启用状态.
// -------------------------------------------------------------------------
static bool EnableUndo(bool isEnable);
3. 增加如下一些函数 :
A. Mx_PutEntityInView ,把一个实体放到视区中,
B. Mx_SetBright, 设置当前显示亮度
增加MxDraw::DrawImage函数,可以在控件中方便插入一个光栅图.,支持PNG透明图片
// -------------------------------------------------------------------------
// Summary:
// 向当前图形上插入Image对象
// Parameters:
//hOcx - 插入的控件名柄
// dPosX - 插入位置X坐标
// dPosY - 插入位置Y坐标
// dScale - 缩放比例
//dAng - 插入旋转角度,单位为度
//pszFilePath - Image文件名,可以是Http路径.
//blkRecId - 插入的块表记录,如果为空,插入当前模形空间中。
// Returns:
// 返回插入的图象对象id,如果id为空,插入失败,调用MxDraw::GetLastError()函数返回错误信息
// -------------------------------------------------------------------------
static McDbObjectId DrawImage(MxDraw::MXDRAWOCXHANDLE hOcx,LPCTSTR pszFilePath,DOUBLE dPosX, DOUBLE dPosY, DOUBLE
dScale = 1.0,
DOUBLE dAng = 0.0,McDbObjectId blkRecId = McDbObjectId::kNull);
C. 增加获得控件CStatusBarInformationReactor状态条信息的反应器.
4. 增加打开DWG文件,可以指定那内容不需要读取,达到快速打开文件的功能
5. 增加图纸比较功能
6. 增加保存图纸可以设置密码,和打开有密码的DWG文件.
7. 增加图面批注接口,批注对象是自定实体实现
8. 增加电子图章接口,图章对象是自定实体实现
9. 修改布局打印,白色实体打印不出来,点划显示成小短线,等问题。
couple
发表于 2011-5-30 11:12:05
楼主相当给力,我目前正在学习ARX,先学习学习,以后可以多交流~~
mxdwg
发表于 2011-8-19 10:55:42
2011.08.18更新下载地址
http://www.mxdraw.com/?p=10&a=view&r=40
1. 增加多行文字编辑功能,并提供源码,在samples\PropertyEditor\PropertyEditor.sln工程中
http://www.mxdraw.com/upload/Image/mtext.jpg
2. 增加MxGraph类,用于搜索CAD图上的曲线组成的图形,并创建图类型的数据结构,方便图面搜索使用,现在可以用它求两个曲线,或两点之间的最短路径
如:
// 求两个曲线,之间的最短路径
// 定义一个图对象
MxGraph mxgraph;
MrxDbgRbList spFilter = Mx::mcutBuildList(RTDXF0,_T("LINE,ARC,POLYLINE"),0);
// 由一个曲线id1,创建图.
if(mxgraph.Create(id1,spFilter.data()) != MxGraph::kOk)
{
return false;
}
// 得到边id1在图中的编号
long lNum11 = MXGRAPH_NULL_NUMBER;
long lNum12 = MXGRAPH_NULL_NUMBER;
if(!mxgraph.GetEdgeNumber(id1,lNum11,lNum12) )
return false;
// 得到边id2在图中的编号
long lNum21 = MXGRAPH_NULL_NUMBER;
long lNum22 = MXGRAPH_NULL_NUMBER;
if(!mxgraph.GetEdgeNumber(id2,lNum21,lNum22) )
return false;
long lSNum = lNum11;
long lENum = lNum21;
{
std::vector<MxGraphVertex*> vecVertex;
std::vector<MxGraphEdge*> vecEdge;
// 返回端点lNum11到端点lNum21的最短路径
mxgraph.GetShortestPath(lNum11,lNum21,vecVertex,vecEdge);
if(vecEdge->GetId() == id1)
{
lSNum = lNum11;
}
else
{
lSNum = lNum12;
}
if( vecEdge->GetId() == id2)
{
lENum = lNum21;
}
else
{
lENum = lNum22;
}
}
std::vector<MxGraphVertex*> vecVertex;
std::vector<MxGraphEdge*> vecEdge;
mxgraph.GetShortestPath(lSNum,lENum,vecVertex,vecEdge);
if(vecEdge.size() < 2
|| vecEdge->GetId() != id1
|| vecEdge->GetId() != id2
)
{
return false;
}
3. 修改了一堆错误
xgready
发表于 2011-10-9 21:34:46
坚决支持!
mxdwg
发表于 2011-10-24 14:33:43
2011.10.23更新
http://www.mxdraw.com/?p=10&a=view&r=41
华军下载地址:
http://www.newhua.com/soft/100760.htm
更新内容:
1.增加视区变化通知接口
COM接口:事件名称 :Mx_ViewModify,如Js调用
function CustomEvent(sEventName)
{
if(sEventName == "Mx_ViewModify")
{
var pParam = wdwg.CustomEventParam();
// 得到当前视区显示的文档范围.
// cent.x
//alert( pParam.AtDouble(0));
// cent.y
// alert( pParam.AtDouble(1));
// width
//alert( pParam.AtDouble(2));
// hieght
//alert( pParam.AtDouble(3));
}
}
VC接口:
CMxDrawFilterWinMsgObject::OnViewModify
2.增加Mx_DrawImageToBackground函数,把光栅图当着背景显示,VC接口为OpenBackgroundImageFile
3.增加,保存dwg图时,保存预览图功能,并把当前的显示范围也保存
4.命令行状态和多行文本编辑支持,右键菜单,复制粘贴,命令行窗口大小可以调用。并支持F2显示桌面窗口
5.保存的时候 ,是否自动备分,设置接口MxDraw::SetIsAutoBakFile
6.增加简化命令输入,和定制命令名
7.支持文件保存为二进流,和从二进制流加载图纸功能。
COM接口:ReadBinStream ,WriteBinStream
如VB代码:
Dim aryData As Variant
MxDrawX1.WriteBinStream aryData, "", 23
Dim ln As Long
ln = UBound(aryData)
ReDim sbyte(0 To ln) As Byte
Dim str$
For i = 0 To ln
sbyte(i) = aryData(i)
'str = str & " " & (aryData(i))
Next
'MsgBox str
'MxDrawX1.ReadBinStream aryData, "", 16777215
MxDrawX1.ReadBinStream sbyte, "", 16777215
8.修改布局名称支持中文
9.增加打印功能从图上选择打印范围 ,或取上一次打印范围等功能,输入打印范围
同时增加:Mx_Print 接口,可以不出打印窗口,而直接打印,可以用这个接口实现批量打印
例如:VB代码。
'打印10,10,100,100范围的图纸到当前系统默认设置打印机
Dim printParam As MxDrawResbuf
Set printParam = New MxDrawResbuf
' 打印的左下角10,10
printParam.AddDouble 10
printParam.AddDouble 10
' 打印的右上角100,100
printParam.AddDouble 100
printParam.AddDouble 100
' 开始打印
MxDrawX1.CallCustomFunctionEx "Mx_Print", printParam
10.命令行支持输入相对坐标,距离,输入关键字等功能
11.增加判断了图纸的改动接口,MxDraw::IsModifyed
12.增加保存jpg文件也能上传到服务器
13.修改AddLayer函数,有反删除功能
14.增加曲线的延长线相交
15.增加显示或隐基藏工具条上某个按钮功能,并增加工具条从服务器上的文件加载。
16.修改带形的线显示不对问题
17.增加OLE对象的读取与保存功能
18.增加自定义实体的CDC绘接口,用户可以使用CDC指定绘制图形,来实现更多的特殊的显示效果,使用该接口实现了一个DrawImageMark 函数,可以在图上绘一个图形标记,而它不会随视区的缩放而变化。
接口为 :MxDraw::DrawImageMark
19.增加PL线打碎功能。
完整武器
发表于 2011-10-26 00:30:34
太牛了 厉害!!!
mxdwg
发表于 2011-12-5 12:33:14
2011.12.02更新下载地址
http://www.mxdraw.com/?p=10&a=view&r=42
1. 完善与用户交输入函数,并把与用户交的函数用类封装,源码在sample\MxMrxDbg中方便使用,详列表如下
MrxDbgUiPrAngle 对应 acedGetAngle
MrxDbgUiPrDist对应 acedGetDist
MrxDbgUiPrDouble对应 acedGetReal
MrxDbgUiPrEntity对应 acedEntSel
MrxDbgUiPrInt 对应 acedGetInt
MrxDbgUiPrKeyWord 对应 acedGetKword
MrxDbgUiPrPoint 对应 acedGetPoint
MrxDbgUiPrString对应 acedGetString
2. 新增加,剪切,延伸,导角,导圆角,打碎,绘多义线,绘多边线功能,源码在sample\MxEdit中
如 绘多边线的代码:
void CMxDrawPolygon::Do()
{
MrxDbgUiPrIntDef getEdgeNum(_T("输入边的数目"),NULL,MrxDbgUiPrInt::kRange,s_iEdgeNum);
getEdgeNum.setRange(3,3000);
if(getEdgeNum.go() != MrxDbgUiPrBase::kOk)
return;
s_iEdgeNum = getEdgeNum.value();
MrxDbgUiPrPoint getCenterPoint(_T("指定正多边形的中心点或 [边(E)]"),_T("E"));
MrxDbgUiPrBase::Status ret = getCenterPoint.go();
if(ret == MrxDbgUiPrBase::kOk)
{
// 点取多边形的中点.
McGePoint3d centerPoint = getCenterPoint.value();
MrxDbgUiPrKeyWordDef getKey(_T("[内接于圆(I)/外切于圆(C)]"),
_T("I C"),
s_isInternallyTangent ? _T("I") : _T("C"),
s_isInternallyTangent ? _T("内接") : _T("外切")
);
if(getKey.go() != MrxDbgUiPrBase::kOk)
return;
if(getKey.isKeyWordPicked(_T("I")) )
{
s_isInternallyTangent = true;
}
else if(getKey.isKeyWordPicked(_T("C")) )
{
s_isInternallyTangent = false;
}
//
MrxDbgUiPrDist getOtherDist(_T("指定圆的半径"),NULL,MrxDbgUiPrDist::kNoNegNoZero,centerPoint);
CMxDrawPolygonDragDraw dragDraw(centerPoint,s_isInternallyTangent,s_iEdgeNum);
getOtherDist.setUserDraw(&dragDraw);
if(getOtherDist.go() == MrxDbgUiPrBase::kOk)
{
double dDist = getOtherDist.value();
McDbPolyline* pPolyline = NULL;
if(getOtherDist.isKeyboardInput() )
pPolyline = dragDraw.GetObject(&dDist);
else
pPolyline = dragDraw.GetObject();
MrxDbgUtils::addToCurrentSpaceAndClose(pPolyline);
}
}
else if(ret == MrxDbgUiPrBase::kKeyWord)
{
// 输入了关键字.
if(getCenterPoint.isKeyWordPicked(_T("E")))
{
// 由边绘制多边线。
MrxDbgUiPrPoint getFristPoint(_T("指定边的第一个端点"));
MrxDbgUiPrBase::Status ret = getFristPoint.go();
if(ret != MrxDbgUiPrBase::kOk)
return;
McGePoint3d firstPoint = getFristPoint.value();
MrxDbgUiPrPoint getSecondPoint(_T("指定边的第二个端点"));
CMxDrawPolygonFromTowPoint dragDraw(firstPoint,s_iEdgeNum);
getSecondPoint.setUserDraw(&dragDraw);
if(getSecondPoint.go() == MrxDbgUiPrBase::kOk)
{
McDbPolyline* pPolyline = dragDraw.GetObject(getSecondPoint.value());
MrxDbgUtils::addToCurrentSpaceAndClose(pPolyline);
}
}
}
}
3. 完善绘直线,绘圆,绘圆弧,缩放,旋转命令
4. 增加把一个实体绘制到jpg文件函数
// -------------------------------------------------------------------------
// Summary:
// 把一个实体显示保存到一个jpg文件。
// Parameters:
//pEnt - 该实体可以是一个临时的对象,不需要求必须在数据库中
//sJpgFilePath - 保存的jpg文件路径
//iWidth - jpg文件的像素宽度,-1默认为1000
//iHeight - jpg文件的像素高度,-1默认为1000
//pBkColor- 绘制的背景颜色,为空取当前背景颜色.
//pDatabase- 数据库指针,传空,就取pEnt本身所在数据库。
// Returns:
// 成功返TRUE
// -------------------------------------------------------------------------
static BOOL MxDraw::DrawEntityToJpg(
IN McDbEntity* pEnt,
IN CString sJpgFilePath,
IN int iWidth = -1,
IN int iHeight = -1,
IN COLORREF* pBkColor= NULL,
IN McDbDatabase* pDatabase = NULL);
页:
1
2
3
4
5
6
[7]
8
9
10
11