找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 808|回复: 3

[求助] [求助]:所有选择的序号全部减4,怎么用LISP编写?

[复制链接]
发表于 2006-12-15 15:12:14 | 显示全部楼层 |阅读模式

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

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

×
把所选的序号全部减4,怎么用LISP编写?
比如图上有序号:020,021,022,200
现在当我选择它们时,则同时减去4,即使它们变成:016,017,018,196
请问高手,怎么解决呢?

有一个程序,是 S=**+S=** 的,可能可以参考一下:
(defun c:qq ()
  (setq        ss (ssget '((0 . "TEXT")))
        i  -1
        m  0
  )
  (while (setq s1 (ssname ss (setq i (1+ i))))
    (setq tx (cdr (assoc 1 (entget s1))))

    (if        (setq n (distof (substr tx 3)))

      (setq m (+ m n))
    )
  )
(command"layer" "set" "MJZJ" "")
(setq ms (STRCAT "S=" (RTOS m 2 2)))
(setq pt (getpoint "主楼加封闭阳台(文本中心)--:"))
(command "text" "j" "mc" pt "0.75" "" ms)
;m
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-12-15 17:43:16 | 显示全部楼层
给个思路吧:
选择text实体-通过ascii值判断是否是数字-将数字字符串转为数值计算-结果转为字符输出
批量转换就用循环,这个程序本身并不难做到,短短几行就可以
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-15 20:52:18 | 显示全部楼层
我在原码区贴过一个
现在给你吧,gf命令可以输入要加减的数字(整数),默认为一
gg命令可以选择要更改的数字了
程序没有经过整理,比较乱,但是能用



;;;子程序
(defun c:gf()
(setq bc (getint "\n 请输入步长:"))
)



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;子程序  (中间有横杠,取后面的数字更改)

(defun ddjq()
(setq shuzi (substr wenzi (+ 2 gang)))
(setq shishu (atoi shuzi))   ;把数字改为实数
(setq qianzhui (substr wenzi 1 (+ 1 gang)))
(if (= lll "<")
(progn
(setq b (+ shishu bc nn))                               ;
(setq c (itoa b))                                       ;
(setq d (strcat qianzhui c ">"))                        ;
(setq e (cons 1 d))                                     ;
(setq ddd (subst e wenzizu ddd))                        ;
(entmod ddd)                                            ;
(princ)                                                 ;
)  ;end progn                                           ;

(progn
(setq b (+ shishu bc nn))                               ;
(setq c (itoa b))                                       ;
(setq d (strcat qianzhui c))                        ;
(setq e (cons 1 d))                                     ;
(setq ddd (subst e wenzizu ddd))                        ;
(entmod ddd)                                            ;
(princ)                                                 ;
)  ;end progn                                           ;


) ;end if
)  ;end defun

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:gg()
(prompt "\n 设置步长命令为:gf,初始步长为1")
(if (= bc nil)
(setq bc 1)
)
(setq a (ssget))
(setq len (sslength a))   ;取得对象的个数
(setq n 0)
(setq nn 0)
(command "undo" "begin")
(repeat len
(setq ent (ssname a n))    ;取得实体的名称
(setq ddd (entget ent))      ;得到实体的联合列表

(setq djq (cdr (assoc 0 ddd)))

(if (or (= djq "MTEXT") (= djq "TEXT"))

(dkdk)

)        ;end if

(setq n (+ 1 n))

)       ;end repeat

(setq nn (+ nn bc))
(command "undo" "end")
)




;;;子程序

(defun dkdk()
(setq wenzizu (assoc 1 ddd))         ;取出字的内容(群码为1)
(setq wenzi (cdr wenzizu))         ;文字
(setq gang (vl-string-search "-" wenzi))

(setq wenzilen (strlen wenzi))
(setq fanyihou (vl-string-translate "1234567890" "##########" wenzi))  ;翻译字符

(setq weizhi (vl-string-search "#" fanyihou))  ;找出#的位置

(setq qianzhui (substr wenzi 1 weizhi))   ;取出前缀
(setq shuzi (substr wenzi (+ weizhi 1)))   ;取出字符串形式的数字
(setq shishu (atoi shuzi))   ;把数字改为实数
(setq lll (substr wenzi 1 1))  ;判断第一个字符是什么

(if (= gang nil)
(progn


(cond



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
((= lll "<")                                            ;                                 
(progn                                                  ;
(setq b (+ shishu bc nn))                               ;
(setq c (itoa b))                                       ;
(setq d (strcat qianzhui c ">"))                        ;
(setq e (cons 1 d))                                     ;
(setq ddd (subst e wenzizu ddd))                        ;
(entmod ddd)                                            ;
(princ)                                                 ;
)  ;end progn                                           ;
)  ;end first                                           ;
                                                        ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


                                                             ;如果要加判断的话,请选择这里



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(t                                                      ;
(progn                                                  ;
(setq b (+ shishu bc nn))                               ;
(setq c (itoa b))                                       ;
(setq d (strcat qianzhui c))                            ;
(setq e (cons 1 d))                                     ;
(setq ddd (subst e wenzizu ddd))                        ;
(entmod ddd)                                            ;
(princ)                                                 ;
)    ;end progn                                         ;
)                                                       ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


)  ;end cond
)   ;end progn
(ddjq)
)   ;end if

)    ;end defun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 46个

财富等级: 招财进宝

发表于 2020-4-20 14:41:41 | 显示全部楼层
位数变了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 06:25 , Processed in 0.387853 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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