明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: mxdwg

梦想mxdraw浏览,编辑控件

  [复制链接]
发表于 2008-12-4 11:51 | 显示全部楼层
太厉害了!哎~我还差远了。
 楼主| 发表于 2008-12-4 13:10 | 显示全部楼层

梦想绘图控件寻求合作
   寻找志同道合的编程高手,一起做软件开发,实现共赢,共进步。
有意请联系方式QQ:827867134 ,www.mxdraw.com

主要合作是内容: 在AutoCAD外,前期主要做图纸浏览,CAD工具,专业工具,最终目标是CAD平台

要求会VC++,会ARX更好

发表于 2008-12-4 16:20 | 显示全部楼层
我的QQ号是635551689,我对阁下非常敬佩,愿帮助您做一些力所能及的事。不过我水平有限。我学的是化工专业,自学过C++,两个月前开始接触ARX编程。我的e_mail:leeathorskey@163.com
发表于 2008-12-4 17:18 | 显示全部楼层

我做了一个从AcEdInputPointMonitor继承下来的监视器。在CAD中,

1.当监视器打开时,绘制的图形无法删除。

2.当监视器打开后再关闭,执行其他命令时,有时会出错,有时不会。

不胜感激!

 楼主| 发表于 2008-12-4 17:34 | 显示全部楼层

估计是代码那里写的不对,要看看代码才知道原因,我已经你QQ好友了.

 楼主| 发表于 2008-12-4 18:36 | 显示全部楼层

梦想绘图控件交流群:73281982

群说明: CAD 控件,DWG图纸的浏览与编辑,CAD工具制作,专业软件制作,ARX开发,合作开发软件项目等交流

 楼主| 发表于 2009-5-11 09:17 | 显示全部楼层

2009.05.10更新

更新下载地址:
http://www.mxdraw.com/downland/MxDraw3.0(20090510)BetaTryVersion.exe

1. 增加布局功能和相关接口,如:McDbLayout,McDbLayoutManager等类。

2. 增加鼠标移动到实体上的动态提示功能和相关接口。如:

// ARX的动态事件接口,虚函数。
virtual Mcad::ErrorStatus McEdInputPointMonitor::MonitorInputPointToolTip(IN const  McDbObjectIdArray& pickedEntities,
  IN const McGePoint3d& pickedPoint,
  IN CString& sNewToolTipString
  );

ActiveX的动态提示事件函数
CMxDrawOcxCtrl::FireMonitorInputPointToolTip(LONG lId, BSTR* pToolTip)

3. 增加图层管理功能和相关接口。如:
ActiveX的图层导出接口.

SHORT CMxDrawOcxCtrl::GetLayerIdArray(VARIANT* pArrayId);
SHORT CMxDrawOcxCtrl::GetLayerProp(LONG lId, BSTR* pszName, BSTR* pszLineTypeName,        SHORT* pIsOff, SHORT* pIsLock, SHORT* pIsFrozen, BYTE* pR, BYTE* pG, BYTE* pB);
SHORT CMxDrawOcxCtrl::SetLayerOff(LONG lId, SHORT iIsOff);

4. 导出dwf功能和相关接口。如:
 BOOL MxDraw::ExprotDwf(MXDRAWOCXHANDLE hOcx,
  LPCTSTR pszDwfFilePath
  );
5.  安装包中增加调试版lib文件和dll文件,方便控件使用者调试程序.

6.  增加放大镜功能

7.  修正一堆细节上的错误

本帖子中包含更多资源

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

x
 楼主| 发表于 2009-6-17 12:42 | 显示全部楼层

2009.06.16更新

2009.06.16更新下载地址:

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

1.增加 dwf的导入.

2.增加样条线绘制,

3.增加曲线采样和离散曲线功能,可以对样条线,圆弧,圆,椭圆,椭圆弧进行离散

4.增加用户坐标系

5.增加视区旋转显示,和旋转打印。

6.增加鸟瞰功能

7.增加对位图,jgp的显示,增加AcDbRasterImage类。

8.增加绘图属性工具条,可以设置绘图的当前的颜色,当前图层,当前线型.

9增加绘图工具条,主要用增加:绘线,矩形框,圆弧,圆,样条线,椭圆,椭圆弧,点,插入块,写文字,和插入图片按钮。

