乐筑天下

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

[编程交流] 要更改的AutoCAD Lisp例程

[复制链接]

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 15:56:24 | 显示全部楼层
Rlx,
块引用不被视为集合对象(它们不具有“Count”属性)。
 
因此,如果您尝试:
  1. (setq blkref (vlax-ename->vla-object (car (entsel "\nPick Block reference: "))))
  2. (vlax-for o blkref
  3. (print o)
  4. )

 
它应该出现以下错误:
  1. Error: bad argument type: VLA-object collection: #<VLA-OBJECT IAcadBlockReference 0000008a2cc23a68>

 
 
综上所述:
  1. (if (vlax-property-available-p obj 'Count)
  2. (princ "\nObj is collection.")
  3. (princ "\nObj is not a colletion.")
  4. )

 
或者我错过了什么。。
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 15:59:09 | 显示全部楼层
 
 
不,这正是问题所在。因此,我可以更改块定义的样式,当我打开已处理的图形并插入新块时,其属性将具有新样式。但现有区块将需要attsync。
 
 
p、 我只是在想,假设我只想更新某些块的某些属性的样式,其中某个属性具有特定值。。。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:03:03 | 显示全部楼层
 
但是您正在访问块定义-这是一个集合,然后通过插入该块参照(包含新blkdef)在新图形中重新定义它。
 
或者你的意思是,如果块定义是嵌套的(包含块引用),那么同样需要从引用中访问定义(需要这样的递归技术)。
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:07:14 | 显示全部楼层
 
 
我承认,大部分都是纯学术性的,可能有也可能没有任何实际用途,但有时我想要比当时需要的更多的控制,只是一个“如果将来我想做这件事怎么办”的例子,你知道。。。无论如何,感谢您的意见,非常感谢:-)
 
 
gr.Rlx
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:10:23 | 显示全部楼层
不用担心,Rlx,
有一次我也很好奇——可以迭代块引用的图形对象(如直线/圆等)吗(并且不访问其块定义)。
但我仍然知道的最接近的事情是通过分解方法/命令,仅从生成的对象中提取一些数据(并根据例程擦除分解的几何体)。
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:11:53 | 显示全部楼层
 
 
 
其想法是能够只更新某些块的属性,而不是全部,但我认为getattributes方法也能很好地工作。现在希望OP能用上它。。。
 
 
gr.Rlx
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:17:25 | 显示全部楼层
啊,现在我明白你在尝试什么了——确实看起来是一个奇怪的失败。
也许可以这样尝试:
  1. (vlax-for obj (vla-get-block layout)
  2. ; do stuff and obtain bn-list
  3. )
  4. (setq Blks (vla-get-Blocks odbxdoc))
  5. (foreach blkname bn-list
  6. (vlax-for blkdef (vla-Item Blks blkname)
  7.    (vlax-for obj blkdef
  8.      (and
  9.        (vlax-write-enabled-p obj)
  10.        (vlax-property-available-p obj 'StyleName)
  11.        (vla-put-StyleName obj "Company_Name")
  12.      ); and
  13.    ); vlax-for obj
  14. ); vlax-for blkdef
  15. ); foreach
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:18:04 | 显示全部楼层
不。。。相同的错误。。。在我的脑海里,我在想对象所有者/id。。。我隐约记得有一次读过这样的东西。。。嗯,总有一天我会想到的。
 
 
 
我想我已经搞定了,并且更新了代码。我只是扫描了所有的物体。。。
 
 
gr.Rlx
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:22:34 | 显示全部楼层
令人印象深刻的编码,Rlx!
 
顺便说一句,下面是关于您使用的voidp函数的2c:
  1. 11
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:26:33 | 显示全部楼层
 
thanx Grrr。最后(或者我应该说开始),问题是vla get block和vla get block之间的区别。。。一封愚蠢的信。。。
 
是的,我的虚空只在一个空字符串中深入这么多层次,这是因为我在vlisp存在之前和vl string->list/-trim等存在之前编写了它。尽管如此,这些年来,它一直很好地服务于我,纯粹的怀旧
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 03:07 , Processed in 0.506080 second(s), 70 queries .

© 2020-2025 乐筑天下

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