乐筑天下

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

[编程交流] 自动选择文本

[复制链接]

4

主题

14

帖子

10

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 10:31:03 | 显示全部楼层 |阅读模式
大家好。我对写作不熟悉。lisp例程,这是我的第一篇文章。我对txt2mtxt例程的版本有问题。我希望能够在不手动选择文本的情况下运行下面列出的例程。我希望这一切都是自动化的。这是可能的还是我完全不可能。这是我到目前为止掌握的代码。
 
 
(defun Merge()
(if(and(setq ss(ssget’((0。“多行文字,文本”))));同时选择多行文字和数据文字
(>(sslength ss)1);检查是否选择了多个
) ;_ 结束和
(程序
(setq n 1;初始化计数器
en(ssname ss 0);选择第一个
ed(entget en);获取其DXF数据
txt(cdr(assoc 1 ed));获取其textvalue
) ;_ setq结束
(如果(=(cdr(assoc 0 ed))“文本”);如果第一个是DText
(程序
(命令“txt2mtxt”en“”);将其转换为多行文字
(setq obj(vlax ename->vla object(entlast)))
(vlax put property obj‘LineSpacingFactor 1)
(vlax put property obj‘LineSpacingDistance 0.25)
(vlax put property obj’LineSpacingStyle 2)
(setq en(entlast));获取新的多行文字
) ;_ 程序结束
) ;_ if结束
(setq eo(vlax ename->vla object en));获取第一个文本的ActiveX对象
(虽然(
(setq en(ssname ss n);获取第n个文本
ed(entget en);获取其DXF数据
) ;_ 集合结束
(setq txt(strcat txt“\\P”(cdr(assoc 1 ed)));将其字符串追加到第一个文本
(entdel en);删除第n个文本
(setq n(1+n));增加计数器
) ;_ while结束
(vla put TextString eo txt);将第一个文本修改为串联字符串
(命令“_.justifytext”pause““ML”)
) ;_ 程序结束
) ;_ if结束
)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:37:42 | 显示全部楼层
欢迎来到论坛。
它来了。
在代码中更正它。
  1. (if (and (setq ss (ssget [b][color="red"]"_x"[/color][/b] '((0 . "MTEXT,TEXT"))))

 
塔瓦特
回复

使用道具 举报

4

主题

14

帖子

10

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 10:41:43 | 显示全部楼层
Thanx。如果我不想要图纸中的所有文本,而只是特定的文本,该怎么办。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:45:22 | 显示全部楼层
因此,您将返回到第一个代码,因为它是单选的。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:46:38 | 显示全部楼层
阅读此内容(如何发布代码)
http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:51:26 | 显示全部楼层
您也可以考虑这些:
[列表]
  • foreach,如果不是vlax for
  • vla删除
  • vla get textstring
  • vla put连接点
  • vla put行间距因子
  • vla put线间距距离
  • vla put线间距样式
    此外,确保在例程结束时删除选择集:
     
    1. (vla-delete ss)
  • 回复

    使用道具 举报

    62

    主题

    466

    帖子

    404

    银币

    后起之秀

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

    铜币
    310
    发表于 2022-7-6 10:55:49 | 显示全部楼层
    您需要(setq ss(ssget“_x”'((0。“多行文字,文本”)))
     
    示例将返回T
    1. (wcmatch (strcase "hi old text!") "*OLD TEXT*")

    使用entmod
    回复

    使用道具 举报

    4

    主题

    14

    帖子

    10

    银币

    初来乍到

    Rank: 1

    铜币
    20
    发表于 2022-7-6 10:59:04 | 显示全部楼层
    使用entmod的目的是什么?
    回复

    使用道具 举报

    44

    主题

    3166

    帖子

    2803

    银币

    中流砥柱

    Rank: 25

    铜币
    557
    发表于 2022-7-6 11:01:24 | 显示全部楼层
     
     
    有关更多信息,请参阅VLIDE帮助。
    回复

    使用道具 举报

    4

    主题

    14

    帖子

    10

    银币

    初来乍到

    Rank: 1

    铜币
    20
    发表于 2022-7-6 11:05:28 | 显示全部楼层
    我知道我现在真的很笨,但是我该如何在我的代码中写入wcmatch和entmod呢?
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-6 17:30 , Processed in 0.619783 second(s), 72 queries .

    © 2020-2025 乐筑天下

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