乐筑天下

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

[编程交流] 需要文字编辑lisp

[复制链接]

11

主题

45

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 14:36:04 | 显示全部楼层 |阅读模式
我一直在寻找编辑文本命令,但我没有运气。我希望能够一次选择多个文本进行更改。就像我有6个需要更改,我一个接一个地选择,然后它让我按照我选择的顺序编辑它们。
 
在我上一份工作中,我们使用了ETA。
 
有什么帮助吗??
回复

使用道具 举报

11

主题

45

帖子

35

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 14:57:08 | 显示全部楼层
哎呀。。。。。。知道了!
 
; 按选择编辑属性或文本
(定义C:ETA(/A B C D E F G H J K L M N)
(图表)
;   (提示“\n加载了编辑文本/属性…”)
(setq A(ssget)B(sslength A)C 0)
(虽然(
(setq F(E车))
(setq G(cdr E))
(setq H(汽车G))
(setq J(cdr H))
(setq K“文本”)
(setq L“插入”)
(setq M“尺寸”)
(setq N“多行文字”)
(if(=J K)(命令“.ddedit”D“”))
(if(=J N)(命令“.ddedit”D“”))
(if(=J L)(命令“.ddatte”D))
(如果(=J M)(提示
“\n你选择了一个维度,你这个笨蛋….,我只做文本或属性…”)
(ERPI)
(setq C(1+C)))
(普林斯)
)
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 15:01:19 | 显示全部楼层
如果你愿意,这是我的。它适用于文本、多行文字、属性、维度,甚至块内的文本(不过,请记住,它会改变块的每个实例……现在)
 
  1. ;Super-Edit
  2. ;by Mark Mercier
  3. ;05-11-09
  4. (defun c:ed( / )(super_edit))
  5. (defun c:at( / )(super_edit))
  6. (defun super_edit( / modEnt dumEnt ent)
  7. (vl-load-com)
  8. (while (setq ent (nentsel "\nSelect object: "))
  9.    (if (and ent (or (wcmatch (cdadr (entget (car ent))) "*TEXT") (eq "ATTRIB" (cdadr (entget (car ent))))))
  10.      (progn
  11.    ; Extract properties of selection and save as list, to modify or replace later if failed
  12.    (setq modEnt (vlax-ename->vla-object (car ent)))
  13.    ; extract properties and create dummy text
  14.    (setq dumEnt (_TextCopy ent))
  15.    ; Clear contents of selected text
  16.    (vla-put-TextString modEnt " ")
  17.    (command "regen")
  18.    ; Edit dummy text
  19.    (command "DDEDIT" (entlast))(command)
  20.    ; once DDEDIT is finished, set modEnt TextString equal to dumEnt
  21.    (if (and (caar (cdddr ent)) (wcmatch (vla-get-ObjectName (vlax-ename->vla-object (caar (cdddr ent)))) "*Dimension"))
  22.      (vla-put-TextOverride (vlax-ename->vla-object (caar (cdddr ent))) (vla-get-TextOverride (vlax-ename->vla-object dumEnt)))
  23.      (vla-put-TextString modEnt (vla-get-TextString (vlax-ename->vla-object dumEnt)))
  24.      )
  25.    ; Delete dummy text
  26.    (command "erase" dumEnt "")
  27.    (command "regen")
  28.    )
  29.      )
  30.    )
  31. )
  32. (defun _TextCopy(ent / vlaEnt lasEnt return)
  33. (setq return nil)
  34. (cond
  35.    ((and (wcmatch (cdadr (entget (car ent))) "TEXT") (not (caar (cdddr ent))))
  36.     (setq return (_TextCopy-TEXT ent))
  37.     )
  38.    ((and (wcmatch (cdadr (entget (car ent))) "MTEXT") (not (caar (cdddr ent))))
  39.     (setq return (_TextCopy-MTEXT ent))
  40.     )
  41.    ((and (wcmatch (cdadr (entget (car ent))) "MTEXT") (eq "INSERT" (cdr (assoc 0 (entget (caar (cdddr ent)))))))
  42.     (setq return (_TextCopy-NESMTEXT ent))
  43.     )
  44.    ((and (wcmatch (cdadr (entget (car ent))) "MTEXT") (eq "DIMENSION" (cdr (assoc 0 (entget (caar (cdddr ent)))))))
  45.     (setq return (_TextCopy-DIMMTEXT ent))
  46.     )
  47.    ((and (wcmatch (cdadr (entget (car ent))) "TEXT") (not (assoc 410 (entget (car ent)))))
  48.     (setq return (_TextCopy-NESTEXT ent))
  49.     )
  50.    ((eq "ATTRIB" (cdadr (entget (car ent))))
  51.     (setq return (_TextCopy-NESATT ent))
  52.     )
  53.    )
  54. return
  55. ); Creates exact copy of text/mtext/attribute entity as text/mtext, including blocked text. Return entity if successful or nil if not.
  56. (defun _TextCopy-TEXT(ent / vlaEnt lasEnt)
  57. (command "TEXT" '(0 0 0) 1 1 "1")
  58. (setq lasEnt (vlax-ename->vla-object (entlast)))
  59. (setq vlaEnt (vlax-ename->vla-object (car ent)))
  60. (vla-put-Layer        lasEnt    (vla-get-Layer            vlaEnt))
  61. (vla-put-Height        lasEnt    (vla-get-Height            vlaEnt))
  62. (vla-put-TextString        lasEnt    (vla-get-TextString        vlaEnt))
  63. (vla-put-Rotation        lasEnt    (vla-get-Rotation        vlaEnt))
  64. (vla-put-ScaleFactor        lasEnt    (vla-get-ScaleFactor        vlaEnt))
  65. (vla-put-ObliqueAngle        lasEnt    (vla-get-ObliqueAngle        vlaEnt))
  66. (vla-put-StyleName        lasEnt    (vla-get-StyleName        vlaEnt))
  67. (vla-put-Alignment        lasEnt    (vla-get-Alignment        vlaEnt))
  68. (vla-put-Backward        lasEnt    (vla-get-Backward        vlaEnt))
  69. (vla-put-Normal        lasEnt    (vla-get-Normal            vlaEnt))
  70. (vla-put-UpsideDown        lasEnt    (vla-get-UpsideDown        vlaEnt))
  71. (vla-put-InsertionPoint    lasEnt    (vla-get-InsertionPoint        vlaEnt))
  72. (vla-put-TextAlignmentPoint    lasEnt    (vla-get-TextAlignmentPoint    vlaEnt))
  73. (setq return (vlax-vla-object->ename lasEnt))
  74. return
  75. )
  76. (defun _TextCopy-MTEXT(ent / vlaEnt lasEnt)
  77. (command "MTEXT" '(0 0 0) '(1 1 0) "1" "")
  78. (setq lasEnt (vlax-ename->vla-object (entlast)))
  79. (setq vlaEnt (vlax-ename->vla-object (car ent)))
  80. (vla-put-AttachmentPoint    lasEnt    (vla-get-AttachmentPoint    vlaEnt))
  81. (vla-put-InsertionPoint    lasEnt    (vla-get-InsertionPoint        vlaEnt))
  82. (vla-put-Layer        lasEnt    (vla-get-Layer            vlaEnt))
  83. (vla-put-Height        lasEnt    (vla-get-Height            vlaEnt))
  84. (vla-put-TextString        lasEnt    (vla-get-TextString        vlaEnt))
  85. (vla-put-Width        lasEnt    (vla-get-Width            vlaEnt))
  86. (vla-put-StyleName        lasEnt    (vla-get-StyleName        vlaEnt))
  87. (vla-put-Normal        lasEnt    (vla-get-Normal            vlaEnt))
  88. (vla-put-BackgroundFill    lasEnt    (vla-get-BackgroundFill        vlaEnt))
  89. (vla-put-DrawingDirection    lasEnt    (vla-get-DrawingDirection    vlaEnt))
  90. (vla-put-LineSpacingDistance    lasEnt    (vla-get-LineSpacingDistance    vlaEnt))
  91. (vla-put-LineSpacingFactor    lasEnt    (vla-get-LineSpacingFactor    vlaEnt))
  92. (vla-put-LineSpacingStyle    lasEnt    (vla-get-LineSpacingStyle    vlaEnt))
  93. (vla-put-Rotation        lasEnt    (vla-get-Rotation        vlaEnt))
  94. (setq return (vlax-vla-object->ename lasEnt))
  95. return
  96. )
  97. (defun _TextCopy-NESATT(ent / vlaEnt lasEnt)
  98. (command "TEXT" '(0 0 0) 1 1 "1")
  99. (setq lasEnt (vlax-ename->vla-object (entlast)))
  100. (setq vlaEnt (vlax-ename->vla-object (car ent)))
  101. (vla-put-Layer        lasEnt    (vla-get-Layer            vlaEnt))
  102. (vla-put-InsertionPoint    lasEnt    (vla-get-InsertionPoint        vlaEnt))
  103. (vla-put-Height        lasEnt    (vla-get-Height            vlaEnt))
  104. (vla-put-TextString        lasEnt    (vla-get-TextString        vlaEnt))
  105. (vla-put-Rotation        lasEnt    (vla-get-Rotation        vlaEnt))
  106. (vla-put-ScaleFactor        lasEnt    (vla-get-ScaleFactor        vlaEnt))
  107. (vla-put-ObliqueAngle        lasEnt    (vla-get-ObliqueAngle        vlaEnt))
  108. (vla-put-StyleName        lasEnt    (vla-get-StyleName        vlaEnt))
  109. (princ "blah")
  110. (setq return (vlax-vla-object->ename lasEnt))
  111. return
  112. )
  113. (defun _TextCopy-NESTEXT(ent / vlaEnt lasEnt)
  114. (command "TEXT" '(0 0 0) 1 1 "1")
  115. (setq lasEnt (vlax-ename->vla-object (entlast)))
  116. (setq vlaEnt (vlax-ename->vla-object (car ent)))
  117. (vla-put-TextString        lasEnt    (vla-get-TextString    vlaEnt))
  118. (vla-put-ObliqueAngle        lasEnt    (vla-get-ObliqueAngle    vlaEnt))
  119. (vla-put-StyleName        lasEnt    (vla-get-StyleName    vlaEnt))
  120. (vla-put-Alignment        lasEnt    (vla-get-Alignment    vlaEnt))
  121. (vla-put-Backward        lasEnt    (vla-get-Backward    vlaEnt))
  122. (vla-put-Normal        lasEnt    (vla-get-Normal        vlaEnt))
  123. (vla-put-UpsideDown        lasEnt    (vla-get-UpsideDown    vlaEnt))
  124. (vla-put-Height        lasEnt    (vlax-make-variant (* (cdr (assoc 42 (entget (caar (cdddr ent))))) (cdr (assoc 40 (entget (car ent))))) vlax-vbDouble))
  125. (vla-put-ScaleFactor        lasEnt    (vlax-make-variant (* (/ (cdr (assoc 41 (entget (caar (cdddr ent))))) (cdr (assoc 42 (entget (caar (cdddr ent)))))) (cdr (assoc 41 (entget (car ent))))) vlax-vbDouble))
  126. (vla-put-Rotation        lasEnt    (vlax-make-variant (cdr (assoc 50 (entget (caar (cdddr ent))))) vlax-vbDouble))
  127. (vla-put-Layer        lasEnt    (vlax-make-variant (cdr (assoc 8 (entget (caar (cdddr ent))))) vlax-vbString))
  128. (vla-put-InsertionPoint    lasEnt (vlax-3D-point
  129.                     (+ (car (cdr (assoc 10 (entget (caar (cdddr ent)))))) (car (cdr (assoc 10 (entget (car ent))))))
  130.                     (+ (cadr (cdr (assoc 10 (entget (caar (cdddr ent)))))) (cadr (cdr (assoc 10 (entget (car ent))))))
  131.                     (+ (caddr (cdr (assoc 10 (entget (caar (cdddr ent)))))) (caddr (cdr (assoc 10 (entget (car ent))))))))
  132. (vla-put-TextAlignmentPoint    lasEnt (vlax-3D-point
  133.                     (+ (car (cdr (assoc 10 (entget (caar (cdddr ent)))))) (car (cdr (assoc 11 (entget (car ent))))))
  134.                     (+ (cadr (cdr (assoc 10 (entget (caar (cdddr ent)))))) (cadr (cdr (assoc 11 (entget (car ent))))))
  135.                     (+ (caddr (cdr (assoc 10 (entget (caar (cdddr ent)))))) (caddr (cdr (assoc 11 (entget (car ent))))))))
  136. (setq return (vlax-vla-object->ename lasEnt))
  137. return
  138. )
  139. (defun _TextCopy-NESMTEXT(ent / vlaEnt lasEnt)
  140. (command "MTEXT" '(0 0 0) '(1 1 0) "1" "")
  141. (setq lasEnt (vlax-ename->vla-object (entlast)))
  142. (setq vlaEnt (vlax-ename->vla-object (car ent)))
  143. (vla-put-TextString        lasEnt    (vla-get-TextString    vlaEnt))
  144. (vla-put-StyleName        lasEnt    (vla-get-StyleName    vlaEnt))
  145. (vla-put-Normal        lasEnt    (vla-get-Normal        vlaEnt))
  146. (vla-put-AttachmentPoint    lasEnt    (vla-get-AttachmentPoint vlaEnt))
  147. (vla-put-Width        lasEnt    (vla-get-Width        vlaEnt))
  148. (vla-put-Height        lasEnt    (vlax-make-variant (* (cdr (assoc 42 (entget (caar (cdddr ent))))) (cdr (assoc 40 (entget (car ent))))) vlax-vbDouble))
  149. (vla-put-Rotation        lasEnt    (vlax-make-variant (cdr (assoc 50 (entget (caar (cdddr ent))))) vlax-vbDouble))
  150. (vla-put-Layer        lasEnt    (vlax-make-variant (cdr (assoc 8 (entget (caar (cdddr ent))))) vlax-vbString))
  151. (vla-put-InsertionPoint    lasEnt (vlax-3D-point
  152.                     (+ (car (cdr (assoc 10 (entget (caar (cdddr ent)))))) (car (cdr (assoc 10 (entget (car ent))))))
  153.                     (+ (cadr (cdr (assoc 10 (entget (caar (cdddr ent)))))) (cadr (cdr (assoc 10 (entget (car ent))))))
  154.                     (+ (caddr (cdr (assoc 10 (entget (caar (cdddr ent)))))) (caddr (cdr (assoc 10 (entget (car ent))))))))
  155.    (setq return (vlax-vla-object->ename lasEnt))
  156. return
  157. )
  158. (defun _TextCopy-DIMMTEXT(ent / vlaEnt lasEnt)
  159. (command "copybase" (list 0 0 0) (caar (cdddr ent)) "")
  160. (command "pasteclip" (list 0 0 0))
  161. (setq return (entlast))
  162. return
  163. )

 
可能有一些代码可以清理,但总的来说,它应该可以工作。这项工作仍在进行中。如果你使用它,请告诉我它是如何工作的。我自己经常用它。^^
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:16:01 | 显示全部楼层
简单介绍一下:
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:qEdit [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ss dc$tag bs|Txt nw|Txt[b][color=RED])[/color][/b]
  2. [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
  3. [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#ff00ff]"TEXT,MTEXT"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  4.    [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
  5.      [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] dc$tag [b][color=RED]([/color][/b][b][color=BLUE]load_dialog[/color][/b] [b][color=#ff00ff]"ACAD"[/color][/b][b][color=RED])[/color][/b]
  6.            bs|Txt [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=#009900]1[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssname[/color][/b] ss [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  7.      [b][color=RED]([/color][/b][b][color=BLUE]new_dialog[/color][/b] [b][color=#ff00ff]"acad_txtedit"[/color][/b] dc$tag[b][color=RED])[/color][/b]
  8.      [b][color=RED]([/color][/b][b][color=BLUE]set_tile[/color][/b] [b][color=#ff00ff]"text_edit"[/color][/b] bs|Txt[b][color=RED])[/color][/b]
  9.      [b][color=RED]([/color][/b][b][color=BLUE]action_tile[/color][/b] [b][color=#ff00ff]"text_edit"[/color][/b] [b][color=#ff00ff]"(setq nw|Txt $value)"[/color][/b][b][color=RED])[/color][/b]
  10.      [b][color=RED]([/color][/b][b][color=BLUE]action_tile[/color][/b] [b][color=#ff00ff]"cancel"[/color][/b] [b][color=#ff00ff]"(exit)"[/color][/b][b][color=RED])[/color][/b]
  11.      [b][color=RED]([/color][/b][b][color=BLUE]start_dialog[/color][/b][b][color=RED])[/color][/b]
  12.      [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b]
  13.        [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
  14.          [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b]
  15.            [b][color=RED]([/color][/b][b][color=BLUE]entmod[/color][/b]
  16.              [b][color=RED]([/color][/b][b][color=BLUE]subst[/color][/b]
  17.                [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]1[/color][/b] nw|Txt[b][color=RED])[/color][/b]
  18.                  [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=#009900]1[/color][/b] x[b][color=RED])[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  19.        [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]entget[/color][/b]
  20.          [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]listp[/color][/b]
  21.            [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b]
  22.              [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  23.      [b][color=RED]([/color][/b][b][color=BLUE]unload_dialog[/color][/b] dc$tag[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  24. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 15:27:08 | 显示全部楼层
 
由于ddedit可以处理几乎所有的事情,我只是稍微更改了您的代码
  1. ; EDIT ATTRIBUTED OR TEXT BY SELECTION
  2. (defun C:ETA (/ A B C D E Z)
  3. (graphscr)
  4. ; (prompt "\nEdit-TEXT/ATTRIBUTE is loaded... ")
  5. (setq A (ssget) B (sslength A) C 0)
  6. (while (< C B)
  7.    (setq D (ssname A C) E (entget D))
  8.    (setq Z (cdadr E))
  9.    (if (member Z '("TEXT" "MTEXT" "INSERT" "DIMENSION")) (command ".ddedit" D ""))
  10.    (terpri)
  11.    (setq C (1+ C)))
  12. (princ)
  13. )

 
我肯定我还想用它做些别的事,但我不记得了
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 15:47:52 | 显示全部楼层
 
 
隐马尔可夫模型。。。看起来不像你的风格,李。尝试新事物?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:28 , Processed in 0.324329 second(s), 64 queries .

© 2020-2025 乐筑天下

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