乐筑天下

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

[编程交流] 多行文字操作

[复制链接]

3

主题

16

帖子

13

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:07:16 | 显示全部楼层 |阅读模式
大家好。!我是新来的,希望能回答我的问题。这是关于多行文字中文字的常规。我必须一个接一个地编辑,而且它包含了太多的内容。我只需要点击多行文字,它就会自动改变。以下是我的例行程序:。
 
1、编辑多行文字(两行多行文字)
2、更改文本的样式。
3、突出显示第一行,使其加粗。
4.突出显示第二行,使其倾斜。
5、退出。
 
结果如下:
 
第一行
第二行
 
这可以通过lisp代码实现吗?提前谢谢你,我希望可以这样做。上帝保佑所有人。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 08:13:12 | 显示全部楼层
当然-只是不直接作为你的一步一步。但有几个问题:
 
[列表=1]
  • 所有多行文字都包含完全相同的文字吗?一、 e.是否要像使用普通DText和“属性”选项板一样复制更改?
  • 如果不是,第一行是否总是以按下Enter键结束,还是只是自动换行?
  • 当你说更改样式(在第2点中)时,似乎你是在编辑器中这样做的。你先选择所有文本吗?
  • 如果是这样的话,你愿意改变多行文字的风格本身,而不是里面的格式代码吗?
    [/列表]
    使用lisp,实际上可以更改多行文字的数据,而不是使用MTEdit命令。粗体和斜体只是文本值的格式代码。
  • 回复

    使用道具 举报

    3

    主题

    16

    帖子

    13

    银币

    初来乍到

    Rank: 1

    铜币
    15
    发表于 2022-7-6 08:14:10 | 显示全部楼层
    谢谢irneb的回复。很抱歉,回复太晚了。回答您的问题:
     
    1.所有多行文字是否包含完全相同的文字不,这是一个系列。i、 e,一线1,一线2,一线1,一线2,。。。等等
    2.如果不是,第一行是否总是以按下Enter键结束,还是自动换行对我在第一行后按了回车键。
    3.当你说改变风格(在你的第2点中)时,似乎你是在编辑器中这样做的。您是否首先选择所有文本没有。当我按多行文字编辑它后,我只需选择我想要的样式,文本的样式会自动更改,而无需全部选择。
    如果是这样的话,你愿意改变多行文字本身的风格,而不是里面的格式代码吗?没有。我试图改变多行文字的样式,但字体样式没有改变。只有多行文字的样式会改变。所以我会按我的要求做。
     
    我希望这能帮你摆脱厄尔内布。这对我和其他人都有很大的帮助。再次感谢你,愿上帝保佑。
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 08:19:30 | 显示全部楼层
    我一直在思考这些问题,但目前这只适用于使用Arial字体的文本样式-我不知道如何将多行文字设置为粗体/斜体,并在格式代码中指定正确的字体字符串。我想也许vla得到了字体文件,但这只是字体文件的文件名。
     
    1. (defun c:test ( / *error* ss ) (vl-load-com)
    2. ;; © Lee Mac 2010, www.lee-mac.com
    3. (defun *error* ( msg )
    4.    (LM:ReleaseObject RegEx)
    5.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
    6.        (princ (strcat "\n** Error: " msg " **")))
    7.    (princ)
    8. )
    9. (if (setq ss (ssget "_:L" '((0 . "MTEXT") (1 . "*\\P*"))))
    10.    (
    11.      (lambda ( i / RegEx e ) (setq RegEx (vlax-create-object "VBScript.RegExp"))
    12.        (while (setq e (ssname ss (setq i (1+ i))))  
    13.          (entupd
    14.            (cdr
    15.              (assoc -1
    16.                (entmod
    17.                  (subst
    18.                    (cons 1
    19.                      (LM:RegExReplace RegEx "{\\fArial|b1|i0|c0|p34;$1\\P\\fArial|b0|i1|c0|p34;$2}" "^(.*)\\\\P(.*)$"
    20.                        (cdr (assoc 1 (entget e)))
    21.                      )
    22.                    )
    23.                    (assoc 1 (entget e)) (entget e)                     
    24.                  )
    25.                )
    26.              )
    27.            )
    28.          )
    29.        )
    30.        (LM:ReleaseObject RegEx)
    31.      )
    32.      -1
    33.    )
    34. )
    35. (princ)
    36. )
    37. (defun LM:RegExReplace ( regex new pat str )
    38. ;; © Lee Mac 2010
    39. (mapcar
    40.    (function
    41.      (lambda ( prop value ) (vlax-put-property regex prop value))
    42.    )
    43.   '(pattern global ignorecase) (list pat actrue acfalse)
    44. )
    45. (vlax-invoke regex 'replace str new)
    46. )
    47. ;;------------------=={ Release Object }==--------------------;;
    48. ;;                                                            ;;
    49. ;;  Releases a VLA Object from memory via plentiful error     ;;
    50. ;;  trapping                                                  ;;
    51. ;;------------------------------------------------------------;;
    52. ;;  Author: Lee Mac, Copyright © 2010 - www.lee-mac.com       ;;
    53. ;;------------------------------------------------------------;;
    54. ;;  Arguments:                                                ;;
    55. ;;  obj - VLA Object to be released from memory               ;;
    56. ;;------------------------------------------------------------;;
    57. ;;  Returns:  T if Object Released, else nil                  ;;
    58. ;;------------------------------------------------------------;;
    59. (defun LM:ReleaseObject ( obj ) (vl-load-com)
    60. ;; © Lee Mac 2010
    61. (and obj (eq 'VLA-OBJECT (type obj)) (not (vlax-object-released-p obj))
    62.    (not
    63.      (vl-catch-all-error-p
    64.        (vl-catch-all-apply
    65.          (function vlax-release-object) (list obj)
    66.        )
    67.      )
    68.    )
    69. )
    70. )

     
    你的想法是什么?
    回复

    使用道具 举报

    3

    主题

    16

    帖子

    13

    银币

    初来乍到

    Rank: 1

    铜币
    15
    发表于 2022-7-6 08:20:15 | 显示全部楼层
    你好,李。谢谢你的回复和帮助。我已经测试了你的代码,但当我选择多行文字时什么都没有发生。也许我在这里迷路了,对不起。无论如何,我确实去了你的网站,浏览了你的lisp代码列表。我尝试了MatchTextProp,但它没有改变字体样式,只是改变了多行文字样式。只要它能改变字体样式就好了。
     
    谢谢你们,上帝保佑。
    回复

    使用道具 举报

    11

    主题

    968

    帖子

    919

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    99
    发表于 2022-7-6 08:23:35 | 显示全部楼层
    实际上,我建议不要更改多行文字中的任何字体。正是由于这个原因:你不能轻易地修改多个文本。我更喜欢使用StripMText“清理”这样的格式代码,以摆脱这些字体。然后,可以通过选择多个多行文字并在“特性”选项板中设置样式来更改字体。
     
    李,至于你的密码。。。同样,请确保不要使用任何DXF代码40、41或42,因为这些代码会搞乱注释性文本。您可以使用vl remove if在entmod中删除它们。
     
    我看到你也做了自己的正则表达式函数,在执行这类事情时,它可能只会节省很多代码。我希望我对RegExp搜索字符串有更多的了解。但我马上就到了,请看我随附的版本。
    正则表达式。LSP
    回复

    使用道具 举报

    3

    主题

    16

    帖子

    13

    银币

    初来乍到

    Rank: 1

    铜币
    15
    发表于 2022-7-6 08:28:12 | 显示全部楼层
    首先,非常感谢你,伊恩。写那段代码一定花了你一些时间。我发现它不像我想的那样是一个普通的Lisp程序。再次感谢。现在,对于代码,我应该在命令行中键入什么?我没有看到defun c:。我搞错了吗?。谢谢
     
    编辑:
     
    我使用了StripMtext,它很管用。我现在可以改变多行文字的风格了。
     
    我的问题是,我可以格式化多行文字(粗体第一行1和斜体第二行1)作为参考,并将其与其余多行文字匹配吗?谢谢
    回复

    使用道具 举报

    11

    主题

    968

    帖子

    919

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    99
    发表于 2022-7-6 08:31:49 | 显示全部楼层
    对不起,没有,这只是一些函数,当你想搜索和替换字符串中的内容时使用。当搜索{fArial | b….格式代码并允许替换它时,将使用它。我自己会尝试一下,但我认为李的代码有希望…只需要找出当文本中已经有一些格式代码时该怎么做。
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 08:33:11 | 显示全部楼层
     
    同上:在我看来,尽可能避免使用多行文字格式代码——它们对开发人员来说是一场噩梦。
     
     
    实际上,我最初在初始测试中只使用实体名称和字符串的entmod,但是在更新格式化代码时,这似乎不起作用-如果使用vl remove,这是一个好主意:感谢您指示要删除的代码,我不知道。
     
     
    当我有时间的时候,我会看看你的代码-我一直在我的批处理查找和替换程序(可以在我的网站上找到)中使用RegExp字符串,我与乔·伯克一起工作;虽然在花了相当长的时间允许格式化代码后,它仍然有一些错误,其中涉及到格式严重的多行文字。我承认,我没有解释在这种情况下字符串中已经存在格式化代码。
     
    回复

    使用道具 举报

    3

    主题

    16

    帖子

    13

    银币

    初来乍到

    Rank: 1

    铜币
    15
    发表于 2022-7-6 08:37:30 | 显示全部楼层
     
    伊斯兰会议组织。那我们只好等李了。给你们俩更多的力量。
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-9 09:27 , Processed in 0.502707 second(s), 72 queries .

    © 2020-2025 乐筑天下

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