建筑新时代论坛's Archiver

【热门搜索】建材Autocad膜结构钢结构加固招聘工程机械测绘建筑材料工程造价建筑施工图

lee_2007 发表于 2007-10-29 08:09

如何用excelvba编写初始化cad的代码啊

如何用excelvba编写初始化cad的代码啊,判断当前是否打开cad,若打开则执行操作,若没打开,则自动打开cad程序

sd6310514 发表于 2007-10-30 12:44

打开EXCEL VBA编辑,工具>>>>引用>>>>>把autoCAD2007(我的是2007)引用钩上点确定。
然后就定义一些对象变量来连接CAD了具体的如下:
Sub text()
    Dim acadApp As AcadApplication
    Dim acaddocs As AcadDocuments
    Dim acaddoc As AcadDocument
    On Error Resume Next
    Set acadApp = GetObject(, "AutoCAD.Application")
    If Err Then
        Err.Clear
        Set acadApp = CreateObject("AutoCAD.Application")
        If Err Then
            MsgBox Err.Description
            Exit Sub
        End If
    End If
    ‘上面的意思大概是如果没有创建连接就创建一个连接 _
如果有一个连接就获得该连接 (PS:我也刚学VBA不是太清楚,有错误就原谅下,大家一起来学习!哈哈)
    Set acaddoc = acadApp.ActiveDocument   
    acadApp.Visible = True   'CAD可见,如没有这句CAD在后台运行,在进程中可以找到
    acadApp.WindowState = acMax   '最大化
  要在CAD画图的话可以这样:
  Dim lineobj As AcadLine
    Set lineobj = acaddoc.ModelSpace.AddLine(Spoint, Epoint)
    这是在模型空间中画一条直线,这跟CAD的VBA有一点不一样。
以上可以满足楼主的要求吗?有了上面的连接,其他的就像在CAD中的VBA操作了,只是thisdrawing这里变成了acaddoc了,可以利用acaddocs.open来打开一个CAD文件。

lee_2007 发表于 2007-11-1 14:32

可以了,感谢帮助, 我用excel编了个写入cad的工具,可是我不知道如何是外框线为粗线,最好指定线重

sd6310514 发表于 2007-11-2 16:35

第一种方法:
    '创建图层
  Dim layerObj1 As AcadLayer
    Dim layerObj2 As AcadLayer
    Dim layerObj3 As AcadLayer
    Set layerObj1 = acaddoc.Layers.Add("标注")  '创建标注图层 "标注"为图层名
    Set layerObj2 = acaddoc.Layers.Add("地面线")  '同上
    Set layerObj3 = acaddoc.Layers.Add("网格线")  '同上
    layerObj1.Color = acRed  '设定颜色
    layerObj2.Color = acBlue  
    layerObj3.Color = acGreen
    layerObj1.Lineweight = acLnWt000  '设定线宽了
    layerObj2.Lineweight = acLnWt005
    layerObj3.Lineweight = acLnWt009
    假设你画了一条直线,用楼上的方法是要定义一个叫lineobj(举个例子)变量,这样只要lineobj直线指定到不同的图层,如:
  lineobj.layer="标注"
    这时这条线就有了图层上的所有属性了。
  第二种方法就不要创建图层了(看个人爱好了)直接用:
  lineobj.Lineweight =acLnWt005
    个人推荐第一种方法,这样方便管理和修改,如果仅仅指定一两条线就有第二种吧!
不知楼主想编一个什么程序,可以说说你的想法。这样可以提供比较好的建议。呵呵我也才学CAD,如有错误还请指出啊!

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.