首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python和VBA宏中的AutoCAD句柄与HandelToObject矛盾

python和VBA宏中的AutoCAD句柄与HandelToObject矛盾
EN

Stack Overflow用户
提问于 2017-08-23 19:33:21
回答 1查看 455关注 0票数 0

我试图借助VBA宏和这个XRecords中提供的python函数,在python脚本中获取回答的数据DXF组代码+值。

在python中,我使用XRecord属性获取Handle句柄,然而,并不是所有XRecords都成功地返回了它们的数据,并且在VBA宏的Set myXRecord = mydoc.HandleToObject(handler)行中抛出了一个未知句柄错误。

我寻找了一个解释,其中一个是这一个,但我的情况不同,因为它首先使用XRecord的句柄,然后提供它,因此,对于如何在AutoCAD绘图中创建句柄,不作任何假设。

那么,一个HandleToObject如何返回它的句柄,那么方法就无法从它的 Handle 属性的值中找到XRecord?!

编辑:-

我猜问题在于HandleToObject本身,我让python预览调用错误的句柄(例如"3E7"),然后打开绘图,使用entget命令行中的(entget (handent "3E7"))从普通的(entget (handent "3E7"))预览中获取XRecord的数据,结果是成功的。

代码语言:javascript
复制
((-1 . <Entity name: 7ff649f06e70>) (0 . "XRECORD") (5 . "3E7") (102 . "{ACAD_REACTORS") (330 . <Entity name: 7ff649f06e20>) (102 . "}") (330 . <Entity name: 7ff649f06e20>) (100 . "AcDbXrecord") (280 . 1) (1 . "Wall1"))

这个问题有什么解决办法吗?!!

EN

回答 1

Stack Overflow用户

发布于 2017-08-24 10:47:59

注意:这不是一个解决方案,这是另一种引用XRECORDS的方法

我已经将处理对象的句柄替换为对象的对象ID,然后我获取了vba宏的副本,将复制的宏重命名为"getfromid",获取了XRecord_return的副本,将副本重命名为XRecord_return_1,然后做了如下的小修改:

在vba宏getfromid上的

1-转到行Set myXRecord = mydoc.HandleToObject(handler)并将HandleToObject替换为ObjectIDToObject

2-将Dim name2 As String改为Dim name2 As String, handler As LongPtr

python函数的XRecord_return_1中的

1-将行xl.Application.Run("facilitator.xlsm!mod_facilitate.getxrecord")改为xl.Application.Run("facilitator.xlsm!mod_facilitate.getfromid")

这应该避免未知句柄错误的来源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45847990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档