乐筑天下

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

求助:为何Block类型不能取得动态块属性数组

[复制链接]

1

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2018-8-21 22:25:00 | 显示全部楼层 |阅读模式
新手求助,使用下述代码,能判断对象是否为动态块,为什么不能取得属性数组?
  1. Sub test()
  2. Dim objBlkDef As AcadBlock
  3. For Each objBlkDef In ThisDrawing.Blocks
  4.   If objBlkDef.IsDynamicBlock Then
  5.     If objBlkDef.Name = "2458339.445652801" Then
  6.       Dim dybProp As Variant
  7.       dybProp = objBlkDef.GetDynamicBlockProperties
  8.       For i = LBound(dybProp) To UBound(dybProp)
  9.         If dybProp(i).PropertyName = "距离" Then
  10.           dybProp(i).Value = 500#
  11.           Exit For
  12.         End If
  13.       Next i
  14.     End If
  15.   End If
  16. Next
  17. End Sub
回复

使用道具 举报

1

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2018-8-21 22:32:00 | 显示全部楼层
必须是AcadEntity才能取得此属性数组吗,但是用这个类型却得不到对象的正确名称,因为动态块调整过一次后会变成匿名块。各位大神请不吝赐教!
回复

使用道具 举报

Kye

12

主题

83

帖子

10

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
129
发表于 2018-8-22 06:28:00 | 显示全部楼层
帮老师顶个帖
回复

使用道具 举报

Kye

12

主题

83

帖子

10

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
129
发表于 2018-8-23 20:44:00 | 显示全部楼层
老师搜下帖名 动态块控制核心程序  ;;---------通用函数2:获得动态块所有属性(乐筑天下CAD论坛提供)--------- (defun xyl-getdynallpropvalue (par_blkref)   (setq Pros (vlax-invoke par_blkref 'GetDynamicBlockProperties))   (mapcar '(lambda (X)              (cons (vlax-get X 'PropertyName) (vlax-get X 'Value))            )           Pros   )
回复

使用道具 举报

Kye

12

主题

83

帖子

10

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
129
发表于 2018-8-23 21:14:00 | 显示全部楼层
这个贴 动态块问题,实在找不出来哪错了,请各位前辈抽空看下源码  与你的问题更接近
回复

使用道具 举报

1

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2018-8-25 00:02:00 | 显示全部楼层
对AUTOLISP没研究过,正在学习VBA二次开发,用EffectiveName取到动态块的原始名后,我的问题已解决,谢谢帮顶。
回复

使用道具 举报

3

主题

21

帖子

2

银币

初来乍到

Rank: 1

铜币
33
发表于 2018-8-25 18:16:00 | 显示全部楼层
用blockreference不要用block
回复

使用道具 举报

0

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
2
发表于 2018-10-17 22:32:00 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

0

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2019-3-12 14:37:00 | 显示全部楼层
学习了
回复

使用道具 举报

1

主题

21

帖子

5

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-11 19:55:00 | 显示全部楼层

objBlkDef.Name这个块名是动态变化的,一般是个随机的字符串,所以vba取块名并不是原始块的那个块名。如判断原始块名还是需要用EffectiveName属性。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 18:08 , Processed in 0.411689 second(s), 72 queries .

© 2020-2025 乐筑天下

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