【发布时间】:2021-04-11 20:38:31
【问题描述】:
受this answer 的启发,我正在尝试使用 python 和 win32com.client 来操作打开的 AutoCAD 文件,并将给定图层中的所有对象收集到一个选择集中:
from comtypes.client import *
from comtypes.automation import *
import win32com.client
acad = GetActiveObject("AutoCAD.Application")
doc = acad.ActiveDocument
SSet = doc.SelectionSets[0]
FilterType = win32com.client.VARIANT(VT_ARRAY|VT_I2, [8])
FilterData = win32com.client.VARIANT(VT_ARRAY|VT_VARIANT, ["Layer1"])
SSet.Select(5, FilterType, FilterData)
选择命令会出现以下错误消息:
ArgumentError: argument 2: <class 'TypeError'>: Cannot put win32com.client.VARIANT(8194, [8]) in VARIANT
我模糊地理解错误,因为它抱怨第二个参数的类型/格式(可能还有第三个,如果它已经那么远了)但我不明白为什么:它似乎告诉我它不能在需要 VARIANT 的插槽中接受特定的 VARIANT,但我不知道为什么。
请记住,我精通 python、AutoCAD 和老式 AutoLISP 编码,但对 win32com(或任何其他 com)、特别是变体或让 AutoCAD 工作几乎一无所知与蟒蛇。
(对于其他老派:我正在尝试模仿 SSGET 命令。)
【问题讨论】:
-
@LeeMac 抓住机会并伸出援手——刚刚注意到我引用的答案是你的。这些年来,我从您的网站学到了很多东西。