打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
CAD控件使用方法
userphoto

2015.01.28

关注


1        VC2008语言:一个简单的浏览dwg程序        3  (控件名称 看楼主头像)
2        HTML语言:网页中显示dwg控件        8
3        VB语言:使用控件简单例程说明:        10
4        Delphi语言:下使用控件        16
5        C++Bulider语言:下使用控件        22
6        C#语言: 下使用控件        24
7        VC6语言: 下使用控件        27
8        ARX编程接口: 简单使用        29
8.1        把dwg文件中的图元信息读到文本文件代码        29
8.2        绘一个简单表格的例程代码        32
8.3        插入图块的代码        33
8.4        读写扩展数据        36


1        VC2010语言:一个简单的浏览dwg程序
实现步骤:
步骤序号        操作内容        实现代码或结果抓图
1.                安装VC2010
安装VC2010服务包        我们将使用控件的DLL版本
2.                设置VC的INC,和LIB路径中包含控件的INC,LIB路径        1)        运行VC2010
2)        打开工程,点工程属性窗口

3)        在属性窗口中,设置INC,LIB目录
效果如下图:


4)        点击”确定”按钮退出设置对话框
3.                新建对话框工程View         

4.                在应用程类型选择对话框类型,字符串语言要选择“使用Unicode库”,因为近控件的字符串集是使用Unicode编码。
再点完成按钮建立工程完成。         

5.                在stdafx.h头文件中加入包含控件头文件代码         

6.                在CViewApp::InitInstance函数中加入对初化控件函数的调用         

7.                在CViewApp::InitInstance函数中最后,加入释放控件函数的调用。         

8.                给CViewDlg类增加控件窗口句柄的成员变量         

9.                在CViewDlg::OnInitDialog增加创建控件窗口的代码         

10.                编辑对话框资源,增加一个按钮,按钮名为”打开dwg文件”         

11.                在资对话框上双击按钮,为按钮增加单击函数, OnBnClickedOpendwgfile
Button,在单击函数中增加打开dwg图纸的代码         

12.                拷贝文件        把编译后生成的exe,发行版本拷贝到bin\vc100,调试版本拷贝到bin\vc100d
13.                运行程序        运行程序,并打一张dwg图的效果如图:


14.                参考例程        控件安装目录下的sample目录:
Edit,MxDrawCADTools,MxDrawOcx,ExApp,CustomEntity, MxExpressTools
2        HTML语言:网页中显示dwg控件
在网页中显示DWG文件,需要使用的控件ActiveX版。
在网页中显示dwg控件步骤如下
步骤序号        操作内容        实现代码或结果抓图
1.                注册控件,运行控件安装目录下的bin\vc100\RegistMxDrawX.exe向系统注册控件        操作情况抓图:

2.                用记事本,新建一个htm文件,并在文件编写使用控件代码        代码内容如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>MxDraw控件</title>
</head>

<body topmargin="0" leftmargin="0">
<p align="center">
<object classid="clsid: 74A777F8-7A8F-4e7c-AF47-7074828086E2" id="MxDrawXCtrl"  width=100% height=100%>
  <param name="_Version" value="65536">
  <param name="_ExtentX" value="24262">
  <param name="_ExtentY" value="16219">
  <param name="_StockProps" value="0">
  <param name="DwgFilePath" value="">
  <param name="IsRuningAtIE" value="1">
  <param name="EnablePrintCmd" value="0">
</object>
</p>
说明:
74A777F8-7A8F-4e7c-AF47-7074828086E2是控件的GUID。
3.                用IE打开htm文件,并单击按钮 打开一张dwg。        效果如下:

4.                在网页中,可以JavaScript语言判断系统有没有安装控件        function DetectActiveX()
{
    try
    {
       var comActiveX
= new ActiveXObject(“MXDRAWX.MxDrawXCtrl.1”);   
    }
    catch(e)
    {
       return false;   
    }
    return true;
}
5.                网页使用控件时,控件的发布方法        详细参考后面的“网页中使用控件”章节。
6.                参考例程        控件安装目录下的sample目录:
AspNet,ie

3        VB语言:使用控件简单例程说明:
实现步骤:
步骤序号        操作内容        实现代码或结果抓图
1.                注册控件,运行控件安装目录下的bin\vc100\RegistMxDrawX.exe向系统注册控件        操作情况抓图:


2.                新建一个VB工程         
3.                引用控件组件        A、        在工具箱窗口上右键弹出菜单上,运行“选择项”命令

B、        在组件窗口中选择MxDrawX控件,点确定就导入控件

C、        点击“视图”=》“对象浏览器”命令,通过VB的对象浏览可以看到控件的所有接口定义:如下


接口浏览抓图:



4.                增加控件到对话框上        把这个放到对话框下:


放上去后如图:

