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 )
)
)