magicheno 发表于 2020-3-16 15:09:40

mikewolf2k 发表于 2020-3-16 15:03
前面就提醒过你了,这么点要点到何时才结束。

所以么,有个前进后退的功能,或者如果能分个组也可以楼,就是不知道该怎么分组

mikewolf2k 发表于 2020-3-16 16:24:54

magicheno 发表于 2020-3-16 15:09
所以么,有个前进后退的功能,或者如果能分个组也可以楼,就是不知道该怎么分组

前进后退也不现实,你还得想想哪个方向近,即使方向对了,最远的步骤也有半个列表长,照你这个架势,列表会很长。
分组也不现实,每次操作还得先选组再选表,操作步骤还多一步。
一张图内应该只有一种前缀,批量的替换掉不行么?

magicheno 发表于 2020-3-16 17:11:27

本帖最后由 magicheno 于 2020-3-16 17:18 编辑

11111111111

magicheno 发表于 2020-3-16 17:18:52

mikewolf2k 发表于 2020-3-16 16:24
前进后退也不现实,你还得想想哪个方向近,即使方向对了,最远的步骤也有半个列表长,照你这个架势,列 ...

专业不一样哦,批量都知道的,偶尔个别调整的,太托了的,而且分的很开,有些相同前缀的不不打算调整,特定区域的几个调整,等等的,我就想一个一个表或者几个表在一个命令里里面的,比如"JL*""JS*""JD*""JZ*""JG*"这个为一组,"XH*""DX*""GX*"一组;"RH*""RL*”一组 "DN*""dn*""De*"一组等等,点击文字DX,就在"XH*""DX*""GX*"这一组中循环的

00放飞梦想00 发表于 2020-9-14 20:33:44

start4444 发表于 2020-3-9 11:19
(defun C:tt5(/ entname i lst new_str)
(setq lst (list "DN15""dn15""De15""Dw15""D15") i -1) ...

大神是否可以加个对话框进行点选,这样来的还要快点儿

00放飞梦想00 发表于 2020-9-14 20:34:44

自动切换选择太费时间,可能会要很长时间

paulpipi 发表于 2020-9-14 22:54:45

非常好

草原VS雄鹰 发表于 2020-10-4 10:47:42

路过学习下,这个是不是可以整个简单的词库的

wyl219 发表于 2020-10-5 16:14:18

难度不大,判断比较多比较繁琐.大概思路就是
1.写一个二维列表,用来分组.
2.通过正则表达式分解选择的对象,分成前面的前缀和后面的数字.
3.通过前面的二维列表和对象的前缀判断所属分组.
4.按顺序切换前缀.

如果想要正逆序,可以通过grread函数判断点击的是左键还是右键

masterlong 发表于 2020-10-6 14:35:58

本帖最后由 masterlong 于 2020-10-6 14:42 编辑

为啥要一定要纠结于“轮换”?
借助doslib搞个弹出式菜单
不是很简单的事吗?
用GETINT在命令行做选择题
或者GETSTRING直接输入要换的字符
也没多复杂

需要的doslib函数库
在这里下
http://bbs.mjtd.com/thread-173225-1-1.html



(defun c:tt()
(command "undo" "g")
(setq xxlist '("dn" "de" "" "jg" "pc" "sc"))   ;;字符串列表随意增减,区分大小写,""表示分割线
(setq yylist (vl-remove "" xxlist))
(setq zzlist (mapcar ''((z) (strcat z "*")) yylist))
(setq zzstr (list2str zzlist ","))

(if (and
    (setq ss (ssget (list '(0 . "text")(cons 1 zzstr))))
    (setq id (dos_popupmenu xxlist))
    (setq xx (nth id yylist))
)
(foreach tt (ss2list ss)
   (setq str (cdr (assoc 1 (entget tt))))
   (setq tmp (vl-remove-if-not''((z) (wcmatch str z)) zzlist))
   (setq tmp (car tmp))
   (setq tmp (substr tmp 1 (1- (strlen tmp))))
   (setq newstr (dos_strreplace str tmp xx))
   (entmod (list (cons -1 tt) (cons 1 newstr)))
)
)
(command "undo" "e")
(princ)
)
;999公共函数
;;字符串列表采用分隔符连接成字符串——————本函数未加入错误判别 a.strlist是否表 b.表中元素是否都为字符串 c.ken是否字符串
(defun list2str( strlist ken / str )
(setq str (car strlist))
(foreach x (cdr strlist)
(setq str (strcat str ken x))
)
str
)
;999公共函数
;;选择集转为图元列表
(defun ss2list ( ss / n i elist )
(cond
((null ss) NIL)
((= (type ss) 'Pickset)
   (setq n(sslength ss)
   i n
   elist '()
   )
   (repeat n
    (setq i (1- i))
    ;;如果没有这个if,那么选择集中被删除的图元,也会被加入到列表之中————但是极其偶尔也有可能,图元不存在但是能entget(遇到过一次,原因不明,或许是CAD的BUG)
    (if (entget (ssname ss i))
   (setq elist (cons (ssname ss i) elist))
    )
   )
   elist
)
((= (type ss) 'ename)
   (list ss)
)
((= (type ss) 'list)
   (vl-remove-if-not ''((x) (and (= (type x) 'ename) (entget x))) ss)
)
( T NIL )
)
)











页: 1 2 [3] 4
查看完整版本: 固定的几个前缀字符,该如何实现自动切换呢