乐筑天下

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

[编程交流] 更改块内的文字样式

[复制链接]

7

主题

32

帖子

25

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 17:14:01 | 显示全部楼层 |阅读模式
大家早上好
我一直在尝试编写lisp例程,将插入块中的旧文本样式转换为新文本样式。
这是清理旧图形的较大例程的一部分。
我试图选择图形中的块,并使其仅选择文本或多行文字,但我正在接收图形中的每个对象。
我做错了什么?????
附件是lisp例程和简单示例图。
使用AutoCAD 2017。
谢谢你的帮助。
史蒂夫
000测试12。lsp
X_STRCT1。图纸
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:48:48 | 显示全部楼层
更好的方法是在树的顶部重新定义块表中的单个块,然后只更新图形,而不是获取所有块。ssget“insert”正在执行的操作。
 
类似这样,但查看实体并检查文本或多行文字,然后更改样式。我会得到实体名称并运行一系列条件,因为文本和多行文字非常直接,但属性样式再次降低了一个级别,但您可以检查“Hasattributes”变量,然后进行更深入的搜索。你可以使用dumpit。lsp获取对象的变量名列表,然后进一步使用(vlax dump object variable)
 
  1. (setq allblocks (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))
  2. (vlax-for block allblocks
  3. (setq blkname (vla-get-name block))
  4. (if  (not (wcmatch (strcase blkname t) "*_space*"))
  5.    (vlax-for ent block
  6.      (If (= "AcDbText" (vla-get-objectname ent))
  7.      (vla-put-StyleName ent "arial") ; need a vla-put-textstyle here
  8.      ) ; if
  9.    ) ;_ end of vlax-for
  10. ) ;_ end of if
  11. ) ;_ end of vlax-for
  12. (Command "regen")
  13. (princ)

 
  1. (if (= (vla-get-hasattributes ent) -1)
  2. (foreach att (vlax-invoke ent 'getattributes)
  3. ;look at textstyle see if I can find an example  
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 08:08 , Processed in 0.836361 second(s), 56 queries .

© 2020-2025 乐筑天下

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