5.                增加交互绘直线功能        A.        在对话框上增加一个“绘直线按钮”
B.        在绘直线按钮点击命令中,执行一个控件命令:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        AxMxDrawX1.DoCommand(1)
End Sub
DoCommand函数功能是,执行控件命令,因为控件很多函数,特是与用户交互的函数都必须在控件命令中执行,所以这里调用DoCommand执行控件命令。
这里传的参数“1”是命令的ID号,这个ID号可以随便取值,有多个命令时,ID值不一样就行。

C.        增加控件命令执行事件处理函数:


D.        在命令执行函数中增加交互绘直线代码:
Private Sub AxMxDrawX1_ImplementCommandEvent(ByVal sender As System.Object, ByVal e As AxMxDrawXLib._DMxDrawXEvents_ImplementCommandEventEvent) Handles AxMxDrawX1.ImplementCommandEvent

        Dim app As MxDrawXLib.MxDrawApplication
        app = New MxDrawXLib.MxDrawApplication
        '绘制直线命令代码
        If e.iCommandId = 1 Then
            Dim curSpace2 As MxDrawXLib.MxDrawBlockTableRecord
            curSpace2 = app.WorkingDatabase.CurrentSpace

            Dim mxUtility As MxDrawXLib.MxDrawUtility
            mxUtility = New MxDrawXLib.MxDrawUtility

            Dim getPt1 As MxDrawXLib.MxDrawPoint

            getPt1 = mxUtility.GetPoint(, Chr(13) + Chr(10) + "点取第一点:")

            If (getPt1 Is Nothing) Then
                MsgBox("用户取消..")

                ' 释放非托管对象
                System.Runtime.InteropServices.Marshal.ReleaseComObject(curSpace2)
                curSpace2 = Nothing

                Exit Sub
            End If

            Dim getPt2 As MxDrawXLib.MxDrawPoint

            getPt2 = mxUtility.GetPoint(getPt1, Chr(13) + Chr(10) + "点取第二点:")

            If (getPt2 Is Nothing) Then
                MsgBox("用户取消..")

                ' 释放非托管对象
                System.Runtime.InteropServices.Marshal.ReleaseComObject(curSpace2)
                curSpace2 = Nothing

                Exit Sub
            End If

            Dim newLine As MxDrawXLib.MxDrawLine
            newLine = curSpace2.AddLine(getPt1.x, getPt1.y,getPt2.x, getPt2.y)

            newLine.colorIndex = MxDrawXLib.MCAD_COLOR.mcRed

            ' 释放非托管对象
            System.Runtime.InteropServices.Marshal.ReleaseComObject(curSpace2)
            curSpace2 = Nothing

            System.Runtime.InteropServices.Marshal.ReleaseComObject(newLine)
            newLine = Nothing

        End If
      
    End Sub
6.                运行效果如图         

4        Delphi语言:下使用控件
实现步骤:
步骤序号        操作内容        实现代码或结果抓图
1.                注册控件,运行控件安装目录下的bin\vc100\RegistMxDrawX.exe向系统注册控件        操作情况抓图:

2.                运行Delphi,导入控件的类型库        A.        运如图菜单命令,出来导出类型库对话框:

类型库导入对话框:


B.        点击 CreateUnit 按钮,对导入的控件接口创建代码定义:

C.        点击”Install…” 按钮把控件组件安装到Delphi中。


D.        安装完组件后,可以在控件面板,看到控件组件:


3.                新建一个Delphi 工程,把控件放到对话框中        新建一个Delphi工程


在对话框中,放入控件:




4.                增加一个按钮,读取图中属性块的属性        在对话框编辑器中增加一个按钮:

双击按钮,跳到按钮点击事件处理函数中,并增加代码:

procedure TForm1.Button1Click(Sender: TObject);
var
    modleSpace : IMxDrawBlockTableRecord  ;
    newIterator : IMxDrawBlockTableRecordIterator  ;
    pEnt        : IMxDrawEntity;
    pBlkRef     : IMxDrawBlockReference;
    pAttribute  : IMxDrawAttribute;
    tag         : WideString;
    text        : WideString;
    ii          : Integer;

   
begin
// 得到当前图形空间对象
modleSpace    := MxDrawApplication1.WorkingDatabase.CurrentSpace     ;
// 生成一个图纸空间对象浏览器
newIterator   := modleSpace.NewIterator  ;

// 遍历浏览器,得到每个实体
    if newIterator <> nil then
    begin
        while newIterator.Done() = False do
          begin
// 到实体对象
               pEnt := newIterator.GetEntity();
               newIterator.Step(True,False);
               if pEnt <> nil then
               begin

// 把实体对象转成块引用对象
               pEnt.QueryInterface(IMxDrawBlockReference, pBlkRef);
               if pBlkRef <> nil then
               begin
// 得到块对象名称
                    if pBlkRef.GetBlockName() = 'BLKNAME' then
                    begin
// 遍历块引用对象的属性
                         for ii := 0 to pBlkRef.AttributeCount -1 do
                         begin
