乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 70|回复: 8

[编程交流] ObjectID返回错误64位a

[复制链接]

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 15:03:13 | 显示全部楼层 |阅读模式
我们正在使用Autocad2009。我的处理器只有64位,当我们使用objectID时,vba中有一个问题。
谁能帮我解决这个问题。我在网上搜索了一下,发现64位处理器返回的值比32位处理器长?
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 15:16:25 | 显示全部楼层
你能把你收到的错误信息的确切措辞贴出来吗?非常感谢。
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:20:57 | 显示全部楼层
我没有办法用64位测试这个方法,但值得一试。附加的示例只是通过操作通过ObjectId返回的引用来更改对象的颜色。
 
  1. Sub objIDTest()
  2. Dim ent As AcadEntity
  3. Dim varPkPt As Variant
  4. Dim entTransfer As AcadEntity
  5. Dim strObjId As String
  6.   With ThisDrawing
  7.      .Utility.GetEntity ent, varPkPt, "Select and entity:"
  8.      strObjId = ThisDrawing.Utility.GetObjectIdString(ent, False)
  9.      Set entTransfer = .ObjectIdToObject(CLng(.Utility.DistanceToReal(strObjId, acDecimal)))
  10.      entTransfer.color = acRed
  11.   End With
  12. End Sub
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 15:33:02 | 显示全部楼层
编译错误
函数或接口标记为受限,或函数使用Visual Basic不支持的自动化类型
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:36:55 | 显示全部楼层
哪一行代码产生了错误,在哪一版本的AutoCad中(64位和/或32位)?
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 15:42:20 | 显示全部楼层
如果此图纸。纸张空间。项目(T1)。ObjectName=“AcDbBlockReference”然后
设置Kader=ThisDrawing。纸张空间。项目(T1)
BlokNaam=UCase(Kader.Name)
如果BlokNaam=“A3ELEK”,则
kaderID(0,volgnr)=Kader。ObjectID(deze代码geeft错误)
kaderID(1,volgnr)=Blad
VarAttributes=Kader。获取属性
kaderID(2,volgnr)=VarAttributes(1)。文本字符串
kaderID(3,volgnr)=VarAttributes(2)。文本字符串
volgnr=volgnr+1
blnr=Val(Blad)
如果blnr>max,则max=blnr
如果结束
如果结束
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:49:48 | 显示全部楼层
不幸的是,你的情况超出了我的能力范围。我没有64位版本的AutoCAD来测试任何代码,也没有完全理解用荷兰语编写的代码段的能力。
 
看起来您正在将ObjectID存储在某种形式的数据库中。我的代码示例的基础是,您可以将ObjectID存储为字符串,而不是长数据类型。棘手的部分(我无法测试的部分)是32位和64位使用该字符串返回对象的能力。
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 16:01:10 | 显示全部楼层
肖恩
我已将nog the objectid更改为object32(仅在64位版本中可用)
对于Object32代码,它似乎可以工作。我们所知道的唯一区别是,该例程比32位版本慢得多(运行大约需要20秒)(例程在0.5秒内完成)
谢谢你的努力
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 16:07:02 | 显示全部楼层
我怀疑您会看到由于AutoCAD 64位使用的“进程外”设置,所有VBA例程在64位上运行较慢。
 
很高兴看到您至少有一些可用的性能级别。
 
需要检查的一件事(为什么我倾向于基于“字符串”的识别方法)是向后兼容性,即处理32位机器上64位版本生成的值。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 21:10 , Processed in 0.790177 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表