10.增加打开网上dwg图纸命令

11.增加关闭选择实体的图层命令

12.增加打开所有图层命令

本帖子中包含更多资源

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

x
 楼主| 发表于 2009-7-10 09:21 | 显示全部楼层

2009.07.09更新

新下载地址

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

1. 增加丰富的 COM 接口,这些接口类拟AutoCAD 的VBA接口,方便其它语言使用.
例如,VB中使用控件交互绘制直线的代码:


' 交互绘直线代码
ElseIf iCommandId = 4 Then
    Dim curSpace2 As MxDrawXLib.MxDrawBlockTableRecord
    Set curSpace2 = app.WorkingDatabase.CurrentSpace
    Set mxUtility = New MxDrawXLib.MxDrawUtility
    Dim getPt1 As MxDrawXLib.MxDrawPoint
    Set getPt1 = mxUtility.GetPoint(, Chr(13) + Chr(10) + "点取第一点:")
    If (getPt1 Is Nothing) Then
        MsgBox "用户取消.."
        Exit Sub
    End If
    Dim getPt2 As MxDrawXLib.MxDrawPoint
    Set getPt2 = mxUtility.GetPoint(getPt1, Chr(13) + Chr(10) + "点取第二点:")
    If (getPt2 Is Nothing) Then
        MsgBox "用户取消.."
        Exit Sub
    End If
    Dim newLine As MxDrawXLib.MxDrawLine
    Set newLine = curSpace2.AddLine(getPt1, getPt2)
    newLine.colorIndex = mcRed

End If

2. 增加更加完善的帮助文档

3. 增加删除实体功能

4. 增加夹点编辑功能

5. 增加编辑文字的演示例程代码


 

本帖子中包含更多资源

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

x
 楼主| 发表于 2009-8-20 20:16 | 显示全部楼层
2009.08.20更新更新下载地址:

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

1. 增加高质量绘图功能,该功能可以在控件配制文件中设置
ini文件如果设置了如下值,高质量绘图功能就激活了:
// 是否高质量进行绘图.激活该项,绘图质量提高,提显示速度下降。
("HighQualityDraw" "Y")
   高质量绘图功能激活后,图面的直线绘图光滑,不存在锯齿,文字显示也很圆滑,画面质量非常高,但绘图性能会有所降低,如果图面实体较多,可以把该功能禁用。在配制文件如下修改:
  ("HighQualityDraw" "N")
2. mxdrawx.ocx接口更加完善,增加C#例程。
A.交互绘直线:
private void DrawLine()
        {
            MxDrawUtility mxUtility  = new MxDrawUtility();
            MxDrawPoint point = (MxDrawPoint)(mxUtility.GetPoint(null, "点取第一点:") );
            if (point == null)
            {
                MessageBox.Show("用户取消..");
                return;
            }
            MxDrawPoint point2 = (MxDrawPoint)(mxUtility.GetPoint(point, "点取第二点:"));
            if (point2 == null)
            {
                MessageBox.Show("用户取消..");
                return;
            }
            MxDrawApplication mxapp = new MxDrawApplication();
            MxDrawDatabase mxdb = mxapp.WorkingDatabase();
            MxDrawBlockTableRecord curSpace = mxdb.CurrentSpace();
            MxDrawLine line = curSpace.AddLine(point, point2);
            line.colorIndex = MCAD_COLOR.mcRed;
           
            line.Close();
            curSpace.Close();
        }
B.增加把指定的实体,缩放到视区中显示。
C.增加读取扩展数据
   // 读扩展数据
        private void ReadXData()
        {
            MxDrawUtility mxUtility = new MxDrawUtility();         
            object getPt;
            MxDrawEntity ent = mxUtility.GetEntity(out getPt, "\n 选择读取扩展数据的实体:");
            if (ent == null)
            {
                return;
            }
            MxDrawResbuf xData = ent.GetXData("");
            if(xData.Count == 0)
            {
                MessageBox.Show("没有扩展数据");
            }
            else
            {
                // 向命令行窗口打印扩展数据。
                xData.PrintData();
            }
        }
