Matersammichman 发表于 2006-6-21 07:18:59

使用VBA部分插入dwg

我通常使用宏将包含所有分层信息的dwg部分插入到dwg中,然后取消。这样可以防止dwg在获取所有分层数据时包含任何dwg图元。我的宏代码如下:
^C^C_ i;无论什么图纸^C^C^C ^C_-清除;bn^C^C_-清除;bn^C^C_-清除;bn^C^C_qsave^M
我想在VBA中执行相同的任务,但无法编写代码来执行部分dwg安装。
帮助?。。。请
**** Hidden Message *****

hendie 发表于 2006-6-21 08:20:16

为什么要费心插入图纸,只需编写一个vba应用程序即可创建必要的图层

Matersammichman 发表于 2006-6-21 08:36:17

因为要重写我所有的分层,颜色,线型,情节/noplot等...因为我所有的AEC学科都需要一天的大部分时间。

Bryco 发表于 2006-6-21 09:57:13

您还可以插入一个只有层的空,然后删除块ref。
然后删除块(先删除块中的所有ent)。
至于您的图层需要一天时间。您可以制作一个包含所有图层信息的txt文件(几分钟的代码),然后阅读它。

Matersammichman 发表于 2006-6-22 21:04:10

从图形克隆到另一个图形:
Public Sub CloneLayers()
    Dim pAxDoc As AxDbDocument
    ' Create an instance...
    Set pAxDoc = New AxDbDocument
    ' Load in the drawing containg the layers...
    pAxDoc.Open "C:\Temp\CloneLayersTest.dwg"
   
    ' Delcare an object array to hold the layers...
    Dim pLayersToClone() As AcadLayer
    Dim i As Integer
    Dim pAxLayer As AcadLayer
   
    i = -1
    For Each pAxLayer In pAxDoc.Layers
      i = i + 1
      ReDim Preserve pLayersToClone(i)
      Set pLayersToClone(i) = pAxLayer
    Next
   
    ' Clone 'em!
    pAxDoc.CopyObjects pLayersToClone, ThisDrawing.Layers
   
    ' Clean up
    Set pAxDoc = Nothing
End Sub

确保设置对AutoCAD/ObjectDBX Common 16.0类型库的引用。干杯,格伦。

hendie 发表于 2006-6-23 07:08:53

谢谢你的密码,格伦
代码1]
上面,显然,是对Glenn的子的快速编辑,以测试并查看它是否有效,它确实如此。 我可能会重命名一些东西以适应我的惯例,但它非常出色。

Matersammichman 发表于 2006-6-23 12:41:55

我也想这么做,但你抢先了我一步。

hendie 发表于 2006-6-23 15:15:17

不客气,鲍勃。事实上,我已经做了几年同样的事情(导入页面设置)
这意味着,如果要在同一图形上连续两次运行代码以导入页面设置,然后启动页面设置对话框,您将看到重复项出现。在作为安全措施导入之前,我会删除所有页面设置<使用C#有一种更好的方法,但是先删除是可以的。如果需要的话,我可以解释更多。

Matersammichman 发表于 2006-6-23 16:13:30

感谢您的提示,绝对要知道。 当我开始深入研究C#时,只要我能找到时间,我可能会以更好的方式打击你。
页: [1]
查看完整版本: 使用VBA部分插入dwg