allpurpose 发表于 2009-6-1 01:04:00

请教,我该如何选择布局里面的所有图形


想用vb查看dwg文件,我做一个列表框,枚举出所有的布局添加到list,包括模型,然后点击列表框的时候,在picture显示出对应布局的图形画面。
       我的思路是:
       当即据列表框时激活对应的布局,然后用AcadSelectionSet选择集选择所有的图象,在用Export方法导出文件bmp文件。再显示picture图象框。现在遇到个问题,就是好难控制选择布局里面的所有图形。我用sset.Select (acSelectionSetAll) 方法,却只选择只画在布局的图片,画在模型的就是选择了。通过发送命令,CadDoc.SendCommand "ai_selall "。这倒可以,不过,老是需要进入autocad按一下回车,不然就提示,程序正忙,请切换到。郁闷阿。不知道有什么方法可以选择布局的所有图形?下面是一段函数。

Private Sub List1_Click()
    Dim s$, fil$
    Dim Layout As AutoCAD.AcadLayout
    Dim sset As AcadSelectionSet
   
    If List1.ListIndex <> -1 Then
      s = List1.List(List1.ListIndex)
      CadDoc.ActiveLayout = CadDoc.Layouts(s)
      Set sset = CadDoc.SelectionSets.Add("NEWSSET") '添加新的选择集
      fil = "c:\test"
      CadApp.ZoomAll
      sset.Select (acSelectionSetAll)
      'CadDoc.SendCommand "ai_selall " '& vbCr
      'CadDoc.SendCommand vbCr
      CadDoc.Export fil, "bmp", sset
      Picture1.Picture = LoadPicture(fil & ".bmp")
      'Shell fil & ".bmp"
      CadDoc.SelectionSets.Item("NEWSSET").Delete
    End If
   
End Sub

mccad 发表于 2009-6-1 06:17:00

你试试布局的Block属性,它得到的是布局几何图形所在的图块名。

gulong2001 发表于 2009-6-1 11:12:00

<p>前几天我也问过和这个相似的问题见:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=75971</p><p>你可以直接得到第i个布局中第j个图元:layouts.item(i).block.item(j)</p><p>还有注意的是这个i和你的布局选项卡是不一定对应的。选项卡顺序和里面的Layout.TabOrder对应。</p>

gulong2001 发表于 2009-6-1 11:22:00

<p>刚得到lzh741206斑竹在别的帖子的指点</p><p>我现在认为可以这样:</p><p>Dim blkdef As AcadBlock<br/>Set blkdef = ThisDrawing.Layouts.Item("布局1").Block<br/><br/></p>

allpurpose 发表于 2009-6-4 12:51:00

<p>&nbsp;&nbsp;&nbsp; 先谢谢楼上几位的热心。这几天有点忙,所以没有上来看看帖子。呵呵</p><p>&nbsp;&nbsp;&nbsp;&nbsp;不过据我知道,布局表现为 块,但视口里面的图形确是模型的,但如果只选择为 布局的块,是否能够连同视口里面的图形选中吗?我测试下。再回来报告</p>
页: [1]
查看完整版本: 请教,我该如何选择布局里面的所有图形