乐筑天下

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

[编程交流] 块中的属性对象ID

[复制链接]

7

主题

80

帖子

73

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:17:31 | 显示全部楼层 |阅读模式
块中的属性对象ID。
 
大家好,又是我,我正在尝试创建一个将属性链接到文本字段的标记系统,我有一个来自@Tharwat的例程,它在单击带有属性的目标块后创建一个文本+字段(它确实适用于默认ent。属性如块单位、颜色、层、名称等),但我的问题是属性定义。它有一个不同的ObjectId,由于Tharwat创建使用的例程(car(entsel),它将只返回块ObjectId,而不返回内部的属性ObjID。
属性ObjId 8796087888544
其他目标8796087888528
 
你知道这可行吗?
 
Tharwats例程
  1. (vl-load-com)
  2. (defun c:TAG (/ space ss pt)
  3. (setq space (vla-get-modelspace
  4. (vla-get-ActiveDocument (vlax-get-acad-object))
  5. )
  6. )
  7. (if (and (setq ss (car (entsel "\n Select a BLOCK : ")))
  8. (setq pt (getpoint "\n Specify TAG Location :"))
  9. )
  10. (vla-addMText
  11. space
  12. (vlax-3d-point pt)
  13. 4.
  14. (strcat "%<\\AcObjProp Object(%<\\_ObjId "
  15. (itoa (vla-get-ObjectID (vlax-ename->vla-object ss)))
  16. ">%).TextString \\f "%tc1">%"
  17. )
  18. )
  19. (princ)
  20. )
  21. (princ)
  22. )

171734ws6wkta6wjsqn7tk.jpg
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 16:29:39 | 显示全部楼层
你好
 
将函数entsel替换为entsel,并在要求选择块时拾取属性本身。
回复

使用道具 举报

7

主题

80

帖子

73

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:36:29 | 显示全部楼层
它现在使用大BUT,因此属性需要可见,对吗?
 
谢谢Tharwat
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 16:44:55 | 显示全部楼层
 
不客气。
 
当然,它应该是可见的,因为用户输入功能要求您选择屏幕上可用/可见的对象。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:58:47 | 显示全部楼层
如果属性不可见,可以通过其创建顺序获取属性,但这取决于您知道创建时的数字。
 
或使用“.”对于属性值,它几乎不可见,然后使用Tharwat的方法。
回复

使用道具 举报

7

主题

80

帖子

73

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 17:03:16 | 显示全部楼层
 
任何关于“如果属性不可见,则可以通过其创建顺序获取属性,但这取决于您知道创建时的数字”的快速片段
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:12:09 | 显示全部楼层
如果你看这个,当它循环时,你会得到每个属性,这样你就可以改变一个属性,知道你需要经过foreach多少次,使用另一个If来改变属性值和可见性状态。
 
  1. (setq y (getint "attribute counter"))
  2. (setq x 1)
  3. (foreach att (vlax-invoke (vlax-ename->vla-object (ssname SS1 0 )) 'getattributes)
  4. (if (= x y)(vla-put-textstring att newstr1))
  5. (setq x (+ x 1))
  6. )
回复

使用道具 举报

7

主题

80

帖子

73

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 17:22:34 | 显示全部楼层
好的,将其视为求解。我找到了一个解决办法。
 
我没有使用属性,而是为设备和阀门创建了一个自定义属性。
 
再次感谢你。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:06 , Processed in 0.533392 second(s), 71 queries .

© 2020-2025 乐筑天下

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