我尝试使用Python2.7从AutoCAD 2016中的XRecord检索2个输出数组,导入comtypes,第一个数组是整数数组(DXF组码),第二个数组是变量数组(XRecord的值)。在
与this question所追求的相反
感兴趣的方法是GetXRecordData
,它(根据AutoCAD的文档)如果成功则返回无,并且只接受2个输出参数。在
当我试图用像
DxfGrCd = []
vals = []
an_XRecord.GetXRecordData(DxfGrCd, vals)
再看DxfGrCd
和{[]
,同样的
也没有对它们应用任何更改,它们仍然等于{}
,即使字典和列表是可变的。在
在python中有什么方法可以处理这种方法吗?在
但是,我还没有从python中找到任何方法来实现这一点,因为存储在XRecords中的数据只是数字和字符串(在我的应用程序中),作为变量存储在XRecord中,所以我使用msexcel作为中间人传递数据。在
注意:我得到的所有数字都是检索出来的,但都是
floats
。在并且检索了所有字符串,但它们的类型是
unicode
。(您可以使用内置函数str()
轻松地将它们转换为string
)我是这样做的。在
第一:创建建导师工作手册(我们的中间人)
1-通常作为一个普通的windows用户,打开Excel,然后打开visualbasic编辑器,其中一种方法是转到开发人员选项卡,然后单击Visual Basic编辑器。在
2-在编辑器中,插入一个模块(一种方法是从菜单栏:insert>;module),然后左键双击它的default name,然后键入“modˉu-facility”,然后按Enter键。在
3-左键双击project viewer处的图标。在
4-将出现一个窗口,复制以下代码。在
5-从Tools>;References中选择这些引用名称,其他名称保留其以前的状态
^{pr2}$然后单击“确定”,然后按Ctrl+s保存。在
6-保存文件并将其命名为“facilitator”,将其保存在python文件的同一目录中。保存类型为Excel启用宏的工作簿(扩展名为.xlsm)
7-在python文件中,定义检索XRecord数据的函数如下,我将告诉您它的参数是什么:
第二:保险什么
注意:以下所有步骤必须在
XRecord_return
的定义之前1-AutoCAD必须使用}之类的行从python实例化,具体取决于导入和导入表单[}],这里,导入范围是python文件的模块范围。在
autocad = CreateObject("AutoCAD.Application.20",dynamic=True)
或{import comtypes.client
或{2-使用
xl = CreateObject("Excel.Application")
实例化Excel,并使用3-您必须知道XRecord中存储了多少个元素(不包括关联的DXF组码的数量),这个数量的元素就是您将提供给
XRecord_return
作为其size
参数的值。在例如,存储
3.0 "abc" 5
并具有相应的DXF组码1 2 3
的XRecord的大小是3,而不是6。在第三:向建导师工作手册提供数据
我们只需要它的第一个工作表,你必须提供以下内容数据:-在
1-图纸到单元格“A1”的完整路径/目录。在
如果有
Document
对象,要获得图形的完整路径,可以从属性FullName
获取它。这个值是您将提供给XRecord_return
作为其namefile
参数的值。在分配,例如:
xl.Range["A1"].Values[xlRangeValueDefault] = filepath
2-单元格“A2”的XRecord句柄值,可以从XRecord的属性
Handle
中获取。此值将作为其“handle”参数提供给XRecord_return
。在{cd22>分配给}
3-之后,无论您在哪里需要获取XRecords数据,都可以调用
XRecord_return
函数,比如输出是包含相应数据的列表。在
但不是最后
当您完成使用Excel从所需数量的XRecords中检索数据后,请使用
xlwb.Close(SaveChanges=0)
关闭协导员工作簿相关问题 更多 >
编程相关推荐