找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 533|回复: 0

[编程申请]:请高手帮帮忙,字符串替换

[复制链接]
发表于 2005-3-4 09:42:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
一条直线上面有一个文字,如DN300-5-D,现在想将直线的长度值(换成单位m)替换字符中的D字母,我在网上找了相关LSP,但是完成不了最终的修改,请大师们帮帮忙,帮我改一下。
这段是找直线的长度的LSP,
(defun c:**()
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)   
  (setq sum 0 i 0)   
  (setq ss (ssget))     
    (repeat (sslength ss)
      (setq en (ssname ss i))
      (command "lengthen" en "")
      (setq l (getvar "perimeter"))      
      (setq sum (+ sum l)
        i (+ i 1))
      )   
  (setvar "osmode" os)
(setq ch (rtos sum 2 2))
  (SETQ ch1 (/ (atof ch) 1000))
  (SETQ ch2 (itoa(fix ch1)))
)
下面这段是字符替换的LSP
defun c:lsp_37()
(setq oldtxt  "D")
(setq newtxt ch2)
(setq ss (ssget "X" (list '(0 . "TEXT"))))
(setq oldnum (strlen oldtxt))
(setq newnum (strlen newtxt))
(setq i 0)
(repeat (sslength ss)
(setq ssn (ssname ss i))
(setq ssdata (entget ssn))
(setq p 1)
(setq ent (assoc 1 ssdata))
(setq entxt (cdr ent))
(setq ennum (strlen entxt))
(setq aa "")
(while (<= p ennum)
(setq kk (substr entxt p oldnum))
(if (= kk oldtxt)
(progn
(setq kk newtxt)
(setq p (- (+ p oldnum) 1))
)
(setq kk (substr entxt p 1))
)
(setq aa (strcat aa kk))
(setq p (1+ p))
)
(setq aa (cons 1 aa))
(setq ssdata (subst aa ent ssdata))
(entmod ssdata)
(setq i (1+ i))
)
(prin1)
)
小弟没有学过Lsp,请大师帮我改一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-22 04:30 , Processed in 0.160751 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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