D.写扩展数据
  // 写扩展数据
        private void WriteXData()
        {
            MxDrawUtility mxUtility = new MxDrawUtility();
            object getPt;
            MxDrawEntity ent = mxUtility.GetEntity(out getPt, "\n 选择读取扩展数据的实体:");
            if (ent == null)
            {
                return;
            }
            MxDrawResbuf xData = new MxDrawResbuf();
            xData.AddString("TestApp",1001);
            xData.AddLong(77677,1071);
            ent.SetXData(xData);
        }
E.遍历数据库的实体
private void GetAllEntity()
        {
            MxDrawApplication app = new MxDrawApplication();
            MxDrawUtility mxUtility = new MxDrawUtility();
            MxDrawBlockTableRecord blkRec = app.WorkingDatabase().CurrentSpace();
            MxDrawBlockTableRecordIterator iter = blkRec.NewIterator();
            if (iter == null)
                return;
            // 所有实体的id数组。
            List<Int32> aryId = new List<Int32>();
            int iLineNum = 0;
            for(;!iter.Done() ;iter.Step(true,false) )
            {
                MxDrawEntity ent = iter.GetEntity();
                if (ent == null)
                    continue;
                aryId.Add(ent.ObjectID);
                if(ent is MxDrawLine)
                {
                    MxDrawLine line = (MxDrawLine)ent;
                    iLineNum++;
                }  
            }
            String sT;
            sT = "发现" + aryId.Count + "个实体,其中有"+iLineNum + "个直线";
            MessageBox.Show(sT);
        }
F.插入图块,增加注释。
private void InsertNote()
        {
            String sNoteText = "这是一个注释";
            String sNote = "NoteBlockName";
            // 让用点取一个注释插入点。
            MxDrawUtility mxUtility = new MxDrawUtility();
            MxDrawPoint point = (MxDrawPoint)(mxUtility.GetPoint(null, "点取插入点 :"));
            if (point == null)
            {
                MessageBox.Show("用户取消..");
                return;
            }
            // 插入注释。
            MxDrawApplication app = new MxDrawApplication();
            
            MxDrawDatabase curDatabase = app.WorkingDatabase();
            MxDrawBlockTable blkTable = curDatabase.GetBlockTable();
            MxDrawBlockTableRecord curSpace = curDatabase.CurrentSpace();
            MxDrawBlockTableRecord blkRec = blkTable.GetAt(sNote,true);
            if(blkRec == null)
            {
                // blkRec == null 指名的块记录没有找到.
                // 插入一个新的块。
                String sBlkFilePath = axMxDrawX1.GetOcxAppPath() + "\\Blk\\TsgNote.dwg";
                // 把dwg文件导入到当前数据库。
                axMxDrawX1.InsertBlock(sBlkFilePath, sNote);
                blkRec = blkTable.GetAt(sNote,true);
            }
            if(blkRec != null)
            {
                // 在当前空间中插入一个块引用。
                curSpace.InsertBlock(point,sNote,4.0,0.0);
            }
            // 插入注释文本。
            point.y = point.y - 20.0;
            curSpace.AddText(point, sNoteText, 16, 0.0, MCAD_McHorizontalAlignment.mcHorizontalAlignmentCenter,
                MCAD_McVerticalAlignment.mcVerticalAlignmentTop);
        }
G.烁闪实体和停止烁闪例程
private void TwinkeEnt()
        {
            MxDrawUtility mxUtility = new MxDrawUtility();
            object getPt;
            MxDrawEntity ent = mxUtility.GetEntity(out getPt, "选择要闪烁的实体");
            if (ent == null)
                return;
            Int32 id = ent.ObjectID;
            ent.Close();
            axMxDrawX1.TwinkeEnt(id);
        }
        // 停止闪实体
        private void StopTwinkeEnt()
        {
            MxDrawUtility mxUtility = new MxDrawUtility();
            object getPt;
            MxDrawEntity ent = mxUtility.GetEntity(out getPt, "选择要停止闪烁的实体");
            if (ent == null)
                return;
            Int32 id = ent.ObjectID;
            ent.Close();
            axMxDrawX1.StopTwinkeEnt(id);
        }
3.增加控件的JavaScrip例程。

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 14:51 , Processed in 0.170684 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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