Autodesk Map在VB.NET中的二次开发(1:入门)

原创 2007年10月14日 21:50:00
近日为了简化工作,用Autodesk map 3D 2005做了个小程序,放上来分享一下,不足之处望高手指正.
为了方便没装CAD的朋友,先放一个CAD_Object_Mode,更为详细的就暂且不放了.
CAD版本:Autodesk map 3d 2005
开发环境:vb.net 2005
Autodesk_Object_Mode
 简要说明:
Application:AutoCAD 应用程序实例
Documents: 在当前进程中所有打开的AutoCAD图形的集合,可打开\添加\关闭图形文件
Document:这个当然是CAD中的图形了
ModelSpac:该集合表示了所有模型空间的对象。在模型空间中添加新的对象用下表中的 Add* 方法
首先:在VB.NET中连接CAD,为了方便暂不对同时打开多个文档的情况进行处理,如果想要新建环境或文档可使用NEW或Application.Documents 中的ADD/OPEN等.
    Dim AcadApp As Autodesk.AutoCAD.Interop.AcadApplication
    
Dim AcadDoc As Autodesk.AutoCAD.Interop.AcadDocument
    
Dim AcadMap As AutocadMAP.AcadMap

Try '连接AutoCAD Map 3D 2005,如果错误则退出
            AcadApp = GetObject(, "AutoCAD.Application")
            AcadMap 
= AcadApp.GetInterfaceObject("AutoCADMap.Application")
        
