hellomoshi 发表于 2019-4-15 13:10:28

【求助】如何通过过滤器选择多段线?

Sub Ch4_FilterOrTest()
   Dim element As AcadEntity
   Dim pl As AcadPolyline
   Dim sstext As AcadSelectionSet
   Dim FilterType(3) As Integer
   Dim FilterData(3) As Variant
   Set sstext = ThisDrawing.SelectionSets.Add("SS6")
   FilterType(0) = -4
   FilterData(0) = "<and"
   FilterType(1) = 0
   FilterData(1) = "3dpolyline"
   FilterType(2) = 8
   FilterData(2) = "0"
   FilterType(3) = -4
   FilterData(3) = "and>"

   sstext.SelectOnScreen FilterType, FilterData
   Count = sstext.Count
   MsgBox Count
   
   For Each element In sstext
   element.color = acGreen
   Next element
   sstext.Delete
End Sub
MsgBox 返回的值为0

woaishuijia 发表于 2019-4-15 15:59:58

没有"3dpolyline"这种东西,只有"polyline"

hellomoshi 发表于 2019-4-15 17:19:45

woaishuijia 发表于 2019-4-15 15:59
没有"3dpolyline"这种东西,只有"polyline"

有的 vb参考中的对象中就有

woaishuijia 发表于 2019-4-16 05:53:42

本帖最后由 woaishuijia 于 2019-4-16 06:03 编辑

hellomoshi 发表于 2019-4-15 17:19
有的 vb参考中的对象中就有
过滤器使用的是DXF组码,要到DXF参考中去找,而不是VB参考



你要的东西在这里,它叫“POLYLINE”



hellomoshi 发表于 2019-4-16 08:49:28

感谢楼上老哥 我用了POLYLINE也不行 ,最后用LWPOLYLINE成功了。不知道他们的区别在哪里。

woaishuijia 发表于 2019-4-16 11:45:48

CAD有两种“多段线”:
一种是“多段线”(优化多段线,LWPOLYLINE),只能在二维平面画,每个节点坐标都是二维坐标(只有X、Y,没有Z);在图形界面画多段线用“pline”命令;多段线可以包括“圆弧”。
另一种是“三维多段线”(DXF对象类型POLYLINE,ActiveX对象类型3DPolyline),每个节点坐标都是三维坐标;在图形界面画三维多段线用“3dpoly”命令;三维多段线可以在三维空间任意转折,但各段只能由直线组成,没有“圆弧”。
你用LWPOLYLINE成功了,说明你在图形界面选择的是用“pline”命令画的多段线,而不是用“3dpoly”命令画的三维多段线;P

hellomoshi 发表于 2019-4-16 14:40:20

woaishuijia 发表于 2019-4-16 11:45
CAD有两种“多段线”:
一种是“多段线”(优化多段线,LWPOLYLINE),只能在二维平面画,每个节点坐标都 ...

感谢老哥 分析的很透彻 确实是用pline画的

renhaitao_nice 发表于 2019-5-15 12:13:08

楼上讲的真叫透彻,瞬间醍醐灌顶!
页: [1]
查看完整版本: 【求助】如何通过过滤器选择多段线?