明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1449|回复: 2

lsp命令的调用技巧!请ZZXXQQ再进来!

[复制链接]
发表于 2008-9-3 09:13:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2008-9-3 17:41:10 编辑

1,首先用lsp写了一个“按位置替换文字”的代码,快捷键为“THT”

代码如下:

(defun c:THT( /  str old lay nsty  new nam hig
                 sss sn en ang ang1 ent1 msg sca num hig1 sca1 )
(setq aa (tht))  
   ;---------------------------------------
   ;           Select text
   ;---------------------------------------
    ;;(princ "\nInput L,S,O,A to select text.")
    ;;(setq str(strcase (getstring "\nby Layer/by Style/select Object/All text:")))
    ;;(if (= str "L")
    ;;   (progn
    ;;      (setq lay(getstring "\nInput layer name:"))
    ;;      (if (tblsearch "layer" lay)
    ;;         (setq ss1(ssget "X" (list (cons 0 "TEXT") (cons 8 lay))))
    ;;         (setq msg(strcat "\nThe " lay " layer dose not exist."))
    ;;      )
    ;;   )
    ;;)
    ;;(if (= str "S")
    ;;   (progn
    ;;      (setq old(getstring "\nInput style name:"))
    ;;      (if (tblsearch "style" old)
    ;;         (setq ss1(ssget "X" (list (cons 0 "TEXT") (cons 7 old))))
    ;;         (setq msg(strcat "\nThe " old " style dose not exist."))
    ;;      )
    ;;   )
    ;;)
    ;;(if (= str "O")
    ;;    (progn
           (setq ss1(ssget))
           (if ss1
              (progn
                 (setq num(sslength ss1))
                 (while (/= num 0)
                     (setq ent1(ssname ss1 (- num 1)))
                     (if (/= (cdr (assoc 0 (entget ent1))) "TEXT") (ssdel ent1 ss1))
                     (setq num(- num 1))
                 )
              )
           )
           (if (= (sslength ss1) 0) (setq ss1 nil))
    ;;    )
    ;;)
    ;;(if (= str "A") (setq ss1(ssget "X" (list (cons 0 "TEXT")))))
    (setq sn(getint"Start No.:"))
    (setq en(getint"End No.:<=Start No.>"))
    (if (= en nil) (setq en sn))
    (setq sss(getstring"New word:"))
    (if (= sss nil) (seq sss ""))
    ;----------------------------------------------
    ;         CHANGE TEXT
    ;----------------------------------------------
    (if ss1
       (progn
          (setq num(sslength ss1))
          (setq num1 num)
          (while (/= num 0)
              (setq ent1 (entget (ssname ss1 (- num 1))))
              (setq nr(assoc 1 ent1))
              (setq elen(strlen (cdr nr)))
              (setq nr11(substr (cdr nr) 1 (- sn 1) ))
              (setq nr12(substr (cdr nr) (+ en 1) elen))
              (setq nr1(cons 1 (strcase (strcat nr11 sss nr12))))
              (setq ent1(subst nr1 nr ent1))
              (entmod ent1)
              (setq num(- num 1))
          )
          (princ (strcat "\n" (itoa num1) " text(s) have been changed."))
       )
       (progn
          (if msg (princ msg))
          (princ "\nNo text(s) selected.")
       )
    )
    (princ)
)

2,再编写第二段代码如下:(插入一个块后全部分解,然后想用上述“THT”命令来执行)

(defun c:2 () (command "-insert" "1" pause "" "" "" "explode" "L")
(command "tht" (ssget) "" “16” “18”))

;其中16和18为开始位置和结束未知

执行后,提示|tht|为未知命令,请问,该如何修改第二段代码,让他能实现啊!

发表于 2008-9-3 15:03:00 | 显示全部楼层
本帖最后由 作者 于 2008-9-3 15:04:05 编辑

(defun c:2 ()
(command "-insert" "1" pause "" "" "" "explode" "L")
(c:tht)
)

 楼主| 发表于 2008-9-3 17:39:00 | 显示全部楼层
本帖最后由 作者 于 2008-9-3 22:36:15 编辑

我已搞定,非常感谢!

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

本版积分规则

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

GMT+8, 2025-12-26 04:38 , Processed in 0.194140 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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