明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: magicheno

[提问] 固定的几个前缀字符,该如何实现自动切换呢

[复制链接]
 楼主| 发表于 2020-3-16 15:09:40 | 显示全部楼层
mikewolf2k 发表于 2020-3-16 15:03
前面就提醒过你了,这么点要点到何时才结束。

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

前进后退也不现实,你还得想想哪个方向近,即使方向对了,最远的步骤也有半个列表长,照你这个架势,列表会很长。
分组也不现实,每次操作还得先选组再选表,操作步骤还多一步。
一张图内应该只有一种前缀,批量的替换掉不行么?
 楼主| 发表于 2020-3-16 17:11:27 | 显示全部楼层
本帖最后由 magicheno 于 2020-3-16 17:18 编辑

11111111111
 楼主| 发表于 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*"这一组中循环的
发表于 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) ...

大神是否可以加个对话框进行点选,这样来的还要快点儿
发表于 2020-9-14 20:34:44 | 显示全部楼层
自动切换选择太费时间,可能会要很长时间
发表于 2020-10-4 10:47:42 | 显示全部楼层
路过学习下,这个是不是可以整个简单的词库的
发表于 2020-10-5 16:14:18 | 显示全部楼层
难度不大,判断比较多比较繁琐.大概思路就是
1.写一个二维列表,用来分组.
2.通过正则表达式分解选择的对象,分成前面的前缀和后面的数字.
3.通过前面的二维列表和对象的前缀判断所属分组.
4.按顺序切换前缀.

如果想要正逆序,可以通过grread函数判断点击的是左键还是右键
发表于 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 )
)
)











本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-18 11:22 , Processed in 0.138880 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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