RICVBA 发表于 2014-9-18 13:33:51


这是可能的,但首先我要警告您:并非每个对象都支持“长度”属性。因此,不过滤选择集可能会导致意外错误。
如果您仍要继续选择所有内容,请更仔细地查看我的代码:我没有使用“SelectOnScreen”方法。
。另外,查看联机AutoCAD ActiveX和VBA参考“selectionset对象”主题,您会发现:
选择方法
选择对象并将其放入选择集中
签名
对象。选择模式[,点1][,点2][,过滤器类型][,过滤器数据]
对象
选择集
此方法适用的对象。
模式
AcSelect枚举;仅输入<br>acSelectionSetWindow<br>acSelectionSetCrossing<br>acSelectionSetPrevious<br>AcselectionsSetLast<br>顶点1<br>变量(双精度数组);仅输入;可选<br>指定Point1的三维WCS坐标或坐标数组。有关Point1的正确使用,请参见模式定义。<br>Point2<br>变体(三元素双数组);仅输入;可选<br>指定点2的三维WCS坐标。有关点2的正确使用,请参阅模式定义。<br>过滤器类型<br>整数;仅输入;可选
指定要使用的过滤器类型的DXF组码
过滤器数据
变体;仅输入;可选<br>要筛选的值。<br>备注<br>此方法支持筛选机制
以下选择模式可用:
窗口
选择角点由点1和点2定义的矩形区域内的所有对象。
交叉
选中角点由点1和点2中定义的矩形区内的对象,并与之交叉。
Previous
选择最近的选择集。如果在图纸空间和模型空间之间切换并尝试使用选择集,则忽略此模式
Last
选择最近创建的可见对象
All
选择所有对象
有关更多选择模式选项,请参见SelectByPolygon、SelectAtPoint和SelectOnScreen方法
您还可以找到以下示例
Sub-example_Select()
,该示例将成员添加到选择集中,首先通过交叉和
,然后通过过滤圆
创建选择集
将ssetObj设置为AcadSelectionSet
集ssetObj=ThisDrawing.SelectionSets。添加(“SSET”)
将位于(28,17,0)和
'(-3.3,-3.6,0)
交叉点内的所有对象添加到选择集中,将变暗模式作为整数
变暗角落1(0到2)作为双
变暗角落2(0到2中)作为双
模式=acSelectionSetCrossing
角落1(1)=28:corner1(1)=17:Cornel1(2)=0
拐角2(0)=-3.3:Cornerge2(1) =-3.6:corner2(2)=0。选择模式,corner1和corner2<br>将位于(28,17,0)和<br>’(-3.3,-3.6,0)交叉点内的所有圆添加到选择集中,方法是从当前图形中过滤<br>Dim gpCode(0)作为整数<br>作为变量的Dim dataValue(0)<br>数据值(0)=“圆”<br><Dim groupCode作为变量,dataCode作为变量<br>groupCode=gpCode<br>dataCode=dataValue<br>ssetObj。选择模式、角落1、角落2、组码、数据码
结束子节点

orcan 发表于 2014-9-18 14:17:35

感谢Ric帮助我在Autocad屏幕上选择所有内容,我找到了另一个解决方案“设置过滤标准”gp code(0)= 0
data value(0)=“LINE”

“选择lw折线”ssetObj。选择acSelectionSetAll,,,gpCode,dataValue
根据您的建议,我使用了filter和acselectionall,让autocad自动选择所有内容
并将它们放入一个集合中。干杯。

RICVBA 发表于 2014-9-18 15:34:08

就这样!祝贺

tecnica2 发表于 2016-11-4 13:19:42

大家好,
在互联网上搜索了几个小时后,我发现了这个巨大的话题。这几乎就是我需要的
首先,我需要打开dxf文件而不是dwg文件。我试图改变这一点,但失败了
在dxf文件中,我有连续线和中心(x2)线
连续线用于等离子切割,中心(x2)线用于弯曲线
类似于:
dxf1:
总切割线长度=600mm
切割线数量=7
弯曲线总长度=200
折弯线数量=3
我非常感谢您能为我提供的任何帮助。
提前感谢
页: 1 [2]
查看完整版本: 从Autocad到Excel的长度计算