// 得到属性对象
                            pAttribute := pBlkRef.AttributeItem(ii);
// 得到属性对象的文字,和tag.
                            tag := pAttribute.Get_Tag();
                            text := pAttribute.Get_TextString();
                            showmessage(tag + ':' + text);
                         end;
                    end;
               end;
               end;
          end;
    end;

     if text = '' then
     begin
        showmessage('没有发现块名为' + ' BLKNAME ' + '的块实体');
     end;
end;
5.                编译运行程序效果         
6.                参考例程        控件安装目录下的sample目录:
Delphi7Smaple,Delphi7Smaple2


5        C++Bulider语言:下使用控件
实现步骤:
步骤序号        操作内容        实现代码或结果抓图
1.                注册控件,运行控件安装目录下的bin\vc100\RegistMxDrawX.exe向系统注册控件        操作情况抓图:

2.                运行C++Bulider,导入控件的类型库        A.        运行如下图的菜单命令,出来导入类型库窗口

B.        类型导入窗口

C.        安装完组件后,可以在控件面板,看到控件组件:


3.                新建一个C++Bulider 工程,把控件放到对话框中        在对话框中,放入控件:

4.                参考例程        控件安装目录下的sample目录:
C++Bulider6
6        C#语言: 下使用控件
实现步骤:
步骤序号        操作内容        实现代码或结果抓图
1.                注册控件,运行控件安装目录下的bin\vc100\RegistMxDrawX.exe向系统注册控件        操作情况抓图:

2.                运行VS2008.net,新建一个工程        A.        在工具窗口键弹出菜单,点击选择项命令,如下图:

B.        弹出“选择工具箱项”窗口,选择“COM组件”Tab选项


C.        点击确定按钮,把控件放到工具箱中,如下图:


3.                把控件放到对话框中        如图:

4.                参考例程        控件安装目录下的sample目录:
CSharp,CSharpMidDoc,例程效果如下图:


7        VC6语言: 下使用控件
实现步骤:
步骤序号        操作内容        实现代码或结果抓图
1.                注册控件,运行控件安装目录下的bin\vc100\RegistMxDrawX.exe向系统注册控件        操作情况抓图:

2.                运行VC6,新建工程,并导入控件        点击如下图“菜单命令”,出现插入组件窗口


导入控件后的工具条:


3.                在stdafx.h文件中导入控件的类型库        代码如下:
#import "..\..\..\..\..\Bin\vc100d\MxDrawX.ocx" rename("GetObject", "MxGetObject") rename("DrawText", "MxDrawText") rename("GetClassName", "MxGetClassName") rename("SetProp", "MxSetProp") rename("GetProp", "MxGetProp") rename("GetTempPath", "MxGetTempPath")
4.                在对话框资源中插入控件        如下图,编译程序后运行:


8        ARX编程接口: 简单使用
控件目前提供常用的ARX编程接口,下面演示一些ARX编程接口的使用。
8.1        把dwg文件中的图元信息读到文本文件代码
在前面那个显示dwg文件的例子基础上,遍历McDbDatabse数据库中的模型空间实体,并把实体信息写到文本文件中。
代码说明如下:
功能说明        代码实现
取到当前活动控件的McDbdtabse数据库对象         

打开数据库中的模型空间块表记录         
创建块表记录遍历使用的迭代器         

遍历迭代器,输出图元信息         
释放迭代器的内存         

WirteEntityInfoToFile函数说明:        写直线信息:

写圆弧信息

写圆信息


写LWPL线信息


8.2        绘一个简单表格的例程代码
绘表过程,就是往McDbDatabase数据库添实体的过程,详细代码可参考控件安装目录下的samples\Edit目录代码,例程运行效如图:

绘表算法这里不再讲解,大家可去看例程代码实现,这里只讲些关于ARX操作的关键代码。
关键代码说明:
功能说明        代码实现
把图元对象添加数据库的模型空间中         

往数据库中画一条直线的代码         

居中方式绘制一个文字         


8.3        插入图块的代码
插入图块代码可参考控件安装目录下的samples\Edit目录代码,例程运行效如图:


关键代码说明:
功能说明        代码实现
得到插入图块的ID。         

构建一个拖放Jig对象,动态的确定块的插入点,拖放成功后,并插入图块。         

拖放类CInsertBlockJig的定义         

拖放类CInsertBlockJig的实现         


8.4        读写扩展数据
读写扩展数据代码可参考控件安装目录下的samples\Edit目录代码,例程运行效如图:

关键代码说明:
功能说明        代码实现
写扩展数据函数         

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
vc++6.0使用串口控件例程
Visual C++ 2010 MFC ActiveX 控件小结
转载一篇vc老鸟的心得体会:对零基础MFC学习者的一点建议:
VC中Tooltip的实现
VC tab control 使用简单例子
DDX 和 DDV 例程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服