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

2024-09-29 19:25:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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中,我将其用作:

^{pr2}$

它可以在AutoCAD中工作。 但是我想选择不同类型的对象(文本和mtext),我有一个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)

当我尝试使用它时,没有任何选择。在


Tags: 代码textasintegervbawin32comvariantdim
1条回答
网友
1楼 · 发布于 2024-09-29 19:25:59

因为和选择都是一个的逻辑。在

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

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

或者,如果您不担心选择RTEXT的可能性:

^{pr2}$

也可以将逻辑运算符<OROR>与组码-4结合使用:

FilterType = win32com.client.VARIANT(VT_ARRAY|VT_I2, [-4, 0, 0, -4]) 
FilterData = win32com.client.VARIANT(VT_ARRAY|VT_VARIANT, ['<OR', 'TEXT', 'MTEXT', 'OR>'])
selection.SelectOnScreen(FilterType, FilterData)

相关问题 更多 >

    热门问题