乐筑天下

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

[编程交流] 基于样式查找文本

[复制链接]

1

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:31:13 | 显示全部楼层 |阅读模式
大家好!!
 
我是autolisp的新手。我需要帮助来解决这个问题。。
 
我希望在图纸中找到特定风格(如罗马语)的多行文字“J”,并检索其位置(x,y坐标)。我试图在文本的各个位置用一个块(比如“星”)替换所有出现的文本。我找到了lisp程序来查找文本,但我似乎不知道如何使用其属性来进一步处理。
 
急切地等待回应。。。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:37:52 | 显示全部楼层
欢迎来到论坛。
 
不能将Lisp与Autocad LT一起使用。
回复

使用道具 举报

1

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:41:38 | 显示全部楼层
嗯,我必须说,你似乎是一个敏锐的观察者。我实际上在使用Autocad 2011。我不认为我的个人资料会对回复产生影响。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:45:30 | 显示全部楼层
好的,你说的多行文字“J”是什么意思?
 
你会用一个普通块(不是属性块或动态块)来替换所有文本和MTEXT对象吗?
回复

使用道具 举报

1

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:48:37 | 显示全部楼层
我正在尝试将图形从PDMS软件转换到autocad。PDMS中的角度符号在autocad中表示为J。我发现正在使用的字体样式叫做“FOP11901”。这实际上是与autocad不兼容的PDMS符号库。因此,我考虑开发一个autolisp文件,该文件将:
 
1.查找所有出现的具有fontstyle“FOP11901”的多行文字“J”
2、检索其位置坐标。
3、删除文本。
4、在同一位置插入“starang”块(可在图纸中找到)。
 
希望这能解决我的问题
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:52:41 | 显示全部楼层
 
因此,您需要根据其字体样式选择多行文字,而不是根据您命名的文字样式?
我还是不知道你说的多行文字“j”是什么意思?(如果其字体样式为块,则这可能是唯一需要替换为块的字符串
根据上述说法)?
回复

使用道具 举报

1

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:57:31 | 显示全部楼层
 
我附上了相同的屏幕截图:
 

                               
登录/注册后可看大图

 
我相信是文字风格,而不是字体风格。
 
 
我的意思是,我有一个多行文本,只有一个字符串条目,那就是字母“J”。此多行文本需要用块替换。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:03:11 | 显示全部楼层
可以
 
现在试试这个草稿,告诉我它是否适合你的需要。
 
  1. (defun c:Test (/ b ss)
  2. (if (and (/= (setq b (getstring t "\n Enter name of Block :")) "")
  3.           (if (not (tblsearch "BLOCK" B))
  4.             (progn
  5.               (princ "\n name of Block is not existed ")
  6.               nil
  7.             )
  8.             t
  9.           )
  10.         (progn (prompt " Select texts ")
  11.           (setq
  12.             ss (ssget "_:L" '((0 . "*TEXT") (1 . "j") (7 . "FOP11901")))
  13.           ))
  14.      )
  15.    ((lambda (i / sn e)
  16.       (while (setq sn (ssname ss (setq i (1+ i))))
  17.         (if (entmakex (list '(0 . "INSERT")
  18.                             (cons 2 b)
  19.                             (assoc 10 (entget sn))
  20.                             (assoc 50 (entget sn))
  21.                             '(41 . 1.)
  22.                             '(42 . 1.)
  23.                             '(43 . 1.)
  24.                       )
  25.             )
  26.           (entdel sn)
  27.         )
  28.       )
  29.     )
  30.      -1
  31.    )
  32. )
  33. (princ)
  34. )
回复

使用道具 举报

1

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:07:16 | 显示全部楼层
谢谢Tharwat,代码草案有效!!!:D
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:13:57 | 显示全部楼层
 
很高兴听到这个消息。
 
祝你好运
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 15:09 , Processed in 1.781884 second(s), 75 queries .

© 2020-2025 乐筑天下

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