Catch '如果连接失败则提示,并退出过程
            MessageBox.Show("与Autodesk Map 3D 2005连接失败,关于此错误的详细信息请与管理员系统""系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
            
Exit Sub
        
Finally
    
'自已定义处理代码
        End Try

        
'检查CAD中图形文件数量,并激活
        Dim MapDocNuber As Integer 'CAD当前工作环境中打开的文档数量
        MapDocNuber = AcadApp.Documents.Count
        
Select Case MapDocNuber
            
Case 1
                AcadDoc 
= AcadApp.ActiveDocument '激活当前文档
            Case 0
                MessageBox.Show(
"当前CAD中未打开文档,请重置工作环境""系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error)
             '自定义处理过程
            Case Is > 1
                MessageBox.Show(
"当前CAD中打开了多个文档,请重置工作环境""系统提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
               '自定义处理过程
        End Select
通过以上过程即可连接到Autodesk map 3d 2005.
由于是本程序是为了简化大批量数据处理,对于利用二次开发进行绘图也就不进行深入讨论了,其实要进行绘图等操作每个对象都有如add/move/copy/delete等方法很简单,不同类型的对象基本上都差不多,只是需要指定的属性不同而已.
即然这个程序主要是用于数据处理,那么就一定会用到历遍ModelSpac.
方式有以下两种
一:迭代循环(比较推荐用这个)
For Each MspaceObj In AcadDoc.ModelSpace
  MspaceObj .要获取的属性
  '自定义其它的处理代码
Next
二:循环每个对象(这个改改就能用到别处:比如做个迷你设计中心获取块名呀图层呀等等.我用这个循环来获取THICKNESS值居然出现的数组,希望高手给予指教)
for i = 0  to AcadDoc.ModelSpace.count - 1 'AcadDoc.ModelSpace.count为当前图形中对象的个数
 
Acadobj.AcadDoc.ModelSpace.Item(i).要获取的属性
 
'自定义其它的处理代码
next
由于CAD中不同对象的属性不太相同(具体的帮助里有就不多说了),可使用Select Case 语句来处理,但一定要注意对象类型是分大小写的,写错了可不行(我做时不就小心写错了一个,郁闷了好久才找到问题)
 Select Case EntType
                
Case "AcDbText""AcDbPoint""AcDbPolyline""AcDbLine" 
          EntThickness 
= MspaceObj.thickness
                   ......
                
Case "AcDbBlockReference"
                    EntBlkName 
= MspaceObj.Name
                    ......
                
Case Else
     ......     
End Select
这个是常见的CAD对象类型,当然这个不全,还有很多呢 .(CAD帮助中有详细的).
1 AcDbText             文字
 2 AcDbPoint            点
 3 AcDbPolyline         多段线
 4 AcDbLine             线
 5 AcDbBlockReference   块
 6 AcDb2dPolyline       2D多段线
 7 AeccDbRoadwayState   
 8 AcadCircle           圆
 9 AcadEllipse          椭圆
 10 AcadHatch            
 11 AcadMInsertBlock     插入块
 12 AcadMtext            多行文字
 13 AcadArc              弧
利用以上循环可获取或改变特定对象的属性,如果改变属性的话最好用一下UPDATA(帮助里说的,反正我没用也能改.)
如果不需要太多的功能,后面放个数据库来获取数据或设定条件指赋值,这些基本上也就足够了
有点困了,明天还要上班,关于MAP方面的开发如附加OD表什么的下回再写吧.(个人感觉除了附加OD表,其它的用处不大,Autodesk map做已经很好了)
最后放一个成果图吧,没学会编程第一次做,做的不好见笑了.
实用工具

集合详解(一)----Collection和Map接口

在我们编程的时候,有时候需要集中存放多个数据,可以用数组来保存多个数据,但是数组的长度是不可变的,一旦数组的长度确定了之后就无法再改变,如果要保存可变长度的数据的话,数组肯定是不行的了。而且数组也无法...
  • u010853701
  • u010853701
  • 2016-07-25 11:07:32
  • 2740

ArcGIS二次开发编程实例 基于VB

  • 2012年07月19日 17:31
  • 2.3MB
  • 下载

VB+Mapobject2.0自定义地图图标

 MapObjects2 allows you to write your own symbol rendering code in an integrated manner. To do so, y...
  • swfcsunboy
  • swfcsunboy
  • 2008-02-15 11:52:00
  • 1695

vb.net调用百度地图

  • 2015年09月03日 20:14
  • 6KB
  • 下载

VB中实现地图操作的方法

1.       在VB的Form设计时,加入一个picturebox控件,这个控件作为OLE容器,MapInfo中的地图将在该控件上显示。2.       执行VB的函数Createobject(“...
  • ww303875615
  • ww303875615
  • 2010-04-27 10:13:00
  • 3486

VB调用百度地图示例

  • 2012年03月27日 11:28
  • 6KB
  • 下载

基于.NET平台的MapX开发

基于.NET平台的MapX开发郑军,陈正阳郑军,陈正阳(中南大学信息物理工程学院,湖南长沙410083) 摘 要:在.NET平台上开发MapX组件是一个较新的课题。文中简要阐述了在.NET平台上开发M...
  • jerry2005
  • jerry2005
  • 2005-03-29 12:23:00
  • 3334

vb.net Bitmap Drawing

Public Class Form1 Dim BMP As New Drawing.Bitmap(640, 480) Dim GFX As Graphics = Graphics.FromImag...
  • a771948524
  • a771948524
  • 2013-08-14 15:06:37
  • 2040

Autodesk Map在VB.NET中的二次开发(1:入门)

近日为了简化工作,用Autodesk map 3D 2005做了个小程序,放上来分享一下,不足之处望高手指正.为了方便没装CAD的朋友,先放一个CAD_Object_Mode,更为详细的就暂且不放了....
  • sjzwl
  • sjzwl
  • 2007-10-14 21:50:00
  • 3539

《Autodesk Revit二次开发基础教程》书籍终于上架了

由Autodesk中国研究院Revit开发团队的几位同事一起编撰的《Autodesk Revit二次开发基础教程》于今天在天猫同济大学出版社旗舰店正式上架,购买链接在这里: https://detai...
  • lushibi
  • lushibi
  • 2015-09-22 14:04:50
  • 8298
收藏助手
不良信息举报
您举报文章:Autodesk Map在VB.NET中的二次开发(1:入门)
举报原因:
原因补充:

(最多只允许输入30个字)