如何将此AutoCAD VBA代码转换为Python?

时间:2019-01-28 19:30:09

标签: python vba autocad

我正在尝试使用Python在AutoCAD中自动执行某些绘图,并且使用SelectOnScreen方法。 这是VBA中的代码:

Dim FilterType(0) As Integer
Dim FilterData(0) As Variant
FilterType(0) = 0
FilterData(0) = "TEXT"
selection.SelectOnScreen FilterType, FilterData

在Python中,我将其用作:

FilterType = win32com.client.VARIANT(VT_ARRAY|VT_I2, [0]) 
FilterData = win32com.client.VARIANT(VT_ARRAY|VT_VARIANT, ['TEXT'])
selection.SelectOnScreen(FilterType, FilterData)

,它可在AutoCAD中使用。 但是我想选择不同类型的对象(文本和多行文本),并且在VBA中有一个代码示例。那么如何将以下VBA代码转换为Python?

Dim FilterType(1) As Integer
Dim FilterData(1) As Variant
FilterType(0) = 0
FilterData(0) = "Text"
FilterType(1) = 0
FilterData(1) = "MText"
selection.SelectOnScreen FilterType, FilterData

这是我尝试过的Python代码尝试,但在AutoCAD中不起作用:

FilterType = win32com.client.VARIANT(VT_ARRAY|VT_I2, [0, 0]) 
FilterData = win32com.client.VARIANT(VT_ARRAY|VT_VARIANT, ["MTEXT", "TEXT"])
selection.SelectOnScreen(FilterType, FilterData)

当我尝试使用它时什么也没选择。

1 个答案:

答案 0 :(得分:1)

您的代码无法选择任何内容的原因是因为选择过滤器具有隐式的 AND 逻辑,因此对象不能同时为TEXT { {1}}。

由于选择过滤器将允许通配符匹配,因此可以使用以下内容:

MTEXT

或者,如果您不担心选择FilterType = win32com.client.VARIANT(VT_ARRAY|VT_I2, [0]) FilterData = win32com.client.VARIANT(VT_ARRAY|VT_VARIANT, ['TEXT,MTEXT']) selection.SelectOnScreen(FilterType, FilterData) 的可能性:

RTEXT

您也可以将逻辑运算符FilterType = win32com.client.VARIANT(VT_ARRAY|VT_I2, [0]) FilterData = win32com.client.VARIANT(VT_ARRAY|VT_VARIANT, ['*TEXT']) selection.SelectOnScreen(FilterType, FilterData) <OR与组代码OR>结合使用:

-4
相关问题