[求助]关于vba图层和剪断的求助
前面的帖子我看了大部分,但是,有些地方我还是不太明白,而且我也没有相关的中文参考资料作为参考 :(请斑竹们帮帮忙,告诉我最简短的代码示例或者告诉我从那里获得相关的帮助——我上次就是得到 mccad 的指引,得到了"IntersectWith 方法"的帮助文件……问题一:如何进行层复制,即,将某一层或几层复制到另外一个打开的文件中。看前面的帖子,可以利用过滤机制,可我不太明白,请指点一二。
问题二:如何复制某一区域内的所有实体,比如一个四方的区域中的所有pline。前面的帖子提到,创建一个选择集,然后判断是否在里面,如果是 pline 是否可以判断起终点,如果是插入的块是否判断插入点(或者是中心)
问题三:如何剪断。看到了很多关于类似 trim 功能的方法,能不能告诉我一些关于此类开发的参考资料,或者各位大虾拿出来共享的例子?
谢谢,斑竹对兄弟的照顾。 问题一:建议搞成块后插入到另一个文件中。
问题二:构建矩形使用两个对角点,比如要选择区域内的直线,对角点也就是直线的两端点。
Sub xuanze()
Dim SSetObj As AcadSelectionSet
On Error Resume Next
Set SSetObj = ThisDrawing.SelectionSets("Test") '创建选择集
If Err Then
Err.Clear
Set SSetObj = ThisDrawing.SelectionSets.Add("Test")
End If
SSetObj.Clear
Dim Pt1 As Variant
Dim Pt2 As Variant
'Pt1 = ThisDrawing.ModelSpace(0).StartPoint '赋值,使用已知的两个点
'Pt2 = ThisDrawing.ModelSpace(0).EndPoint
Dim groupCode(0) As Integer
Dim dataCode(0) As Variant
groupCode(0) = 0 '创建只选择直线的过滤机制,组码为0,值为"Line"
dataCode(0) = "Line"
SSetObj.Select acSelectionSetWindow, Pt1, Pt2, groupCode, dataCode '使用窗选
Dim EntObj As AcadEntity
For Each EntObj In SSetObj
'循环选择集,根据两点判断是否是需要的直线,是则删除,考虑到精度,可能还要加上误差判断。
If EntObj.StartPoint(0) = Pt1(0) And EntObj.StartPoint(1) = Pt1(1) _
And EntObj.EndPoint(0) = Pt2(0) And EntObj.EndPoint(1) = Pt2(1) Then
EntObj.Delete
Exit For
End If
Next
End Sub
问题三:http://www.mjtd.com/a2/list.asp?id=30 谢谢!Thankx......
前面提到过 CopyObjects 方法,能不能给点提示? CopyObjects方法论坛中有两个程序涉及到,你搜索一下,应该可以明白 mccad 我搜过了,代码一样(非常类似)
我使用的是vba编程,只是在
Set ss = CreateSelectionSet
ss.SelectOnScreen
ThisDrawing.CopyObjects ssArray(ss), doc.ModelSpace
句时,老是出错……
CreateSelectionSet 是在什么情况下才能用?为什么老是提示错误,是否应该有一个自定义的方法或函数?
thisdrawing.copyobjects ssarray(ss),doc.modelspace 一句也出错。在同一幅图形内可以复制,代码调试已经通过了,但是,如果两幅打开的图形之间复制就不行了……cad 帮助文件也只给出了类似代码。
ss.selectonscreen 8,"LayerName" 一句也无法调试通过……
我好郁闷啊 由于论坛提问偶尔有重复性,所以有相似甚至相同是很正常的。
你的第一个问题,应该是那个选择集已经存在,所以提示出错,你可以参考上面的代码,那个有排错的功能,你也可以程序后面加上:ss.delete直接删除选择集以免再次运行出错。 不是原有记录集已存在的问题,我已经处理了这个例外,可是……
我在试试吧,不行的话,只好另寻它路了:( CreateSelectionSet和ssArray都是自定义函数,你可以在实用函数集中找到。
CreateSelectionSet是创建一个空白选择集的函数
ssArray是将选择集对象放到一个数组中 谢谢 mccad :)
感觉应该是有这么一个自定义的函数的,只是没想到竟然真的是。我会从实用函数集中找一下的……
再次感谢!
页:
[1]