明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1360|回复: 12

[提问] 再求代码,文本代替,后缀

[复制链接]
发表于 2019-12-11 11:30 | 显示全部楼层 |阅读模式
10明经币
两段代码
1,在文本后+设定好的文字
2,将设定好的文字代替原来的文本

有两个要求:1.单行文字与多行文字都可用, 2.字体跟修改的文本字体一样

原贴
http://bbs.mjtd.com/thread-180627-1-1.html


附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

后缀 tt5,替换 tt6
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2019-12-11 11:30 | 显示全部楼层
后缀 tt5,替换 tt6

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2019-12-11 11:35 | 显示全部楼层
本帖最后由 fangmin723 于 2019-12-11 11:36 编辑

这两个功能CAD自带的替换就可以做啊
1、“etwt” 替换为 “etwt 放电加工”
2、“etwt” 替换为 “放电加工”
回复

使用道具 举报

 楼主| 发表于 2019-12-11 19:06 | 显示全部楼层
fangmin723 发表于 2019-12-11 11:35
这两个功能CAD自带的替换就可以做啊
1、“etwt” 替换为 “etwt 放电加工”
2、“etwt” 替换为 “放电加 ...

不是要全部改,只是需要才改
回复

使用道具 举报

 楼主| 发表于 2019-12-11 21:42 | 显示全部楼层
这段只能改标注,如果能改文本就实可以的

(DEFUN C:FE()(SETQ SS(SSGET))(COMMAND"._DIMEDIT" "n"  "<>正面放电深" SS "" ""))

回复

使用道具 举报

发表于 2019-12-12 09:41 来自手机 | 显示全部楼层
看懂了cad自带替换命令没有?你的要求直接能满足,自带的已经做得很完美了
回复

使用道具 举报

 楼主| 发表于 2019-12-12 10:47 | 显示全部楼层
start4444 发表于 2019-12-12 09:41
看懂了cad自带替换命令没有?你的要求直接能满足,自带的已经做得很完美了

那个替换我知道,你想一下,如果一份图有几百个内容不一样的文本,加同一样的后缀如何。
回复

使用道具 举报

发表于 2019-12-12 13:06 | 显示全部楼层
(defun c:gh (/ oos ss ent txt2 n index date1)
  (setvar "cmdecho" 0)
  (setq oos (getvar "osmode"))
  (setvar "osmode" 0)
  (setq txt2 (getvar "users3"))
  (setq txt2 (getstring t (strcat "\n请输入后缀< " txt2 " >:"))
        txt2 (if txt2
               txt2
               (getvar "users3")
             )
  )
  (if (= txt2 "")
    (setq txt2 (getvar "users3"))
  )
  (setvar "users3" txt2)
  (prompt (strcat "\n请选取要加后缀的文本<退出>:"))
  (setq ss (ssget '((0 . "TEXT,MTEXT"))))
  (if (/= ss nil)
    (progn
      (setq date1 (getvar "millisecs")
            index 0
      )
      (repeat (sslength ss)
        (setq ent (entget (ssname ss index)))
        (setq index (+ 1 index))
        (entmod (subst
                  (cons 1 (strcat (cdr (assoc 1 ent)) txt2))
                  (assoc 1 ent)
                  ent
                )
        )
      )
      (prompt (strcat "\n总共给\"" (itoa n) "\"个文本加了后缀\"" txt2 "\".耗时\"" (rtos (/ (- (getvar "millisecs") date1) 1000.000)
                                                                                        2 3
                                                                                  ) "\"秒"
              )
      )
    )
  )
  (setvar "osmode" oos)
  (setvar "cmdecho" 1)
  (princ)
)
回复

使用道具 举报

 楼主| 发表于 2019-12-12 14:31 | 显示全部楼层
wudechao 发表于 2019-12-12 13:06
(defun c:gh (/ oos ss ent txt2 n index date1)
  (setvar "cmdecho" 0)
  (setq oos (getvar "osmode") ...

这个也不是我想要的,我是要把设定好的文本内容去加后缀,我连接那代码可以做到,只是有两个问题。1.单行文字与多行文字都可用, 2.字体跟修改的文本字体一样

我要的是替代与+后缀 两种代码。要独立的两种。不要可选的
回复

使用道具 举报

发表于 2019-12-12 18:44 | 显示全部楼层
本帖最后由 KO你 于 2019-12-12 18:46 编辑

单行文字和多行文本都可以加前后缀,(对话框模式并带记忆功能)
快捷键  t+  文字加前后缀
(defun c:t+ ()
  (vl-load-com)
  (setq @dclfiledame (vl-filename-mktemp nil nil ".dcl"))
  (setq @dclfiled (open @dclfiledame "w"))
  (write-line "dzmjjsbdc:dialog {" @dclfiled)
  (write-line "    label = \"文本加前后缀\" ;" @dclfiled)
  (write-line "    :row {" @dclfiled)
  (write-line "        :edit_box {" @dclfiled)
  (write-line "            key = \"textaddstring1\" ;" @dclfiled)
  (write-line "            label = \"前缀\" ;" @dclfiled)
  (write-line "            width = 30  ;" @dclfiled)
  (write-line "        }" @dclfiled)
  (write-line "        :edit_box {" @dclfiled)
  (write-line "            key = \"textaddstring2\" ;" @dclfiled)
  (write-line "            label = \"后缀\" ;" @dclfiled)
  (write-line "            width = 30  ;" @dclfiled)
  (write-line "        }" @dclfiled)
  (write-line "    }" @dclfiled)
  (write-line "        ok_cancel;" @dclfiled)
  (write-line "}" @dclfiled)
  (close @dclfiled)

  ;;以下根据情况处理
  (setq @dclid (load_dialog @dclfiledame))
  (new_dialog "dzmjjsbdc" @dclid)
  ;;设置控件默认值
  (if (and (/= textaddstring1_1 "") (/= textaddstring1_1 nil))
    (set_tile "textaddstring1" textaddstring1_1)
  )
  (if (and (/= textaddstring2_1 "") (/= textaddstring2_1 nil))
    (set_tile "textaddstring2" textaddstring2_1)
  )
  (action_tile "accept" "(get_dzmjjsbdc_main)(done_dialog 1)");;;确定

  (setq return# (start_dialog))
  (cond
    ((= return# 1)
     (prompt "\n 选择文本<退出>")
     (if (setq ss (ssget (list (cons 0 "MTEXT,TEXT"))))
       (repeat (setq k (sslength ss))
(setq ent (ssname ss (setq k (1- k))))
(setq obj (vlax-ename->vla-object ent))
(setq str1 (vla-get-textstring obj))
(vla-put-textstring obj (strcat textaddstring1_1 str1 textaddstring2_1))
       )
     )
    )
  )
  (unload_dialog @dclid)
  (vl-file-delete @dclfiledame)
  (princ)
)

;;;;;获得对话框值
(defun get_dzmjjsbdc_main ()
(setq textaddstring1_1   (get_tile "textaddstring1"))
(setq textaddstring2_1   (get_tile "textaddstring2"))
)
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-27 09:58 , Processed in 0.161691 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表