明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: mxdwg

梦想mxdraw浏览,编辑控件

  [复制链接]
 楼主| 发表于 2009-9-2 09:14:00 | 显示全部楼层

控件最新更新,2009.09.02,
1. 增加绘图捕捉功能.
2. ARX接口中的曲线类几何计算函数更为完善

下载地址:
http://www.mxdraw.com/viewthread.php?tid=69&extra=page%3D1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2009-9-2 18:38:00 | 显示全部楼层

1,佩服楼主!

2,楼主的QQ群满了,还能不能加俺?QQ:812928665

3,楼主对DWG文件的读入是基于DWGDirectX的吗?

4,若我想通过DWGDirectX读Dwg文件用C#来写一个象梦想控件一样的东西,楼主认为可行吗?(图形显示用GDI+)

 我对绘图速度和内存处理有点担心.我奇怪楼主是怎样实现填充的?

5,再次佩服楼主!

 楼主| 发表于 2009-9-2 19:52:00 | 显示全部楼层

1. 对Dwg读入使用DwgDirect

2. 填充图案,有专门算法可以生成。

3. 用C#也可以写,但没有C++写出的程序速度快。

 楼主| 发表于 2009-9-23 08:30:00 | 显示全部楼层

2009.09.21更新
更新下载地址:

http://www.mxdraw.com/viewthread.php?tid=75&extra=page%3D1

1.增加不需要用控件打开,直接把dwg转成jpg文件的功能。
2.增加ARX的自定义实体的支持。可以参例程:sample\CustomEntity\CustomEntity.sln例程。并实现了联动编辑的效果。
3.修改了一些小问题。

 楼主| 发表于 2009-10-10 14:41:00 | 显示全部楼层
本帖最后由 作者 于 2009-10-13 13:02:34 编辑

2009.10.10更新

更新下载地址:
http://www.mxdraw.com/viewthread.php?tid=79&extra=page%3D1

1.  增加ASP例程。
2.  增加控件在网页中使用时,把文件保存到服务器的功能。

javascrit 程序绘直线代码;
var MxDrawXCtrl_Obj; //控件对象
function line()
{
MxDrawXCtrl_Obj = document.all.item("MxDrawXCtrl");
var app ;
app = new ActiveXObject("MxDrawX.MxDrawApplication");

var curSpace = app.WorkingDatabase().CurrentSpace();
var point1;
var point2;
point1 = new ActiveXObject("MxDrawX.MxDrawPoint");
point2 = new ActiveXObject("MxDrawX.MxDrawPoint");
point1.x = 10;
point1.y = 10;
point1.z = 0;
point2.x = 200;
point2.y = 4000;
point2.z = 0;
curSpace.AddLine(point1, point2);

app.ZoomAll();
alert ("绘制直线成功");
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2009-11-12 20:46:00 | 显示全部楼层

2009.11.12更新下载地址:

http://www.mxdraw.com/viewthread.php?tid=81&extra=page%3D1
1.  完善MxDrawX.ocx的接口和属性。控件的背影色,是否显示工具条,命令窗口等都可以直接在控件属性编辑器中修改

2.  增加一组简单的绘图接口,可以非常方便进行参数化绘图,这些接口的详细调用例程可以参考samples\MxDrawXTestVB6.0下的例程。

函数定义如下: 复制内容到剪贴板
代码:
int DrawLine(double dX1, double dY1, double dX2, double dY2)
    MxDrawXLib._DMxDrawX 的成员
int DrawArc1(double dCenterX, double dCenterY, double dRadius, double dStartAng, double dEndAng)
    MxDrawXLib._DMxDrawX 的成员
int DrawArc2(double dStartPointX, double dStartPointY, double dMidPointX, double dMidPointY, double dEndPointX, double dEndPointY)
    MxDrawXLib._DMxDrawX 的成员
int DrawArc3(double dStartPointX, double dStartPointY, double dEndPointX, double dEndPointY, double dBulge)
    MxDrawXLib._DMxDrawX 的成员
int DrawBlockReference(double dPosX, double dPosY, string pszBlkName, double dScale, double dAng)
    MxDrawXLib._DMxDrawX 的成员
int DrawCircle(double dCenterX, double dCenterY, double dRadius)
    MxDrawXLib._DMxDrawX 的成员
int DrawEllipse(double dCenterX, double dCenterY, double dMajorAxisX, double dMajorAxisY, double dRadiusRatio)
    MxDrawXLib._DMxDrawX 的成员
int DrawEllipseArc(double dCenterX, double dCenterY, double dMajorAxisX, double dMajorAxisY, double dRadiusRatio, double dStartAng, double dEndAng)
    MxDrawXLib._DMxDrawX 的成员
int DrawImage(double dPosX, double dPosY, double dScale, double dAng, string pszFilePath)
    MxDrawXLib._DMxDrawX 的成员
int DrawPathToHatch(double dPatternScale)
    MxDrawXLib._DMxDrawX 的成员
int DrawPathToPolyline()
    MxDrawXLib._DMxDrawX 的成员
int DrawPathToSpline()
    MxDrawXLib._DMxDrawX 的成员

int DrawPoint(double dX, double dY)
    MxDrawXLib._DMxDrawX 的成员

int DrawText(double dPosX, double dPosY, string pszText, double dHeight, double dRotation, short horizontalMode, short verticalMode)
    MxDrawXLib._DMxDrawX 的成员

uint DrawColor { set; get; }
    MxDrawXLib._DMxDrawX 的成员

string TextStyle { set; get; }
    MxDrawXLib._DMxDrawX 的成员
double LineWidth { set; get; }
    MxDrawXLib._DMxDrawX 的成员
string LineType { set; get; }
    MxDrawXLib._DMxDrawX 的成员

string LayerName { set; get; }
    MxDrawXLib._DMxDrawX 的成员
string PatternDefinition { set; get; }
    MxDrawXLib._DMxDrawX 的成员复制内容到剪贴板
代码:
比如,绘制一个填充:
'《---------------------------------------》
'绘制一个有图案的填充
'angle, x-origin,y-origin, delta-x,delta-y,dash-1,dash-2, …
'45 = angle 是图案线角度.
'0 = x-origin 是第一个填充线经过的点位置X坐标
'0 = y-origin 是第一个填充线经过的点位置Y坐标
'0 = delta-x   是下一个填充线相对前一个线的X方向偏移
'0.125 = delta-y   是下一个填充线相对前一个线的Y方向偏移
MxDrawX1.AddPatternDefinition "MyHatchPattern1", "((45, 0,0, 0,0.125))"
MxDrawX1.PatternDefinition = "MyHatchPattern1"

'定义一个路径的开始点
MxDrawX1.PathMoveToEx 600, 3300, 0, 0, 0.3
'路径的一下个点
MxDrawX1.PathLineTo 700, 3300
'路径的一下个点
MxDrawX1.PathLineTo 700, 3400
'路径的一下个点
MxDrawX1.PathLineTo 600, 3300

'把路径变成一个填充,80,是填充图案的缩放比例.
MxDrawX1.DrawPathToHatch 100

'把所有的实体都放到当前显示视区
MxDrawX1.ZoomAll
'更新视区显示
MxDrawX1.UpdateDisplay

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2010-1-5 10:43:00 | 显示全部楼层

2009.12.31更新下载地址:

http://www.mxdraw.com/?p=10&a=view&r=14


1.  控件升级到VC2008

2.  支持最新的CAD图纸2010

3.  DWG文件模块是否加载可选

4.  完善了DWG文件读写模块,解决了以前难解决的编辑图纸问题,为后续支持更为复杂的编辑功能准备了基础.

5.增加控件MxDrawX自动安装包(MSI文件),并且控件运行前,不需要安装任何VC环境.

6.修改了调试版本的一些错误,现在调试和发行版本一样稳定.

7.增加导出pdf功能.

 楼主| 发表于 2010-2-6 12:56:00 | 显示全部楼层

MxDraw5.0(20100206) 下载地址:

http://www.mxdraw.com/?p=10&a=view&r=17

1.增加批量打印接口
函数定义如下:
 
        static BOOL BatchPrintDialog(MXDRAWOCXHANDLE hOcx,
  const MxDraw::BATCH_PRINT_DATA& printData);

 // 直接打印,不出来现打印对话框.
 static BOOL Print(MXDRAWOCXHANDLE hOcx,  
  McGePoint3d ptLB, // 打印的范围左下角。
  McGePoint3d ptRT, // 打印的范围右上角。
  LPCTSTR pszPrintName,  // 打印机名。
  LPCTSTR pszPaperName,  // 打印的图纸名。
  int     iPrintDirection, // 打印的方向, 
     CRect* pRectPageMargin = NULL,   // 打印的页边距离,如果转NULL就取打印机默认的页边距。
  LPCTSTR pszLayoutName = NULL, // 打印的布局,为NULL就是模型Model中的内容。
  LPCTSTR pszPrintConfiy = NULL // 打印配制,暂没有使用。
  );

2.增加正交绘图模式

3.增加分屏显示功能

4.增加asp.net的把文件保存到服务器的例程。

5.修正了一些细节问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2010-6-18 14:16:00 | 显示全部楼层

2010.06.18更新下载地址:

MxDraw5.0(20100618) 下载地址:

http://www.mxdraw.com/?p=10&a=view&r=21

 

 

1.增加搜索图上表格文字功能.类名为:MxTableSearch调用例程:
 MxTableSearch search;
 search.AddTableHeadUnit(_T("序号"));
 search.AddTableHeadUnit(_T("名称"));
 search.AddTableHeadUnit(_T("材料"));
 search.AddTableHeadUnit(_T("长度"));

 std::vector<std::vector<CString> > vecTableContents;
 if(search.Do(vecTableContents) )
 {
  for(UINT i = 0; i < vecTableContents.size();i++)
  {
   std::vector<CString>& vecStr = vecTableContents;
   CString sOut = _T("\n");
   for(UINT j = 0; j < vecStr.size();j++)
   {
    sOut = sOut + _T(" ") + vecStr[j];
   }
   acutPrintf(sOut);
  }
 }

2.增加把某个dwg图做为背景图打开。函数名为: MxDraw::OpenBackgroundFile

3.增加自绘背景接口,可以方便定制控件的显示背景: virtual void McDbDatabaseReactor::WordDrawBackGround(const McDbDatabase* pDatabase,McGiWorldDraw* wd,McDbObjectId layoutId);

4.增加文字转曲线功能
 static BOOL TextToCurves(
  IN  McDbText* pText,
  OUT AcDbVoidPtrArray& aryCurve
  );

5.增加VC6下,调用控件例程,使用COM 接口调用,很有参考价值:比如:与用户交互构造选择集:
// 与用户交到选择实体.
  MxDrawXLib::IMxDrawSelectionSetPtr ssGet;
  ssGet.CreateInstance(__uuidof( MxDrawXLib::MxDrawSelectionSet ));
  if(ssGet == NULL)
  {
   return;
  }
  ssGet->Select (MxDrawXLib::mcSelectionSetUserSelect);

  if(ssGet->GetCount() == 0)
   return;

  for(long i = 0; i < ssGet->GetCount();i++)
  {
   MxDrawXLib::IMxDrawEntityPtr spEnt =  ssGet->Item(i);
   if(spEnt == NULL)
    continue;

   CComPtr<IMxDrawLine> spLine;
   spEnt->QueryInterface(&spLine);
  
   if(spLine != NULL)
   {
    //直线对象。
    stuPt sPt; // 开始点
    stuPt ePt; // 结束点
    Convert3dPoint(spLine->GetStartPoint(),sPt);
    Convert3dPoint(spLine->GetEndPoint(),ePt);

    continue;
   }

   CComPtr<IMxDrawArc> spArc;
   spEnt->QueryInterface(&spArc);

   if(spArc != NULL)
   {
    stuPt cenPt; // 圆弧的中点
    double dR = 1; // 半径
    double dSAng = 0; // 开始角
    double dEAng = 0; // 结束角
    Convert3dPoint(spArc->GetCenter(),cenPt);
    dR = spArc->GetRadius();
    dSAng = spArc->GetStartAngle();
    dEAng = spArc->GetEndAngle();

    continue;
   }
  

   CComPtr<IMxDrawCircle> spCircle;
   spEnt->QueryInterface(&spCircle);
   if(spCircle != NULL)
   {
    stuPt cenPt; // 圆的中点
    double dR = 1; // 半径
    Convert3dPoint(spArc->GetCenter(),cenPt);
    dR = spArc->GetRadius();
   }

   CComPtr<IMxDrawEllipse> spEllipse;
   spEnt->QueryInterface(&spEllipse);
   if(spEllipse != NULL)
   {
    stuPt cenPt; // 圆的中点
    Convert3dPoint(spEllipse->GetCenter(),cenPt);


             double dRadiusRation = 1.0;
    dRadiusRation  = spEllipse->GetRadiusRatio();
    double dStartAng = spEllipse->GetStartAngle();
    double dEndAng  = spEllipse->GetEndAngle();
    

    stuPt majorAxis;
    Convert3dVector(spEllipse->GetMajorAxis(),majorAxis);
   }

  }

 

6. 增加自主的dxf文件读写库,并且开源,使用者可以非常方便修改错误,源代码在samples\MxDxf50目录下,很有参考价值。

7. 修改一堆错误,和改了很多细节等。

 8.增加C#的多文档使用例程

 

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2010-10-13 14:10:00 | 显示全部楼层

2010.10.12更新下载

 2010.10.12 更新地址:
http://www.mxdraw.com/?p=10&a=view&r=31

更新内容:
1.增加扩展模块的支持,扩展模块名为mrx,与AutoCAD的arx文件是同一类。


2.增加扩展模块中可以增加用户自定义函数和命令,自定义函数可以在ActiveX被其它用语言调用。


3.修改布局中的一些显示错误


4.修改自定义实体的显示错误,自定义实体显示更为准确


5.增加region对象的显示


6.增加MxExpressTools,ExApp例程,在ExApp例程中有一个非常好的表格文字搜索程序代码 SearchTable.cpp,SearchTable.h,演示控件的图面搜索接口的调用。 MxExpressTools中增加了绘制云线,和测量距离功能,并有源代码可参考。


7.修改很多细节错误。

8.控件在网页使用是时,如果客户电脑没有安装控件,增加自动提示安装下载例程代码,在sample\AspNet中


9.提高pdf文件的输出分辨率
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 04:46 , Processed in 0.183812 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表