明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 884|回复: 9

重新改进版增量刷支持原程序不支持框选首部增量取消注册表保存参数部分电脑不能运行

  [复制链接]
发表于 2025-10-30 07:35:08 | 显示全部楼层 |阅读模式
本帖最后由 小毛草 于 2025-11-1 12:27 编辑
  1. ;;****************************************************************递增刷
  2. ;;; 2016.05.21,QHT修改:增加及去除几处undo设置
  3. ;;; 名称:递增刷(可框选)
  4. ;;; 功能:刷文本末尾或首部的数字递增指定值
  5. ;;; ______________________________________
  6. (defun c:QF (/ a b bb box c co col cv e e1 e2 en ent ent1 errsub fun i key kk l l1 len lst msg name orerr
  7.          pix pt pt1 pt2 s sbak si ss ss1 ssparm st2 st3 st4 txt1 txt2 txt3 txtlong x y zz current-kk
  8.       )
  9.     (vl-load-com)
  10.     (setvar 'cecolor "BYLAYER")
  11.     (setvar "shortcutmenu" 0);;;;自定义右键单击(2.选定对象,单击右键为菜单)
  12.     (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
  13.    
  14.     ; 初始化全局变量(如果不存在)
  15.     (if (not (boundp '*QF-position*))
  16.         (setq *QF-position* "尾部")
  17.     )
  18.     (if (not (boundp '*QF-step*))
  19.         (setq *QF-step* "1")
  20.     )
  21.     (if (not (boundp '*QF-select-mode*))
  22.         (setq *QF-select-mode* "窗选")
  23.     )
  24.    
  25.     ; ,caoyin老大明经"拜新年"帖子提供,langjs修改
  26.     (defun d_brush (col x y len / a b c)
  27.       (grvecs (list col (list (- x (setq a (* len 1.5))) (- y len)) (list (- x a) (setq b (- y (* len 7.5)))) col (list (- x
  28.                                  (setq c
  29.                                  (* len 0.5)
  30.                                  )
  31.                               ) y
  32.                               ) (list (- x c) b)
  33.         col (list (+ x c) y) (list (+ x c) b) col (list (+ x a) (- y len)) (list (+ x a) b) col (list (- x (setq a
  34.                                    (* len
  35.                                 4.5
  36.                                    )
  37.                                    )
  38.                               ) b
  39.                               ) (list (+ x a) b) col
  40.         (list (- x a) b) (list (- x (setq c (* len 6.5))) (- y (* len 9))) col (list (+ x a) b) (list (+ x c)
  41.                               (setq a (- y
  42.                                    (* len 9)
  43.                                 )
  44.                               )
  45.                               ) col (list (- x c) a)
  46.         (list (- x c) (setq b (- y (* len 17)))) col (list (+ x c) a) (list (+ x c) b) col (list (- x c) (setq a
  47.                                  (- y
  48.                                     (* len
  49.                                  10
  50.                                     )
  51.                                  )
  52.                                  )
  53.                                ) (list (+ x c) a) col
  54.         (list (- x c) (setq a (- y (* len 11)))) (list (+ x c) a) col (list (- x c) (setq a (- y (* len 13))))
  55.         (list (+ x c) a) col (list (- x c) (setq a (- y (* len 14)))) (list (+ x c) a) col (list (- x c) b)
  56.         (list (+ x c) b) col (list (- x c) b) (list (- x (* len 11)) (setq a (- y (* len 21.5)))) col (list (- x
  57.                                  (* len 2)
  58.                               ) b
  59.                               ) (list (- x
  60.                                    (* len
  61.                                 6.5
  62.                                    )
  63.                                 ) a
  64.                                 ) col
  65.         (list (+ x (* len 2)) b) (list (- x (* len 2.5)) a) col (list (+ x c) b) (list (+ x (* len 2)) a) col
  66.         (list (- x (* len 11)) a) (list (+ x (* len 3)) a)
  67.         ) (list (list 1 0 0 (* len 14)) (list 0 1 0 (* len -4)) '(0 0 1 0) '(0 0 0 1))
  68.       )
  69.     )
  70.   (defun pickbox (pt / si cv)
  71.       (setq si (* (/ (getvar "pickbox") (cadr (getvar "screensize"))) (getvar "viewsize") 0.5)
  72.       cv (list si si 0)
  73.       )
  74.       (list (mapcar
  75.         '+
  76.         pt
  77.         cv
  78.       ) (mapcar
  79.     '-
  80.     pt
  81.     cv
  82.         )
  83.       )
  84.     )
  85.       (defun p2u (pix)
  86.       (* pix (/ (getvar "viewsize") (cadr (getvar "screensize"))))
  87.     )
  88.   (defun llt:match (pt col ssparm fun / a b c co cv e e1 e2 ent i len lst msg pix pt1 pt2 si ss ss1 x y) ; 带有刷子的ssget功能子程序
  89.     (or
  90.       (setq co (cadr col))
  91.       (setq co 7)
  92.     )
  93.     (or
  94.       (setq col (car col))
  95.       (setq col 7)
  96.     )
  97.     (or
  98.       (setq msg (car ssparm))
  99.       (setq msg "\n选择目标对象: ")
  100.     )
  101.     (setq ssparm (cadr ssparm)
  102.     len (p2u 1)
  103.     x (car pt)
  104.     y (cadr pt)
  105.     )
  106.     (princ msg)
  107.     (while (/= (car pt1) 11)
  108.       (redraw)
  109.       (d_brush col x y len)
  110.       (while (not (member (car (setq pt1 (grread t 12 2))) '(3 11)))
  111.   (setq pt1 (cadr pt1))
  112.   (if (vl-consp pt1)
  113.     (progn
  114.       (if (> (distance pt1 pt) (p2u (* 0.0001 (car (getvar "screensize")))))
  115.         (progn
  116.     (redraw)
  117.     (setq len (p2u 1)
  118.           x (car pt)
  119.           y (cadr pt)
  120.     )
  121.     (d_brush col x y len)
  122.     (setq pt pt1)
  123.         )
  124.       )
  125.     )
  126.   )
  127.       )
  128.       (redraw)
  129.       (if (and
  130.       (= (car pt1) 3)
  131.       (princ msg)
  132.       (not (setq ss1 (apply
  133.            'ssget
  134.            (append
  135.              '("_c")
  136.              (pickbox (cadr pt1))
  137.              (list ssparm)
  138.            )
  139.          )
  140.      )
  141.       )
  142.     )
  143.   (progn
  144.     (princ "指定对角点: ")
  145.     (setq pt1 (list (caadr pt1) (cadadr pt1)))
  146.     (while (not (member (car (setq pt2 (grread t 12 1))) '(3 11)))
  147.       (setq pt2 (list (caadr pt2) (cadadr pt2)))
  148.       (if (vl-consp pt1)
  149.         (progn
  150.     (if (> (distance pt2 pt) (p2u (* 0.0001 (car (getvar "screensize")))))
  151.       (progn
  152.         (redraw)
  153.         (setq len (p2u 1)
  154.         x (car pt)
  155.         y (cadr pt)
  156.         co (abs co)
  157.         )
  158.         (if (> (car pt1) (car pt2))
  159.           (setq co (- co))
  160.         )
  161.         (d_brush col x y len)
  162.         (grvecs (list co pt1 (list (car pt1) (cadr pt2)) co pt2 (list (car pt1) (cadr pt2)) co pt2 (list (car pt2)
  163.                                  (cadr pt1)
  164.                                  ) co pt1
  165.           (list (car pt2) (cadr pt1))
  166.           )
  167.         )
  168.         (setq pt pt2
  169.         ss1 (ssget (if (minusp co)
  170.                "_c"
  171.                "_w"
  172.              ) pt1 pt2 ssparm
  173.             )
  174.         )
  175.       )
  176.     )
  177.         )
  178.       )
  179.     )
  180.   )
  181.       )
  182.       (or
  183.   ss
  184.   (setq ss (ssadd))
  185.       )
  186.       (if ss1
  187.   (progn
  188.     (setq lst '())
  189.     (repeat (setq i (sslength ss1))
  190.       (setq e (ssname ss1 (setq i (1- i))))
  191.       (setq ent (entget e))
  192.       (setq pt1 (cdr (assoc 10 ent)))
  193.       (setq lst (cons (list pt1 e) lst))
  194.     )
  195.     (setq lst (vl-sort lst (function (lambda (e1 e2) ; 框选文本先由上到下排序(其它情况自己修改)
  196.                (> (cadr (car e1)) (cadr (car e2)))
  197.              )
  198.          )
  199.         )
  200.     )
  201.     (setq lst (vl-sort lst (function (lambda (e1 e2) ; 框选文本后由左到右排序(其它情况自己修改)
  202.                (< (car (car e1)) (if (and
  203.                      (>= (car (car e2)) (- (car (car e1)) txtlong))
  204.                      (<= (car (car e2)) (+ (car (car e1)) txtlong))
  205.                    )
  206.                  (car (car e1))
  207.                  (car (car e2))
  208.                      )
  209.                )
  210.              )
  211.          )
  212.         )
  213.     )
  214.     (setq lst (reverse lst))
  215.     (repeat (setq i (length lst))
  216.       (setq e (cadr (nth (setq i (1- i))
  217.              lst
  218.         )
  219.         )
  220.       )
  221.       (ssadd e ss)
  222.       (redraw e 3)
  223.       (apply
  224.         fun
  225.         (list e)
  226.       )
  227.     )
  228.   )
  229.       )
  230.       (setq ss1 nil)
  231.     )
  232.     (redraw)
  233.     ss
  234.   )
  235.   (defun llt:entsel (pt col / a b c col en ent len pix pt x y) ; 带有刷子的entsel功能子程序,caoyin老大提供
  236.     (redraw)
  237.     (setq len (p2u 1)
  238.     x (car pt)
  239.     y (cadr pt)
  240.     )
  241.     (d_brush col x y len)
  242.     (while (not (member (car (setq pt1 (grread t 12 2))) '(3 11)))
  243.       (setq pt1 (cadr pt1))
  244.       (if (vl-consp pt1)
  245.   (progn
  246.     (or
  247.       pt
  248.       (setq pt pt1)
  249.     )
  250.     (setq x (car pt)
  251.     y (cadr pt)
  252.     )
  253.     (if (> (distance pt1 pt) (p2u (* 0.0001 (car (getvar "screensize")))))
  254.       (progn
  255.         (redraw)
  256.         (setq len (p2u 1)
  257.         x (car pt)
  258.         y (cadr pt)
  259.         )
  260.         (d_brush col x y len)
  261.         (setq pt pt1)
  262.       )
  263.     )
  264.   )
  265.       )
  266.     )
  267.     (redraw)
  268.     (and
  269.       (= (car pt1) 3)
  270.       (vl-consp (cadr pt1))
  271.       (setq en (nentselp (cadr pt1)))
  272.     )
  273.     (setq ent (car en))
  274.     (setq pt1 (cadr pt1))
  275.     (if (cadddr en)
  276.       (setq name (cadddr en))
  277.     )
  278.     ent
  279.   )
  280.   (defun errsub (msg)
  281.     (if (not (member msg '("程序中断" "功能撤销"
  282.           "退出 / 中断" ""
  283.          )
  284.        )
  285.   )
  286.       (princ (strcat "\n" msg))
  287.     ); if
  288. (vla-EndUndoMark      
  289.     (vla-get-ActiveDocument (vlax-get-acad-object))
  290.   )  
  291.     (setvar "shortcutmenu" 2)
  292.     (redraw)
  293.     (setq *error* orerr)
  294.     (prin1)
  295.   )
  296.   (defun jys002 (x / ent txt3)         ; 尾部框
  297.     (if (and
  298.     (setq ent (entget x))
  299.     (member (cdr (assoc 0 ent)) '("TEXT" "MTEXT"))
  300.   )
  301.       (progn
  302.   (setq kk (jys003 kk sbak))
  303.   (if (= zz 0)
  304.     (setq txt3 kk)
  305.     (setq txt3 (strcat txt2 kk))
  306.   )
  307.   (entmod (subst
  308.       (cons 1 txt3)
  309.       (assoc 1 ent)
  310.       ent
  311.     )
  312.   )
  313.       )
  314.     )
  315.   )
  316.   (defun jys003 (st2 sbak / l l1 s st3 st4) ; 处理尾部数字
  317.     (setq st3 st2
  318.     s "0"
  319.     st4 ""
  320.     l (strlen st2)
  321.     )
  322.     (while (eq s "0")
  323.       (setq s (substr st3 1 1)
  324.       st3 (substr st3 2)
  325.       st4 (if (eq s "0")
  326.       (strcat st4 s)
  327.       st4
  328.     )
  329.       )
  330.     )               ; 将首位是0的数字分离出来
  331.     (setq st2 (atoi st2)
  332.     st2 (+ st2 sbak)
  333.     st2 (itoa st2)
  334.     st2 (strcat st4 st2)
  335.     l1 (strlen st2)
  336.     s (substr st2 1 1)
  337.     )
  338.     (if (and
  339.     (= s "0")
  340.     (> l1 l)
  341.   )
  342.       (setq st2 (substr st2 2))
  343.     )               ; 处理了形如A09变为A10的问题
  344.     st2
  345.   )
  346.   
  347.   ;; 命令行设置函数
  348.   (defun command-line-settings ()
  349.     (princ "\n=== 递增刷设置 ===")
  350.    
  351.     ;; 设置递增位置
  352.     (princ (strcat "\n当前递增位置: " *QF-position*))
  353.     (initget "T H")
  354.     (setq wbak (getkword "\n设置递增位置 [尾部(T)/首部(H)] <保持当前>: "))
  355.     (cond
  356.       ((= wbak "T") (setq *QF-position* "尾部"))
  357.       ((= wbak "H") (setq *QF-position* "首部"))
  358.     )
  359.    
  360.     ;; 设置递增步长
  361.     (princ (strcat "\n当前递增步长: " *QF-step*))
  362.     (initget "1 2 3 4 5 6 7 8 9 10 15 20 30 40 50")
  363.     (setq sbak (getkword "\n设置递增步长 [1/2/3/4/5/6/7/8/9/10/15/20/30/40/50] <保持当前>: "))
  364.     (if sbak
  365.       (setq *QF-step* sbak)
  366.     )
  367.    
  368.     ;; 设置选择方式
  369.     (princ (strcat "\n当前选择方式: " *QF-select-mode*))
  370.     (initget "S W")
  371.     (setq dbak (getkword "\n设置选择方式 [单选(S)/窗选(W)] <保持当前>: "))
  372.     (cond
  373.       ((= dbak "S") (setq *QF-select-mode* "单选"))
  374.       ((= dbak "W") (setq *QF-select-mode* "窗选"))
  375.     )
  376.    
  377.     (princ "\n设置已保存!")
  378.   )

  379.   (setvar "cmdecho" 0)
  380.   (vl-load-com)
  381.   (setq orerr *error*)
  382.   (setq *error* errsub)
  383.   
  384.   (setq sbak (atoi *QF-step*))
  385.   
  386.   (while (progn
  387.      (initget "S ")
  388.      (if (= (setq ent (nentsel (strcat "\n选择起始文字[设置(S)]:<" *QF-position* "加" *QF-step* ">: ")))
  389.             "S"
  390.          )
  391.        (progn
  392.          (command-line-settings)
  393.          (setq sbak (atoi *QF-step*)) ; 更新步长值
  394.          t ; 继续循环
  395.        )
  396.        (progn
  397.          (or
  398.            (null ent)
  399.            (not (member (cdr (assoc 0 (entget (car ent)))) '("TEXT" "MTEXT" "ATTRIB")))
  400.          )
  401.        )
  402.      )
  403.    )
  404.     (if (= 52 (getvar "errno"))
  405.       (vl-exit-with-error "")
  406.     )
  407.   )
  408.   
  409.   (setq pt1 (cadr ent))
  410.   (setq txt1 (entget (car ent)))
  411.   (setq box (textbox (list (assoc 1 txt1) (assoc 40 txt1) (assoc 7 txt1)))) ; 文本框坐标
  412.   (setq txtlong (/ (- (car (cadr box)) (car (car box))) 2))
  413.   (setq txt1 (cdr (assoc 1 txt1)))
  414.   
  415.   (if (= *QF-position* "尾部")
  416.     (progn
  417.       (setq zz (strlen txt1))
  418.       (while (and
  419.          (>= zz 1)
  420.          (or
  421.      (> (atoi (substr txt1 zz 1)) 0)
  422.      (= (substr txt1 zz 1) "0")
  423.          )
  424.        )
  425.   (setq zz (- zz 1))
  426.       )
  427.       (setq kk (substr txt1 (+ zz 1)))
  428.       (if (/= zz 0)
  429.   (setq txt2 (substr txt1 1 zz))
  430.       )
  431.       ;;(command ".UNDO" "BE")
  432.       (if (= *QF-select-mode* "窗选")
  433.   (llt:match pt1 '(2 7) (list (strcat "\n选择目标文字:<尾部加" *QF-step* ">") '((0 . "*TEXT"))) '(lambda (x /)
  434.                              (jys002 x)
  435.                            )
  436.   )
  437.   (while t
  438.     (princ (strcat "\n选择目标文字:<尾部加" *QF-step* ">"))
  439.     (setq name nil)
  440.     (if (and
  441.     (setq ent (llt:entsel pt1 2))
  442.     (setq ent (entget ent))
  443.     (member (cdr (assoc 0 ent)) '("TEXT" "MTEXT" "ATTRIB"))
  444.         )
  445.       (progn
  446.         (setq kk (jys003 kk sbak))
  447.         (if (= zz 0)
  448.     (setq txt3 kk)
  449.     (setq txt3 (strcat txt2 kk))
  450.         )
  451.         (if name
  452.     (if (and
  453.           (setq ent1 (entget (car name)))
  454.           (= (cdr (assoc 0 ent1)) "DIMENSION")
  455.         )
  456.       (entmod (subst
  457.           (cons 1 txt3)
  458.           (assoc 1 ent1)
  459.           ent1
  460.         )
  461.       )
  462.       (progn
  463.         (entmod (subst
  464.             (cons 1 txt3)
  465.             (assoc 1 ent)
  466.             ent
  467.           )
  468.         )
  469.         (entupd (car name))
  470.       )
  471.     )
  472.     (entmod (subst
  473.         (cons 1 txt3)
  474.         (assoc 1 ent)
  475.         ent
  476.       )
  477.     )
  478.         )
  479.       )
  480.       (vl-exit-with-error "")
  481.     )
  482.   )
  483.       )
  484.      (command ".UNDO" "E")
  485.     )
  486.   )
  487.   (if (= *QF-position* "首部")
  488.     (progn
  489.       (setq zz 1)
  490.       (while (or
  491.          (> (atoi (substr txt1 zz 1)) 0)
  492.          (= (substr txt1 zz 1) "0")
  493.        )
  494.   (setq zz (+ zz 1))
  495.       )
  496.       (if (= zz 1)
  497.   (setq kk "0")
  498.   (setq kk (substr txt1 1 (- zz 1)))
  499.       )
  500.       ;;(command ".UNDO" "BE")
  501.       (if (= *QF-select-mode* "窗选")
  502.   (progn
  503.     ;; 修复:首部框选时使用递增逻辑
  504.     (setq current-kk (jys003 kk sbak)) ; 初始化当前值
  505.     ;; 使用局部函数包装,确保能访问到current-kk
  506.     (defun local-jys001-incremental (x)
  507.       (setq ent (entget x))
  508.       (setq txt1 (cdr (assoc 1 ent)))
  509.       (setq zz 1)
  510.       (while (or
  511.          (> (atoi (substr txt1 zz 1)) 0)
  512.          (= (substr txt1 zz 1) "0")
  513.        )
  514.         (setq zz (+ zz 1))
  515.       )
  516.       (if (> zz (strlen txt1))
  517.         (setq txt3 current-kk)
  518.         (setq txt3 (strcat current-kk (substr txt1 zz)))
  519.       )
  520.       (entmod (subst
  521.           (cons 1 txt3)
  522.           (assoc 1 ent)
  523.           ent
  524.         )
  525.       )
  526.       ;; 递增当前值,为下一个对象准备
  527.       (setq current-kk (jys003 current-kk sbak))
  528.     )
  529.     (llt:match pt1 '(2 7) (list (strcat "\n选择目标文字:<首部加" *QF-step* ">") '((0 . "*TEXT")))
  530.       'local-jys001-incremental
  531.     )
  532.   )
  533.   (while t
  534.     (setq kk (jys003 kk sbak))
  535.     (princ (strcat "\n选择目标文字:<首部加" *QF-step* ">"))
  536.     (setq name nil)
  537.     (if (and
  538.     (setq ent (llt:entsel pt1 2))
  539.     (setq ent (entget ent))
  540.     (member (cdr (assoc 0 ent)) '("TEXT" "MTEXT" "ATTRIB"))
  541.         )
  542.       (progn
  543.         (setq txt1 (cdr (assoc 1 ent)))
  544.         (setq zz 1)
  545.         (while (or
  546.            (> (atoi (substr txt1 zz 1)) 0)
  547.            (= (substr txt1 zz 1) "0")
  548.          )
  549.     (setq zz (+ zz 1))
  550.         )
  551.         (if (> zz (strlen txt1))
  552.     (setq txt3 kk)
  553.     (setq txt3 (strcat kk (substr txt1 zz)))
  554.         )
  555.         (if name
  556.     (if (and
  557.           (setq ent1 (entget (car name)))
  558.           (= (cdr (assoc 0 ent1)) "DIMENSION")
  559.         )
  560.       (entmod (subst
  561.           (cons 1 txt3)
  562.           (assoc 1 ent1)
  563.           ent1
  564.         )
  565.       )
  566.       (progn
  567.         (entmod (subst
  568.             (cons 1 txt3)
  569.             (assoc 1 ent)
  570.             ent
  571.           )
  572.         )
  573.         (entupd (car name))
  574.       )
  575.     )
  576.     (entmod (subst
  577.         (cons 1 txt3)
  578.         (assoc 1 ent)
  579.         ent
  580.       )
  581.     )
  582.         )
  583.       )
  584.       (vl-exit-with-error "")
  585.     )
  586.   )
  587.       )
  588.     )
  589.   )
  590.   (setq *error* orerr)
  591.   (command ".UNDO" "E")
  592.   (princ)
  593. )

改进版,增量刷,支持原程序不支持首部增量!感谢原作者的代码!

本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +2 收起 理由
ptime + 1 很给力!
lucas_3333 + 1 神马都是浮云

查看全部评分

回复

使用道具 举报

发表于 2025-10-30 11:19:47 | 显示全部楼层
经测试,S后无选项

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-10-30 11:22:42 | 显示全部楼层
是不是你的CAD问题,我这边没有问题!
回复 支持 反对

使用道具 举报

发表于 2025-10-30 13:08:46 | 显示全部楼层
红字提示时,右键退出,会把提示字留在屏幕上,需改进
回复 支持 反对

使用道具 举报

发表于 2025-10-30 14:08:41 | 显示全部楼层
zxw2735 发表于 2025-10-30 11:19
经测试,S后无选项

一样的问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-10-30 15:12:48 | 显示全部楼层
本帖最后由 小毛草 于 2025-10-30 15:14 编辑
  1. <div class="blockcode"><blockquote>;;****************************************************************递增刷
  2. ;;; 2016.05.21,QHT修改:增加及去除几处undo设置
  3. ;;; 名称:递增刷(可框选)
  4. ;;; 功能:刷文本末尾或首部的数字递增指定值
  5. ;;; ______________________________________
  6. (defun c:QF (/ a b bb box c co col cv dbak dcl_re dclname e e1 e2 en ent ent1 errsub filen fun i key kk l l1 len lst lst1 lst2 lst3
  7.          msg name newlist orerr pix pt pt1 pt2 s sbak si ss ss1 ssparm st2 st3 st4 stream tempname txt1 txt2 txt3 txtlong vvs
  8.          wbak x y zz current-kk
  9.       )
  10.     (vl-load-com)
  11.     (setvar 'cecolor "BYLAYER")
  12.     (setvar "shortcutmenu" 0);;;;自定义右键单击(2.选定对象,单击右键为菜单)
  13.     (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
  14.      ; ,caoyin老大明经"拜新年"帖子提供,langjs修改
  15.     (defun d_brush (col x y len / a b c)
  16.       (grvecs (list col (list (- x (setq a (* len 1.5))) (- y len)) (list (- x a) (setq b (- y (* len 7.5)))) col (list (- x
  17.                                  (setq c
  18.                                  (* len 0.5)
  19.                                  )
  20.                               ) y
  21.                               ) (list (- x c) b)
  22.         col (list (+ x c) y) (list (+ x c) b) col (list (+ x a) (- y len)) (list (+ x a) b) col (list (- x (setq a
  23.                                    (* len
  24.                                 4.5
  25.                                    )
  26.                                    )
  27.                               ) b
  28.                               ) (list (+ x a) b) col
  29.         (list (- x a) b) (list (- x (setq c (* len 6.5))) (- y (* len 9))) col (list (+ x a) b) (list (+ x c)
  30.                               (setq a (- y
  31.                                    (* len 9)
  32.                                 )
  33.                               )
  34.                               ) col (list (- x c) a)
  35.         (list (- x c) (setq b (- y (* len 17)))) col (list (+ x c) a) (list (+ x c) b) col (list (- x c) (setq a
  36.                                  (- y
  37.                                     (* len
  38.                                  10
  39.                                     )
  40.                                  )
  41.                                  )
  42.                                ) (list (+ x c) a) col
  43.         (list (- x c) (setq a (- y (* len 11)))) (list (+ x c) a) col (list (- x c) (setq a (- y (* len 13))))
  44.         (list (+ x c) a) col (list (- x c) (setq a (- y (* len 14)))) (list (+ x c) a) col (list (- x c) b)
  45.         (list (+ x c) b) col (list (- x c) b) (list (- x (* len 11)) (setq a (- y (* len 21.5)))) col (list (- x
  46.                                  (* len 2)
  47.                               ) b
  48.                               ) (list (- x
  49.                                    (* len
  50.                                 6.5
  51.                                    )
  52.                                 ) a
  53.                                 ) col
  54.         (list (+ x (* len 2)) b) (list (- x (* len 2.5)) a) col (list (+ x c) b) (list (+ x (* len 2)) a) col
  55.         (list (- x (* len 11)) a) (list (+ x (* len 3)) a)
  56.         ) (list (list 1 0 0 (* len 14)) (list 0 1 0 (* len -4)) '(0 0 1 0) '(0 0 0 1))
  57.       )
  58.     )
  59.   (defun pickbox (pt / si cv)
  60.       (setq si (* (/ (getvar "pickbox") (cadr (getvar "screensize"))) (getvar "viewsize") 0.5)
  61.       cv (list si si 0)
  62.       )
  63.       (list (mapcar
  64.         '+
  65.         pt
  66.         cv
  67.       ) (mapcar
  68.     '-
  69.     pt
  70.     cv
  71.         )
  72.       )
  73.     )
  74.       (defun p2u (pix)
  75.       (* pix (/ (getvar "viewsize") (cadr (getvar "screensize"))))
  76.     )
  77.   (defun llt:match (pt col ssparm fun / a b c co cv e e1 e2 ent i len lst msg pix pt1 pt2 si ss ss1 x y) ; 带有刷子的ssget功能子程序
  78.     (or
  79.       (setq co (cadr col))
  80.       (setq co 7)
  81.     )
  82.     (or
  83.       (setq col (car col))
  84.       (setq col 7)
  85.     )
  86.     (or
  87.       (setq msg (car ssparm))
  88.       (setq msg "\n选择目标对象: ")
  89.     )
  90.     (setq ssparm (cadr ssparm)
  91.     len (p2u 1)
  92.     x (car pt)
  93.     y (cadr pt)
  94.     )
  95.     (princ msg)
  96.     (while (/= (car pt1) 11)
  97.       (redraw)
  98.       (d_brush col x y len)
  99.       (while (not (member (car (setq pt1 (grread t 12 2))) '(3 11)))
  100.   (setq pt1 (cadr pt1))
  101.   (if (vl-consp pt1)
  102.     (progn
  103.       (if (> (distance pt1 pt) (p2u (* 0.0001 (car (getvar "screensize")))))
  104.         (progn
  105.     (redraw)
  106.     (setq len (p2u 1)
  107.           x (car pt)
  108.           y (cadr pt)
  109.     )
  110.     (d_brush col x y len)
  111.     (setq pt pt1)
  112.         )
  113.       )
  114.     )
  115.   )
  116.       )
  117.       (redraw)
  118.       (if (and
  119.       (= (car pt1) 3)
  120.       (princ msg)
  121.       (not (setq ss1 (apply
  122.            'ssget
  123.            (append
  124.              '("_c")
  125.              (pickbox (cadr pt1))
  126.              (list ssparm)
  127.            )
  128.          )
  129.      )
  130.       )
  131.     )
  132.   (progn
  133.     (princ "指定对角点: ")
  134.     (setq pt1 (list (caadr pt1) (cadadr pt1)))
  135.     (while (not (member (car (setq pt2 (grread t 12 1))) '(3 11)))
  136.       (setq pt2 (list (caadr pt2) (cadadr pt2)))
  137.       (if (vl-consp pt1)
  138.         (progn
  139.     (if (> (distance pt2 pt) (p2u (* 0.0001 (car (getvar "screensize")))))
  140.       (progn
  141.         (redraw)
  142.         (setq len (p2u 1)
  143.         x (car pt)
  144.         y (cadr pt)
  145.         co (abs co)
  146.         )
  147.         (if (> (car pt1) (car pt2))
  148.           (setq co (- co))
  149.         )
  150.         (d_brush col x y len)
  151.         (grvecs (list co pt1 (list (car pt1) (cadr pt2)) co pt2 (list (car pt1) (cadr pt2)) co pt2 (list (car pt2)
  152.                                  (cadr pt1)
  153.                                  ) co pt1
  154.           (list (car pt2) (cadr pt1))
  155.           )
  156.         )
  157.         (setq pt pt2
  158.         ss1 (ssget (if (minusp co)
  159.                "_c"
  160.                "_w"
  161.              ) pt1 pt2 ssparm
  162.             )
  163.         )
  164.       )
  165.     )
  166.         )
  167.       )
  168.     )
  169.   )
  170.       )
  171.       (or
  172.   ss
  173.   (setq ss (ssadd))
  174.       )
  175.       (if ss1
  176.   (progn
  177.     (setq lst '())
  178.     (repeat (setq i (sslength ss1))
  179.       (setq e (ssname ss1 (setq i (1- i))))
  180.       (setq ent (entget e))
  181.       (setq pt1 (cdr (assoc 10 ent)))
  182.       (setq lst (cons (list pt1 e) lst))
  183.     )
  184.     (setq lst (vl-sort lst (function (lambda (e1 e2) ; 框选文本先由上到下排序(其它情况自己修改)
  185.                (> (cadr (car e1)) (cadr (car e2)))
  186.              )
  187.          )
  188.         )
  189.     )
  190.     (setq lst (vl-sort lst (function (lambda (e1 e2) ; 框选文本后由左到右排序(其它情况自己修改)
  191.                (< (car (car e1)) (if (and
  192.                      (>= (car (car e2)) (- (car (car e1)) txtlong))
  193.                      (<= (car (car e2)) (+ (car (car e1)) txtlong))
  194.                    )
  195.                  (car (car e1))
  196.                  (car (car e2))
  197.                      )
  198.                )
  199.              )
  200.          )
  201.         )
  202.     )
  203.     (setq lst (reverse lst))
  204.     (repeat (setq i (length lst))
  205.       (setq e (cadr (nth (setq i (1- i))
  206.              lst
  207.         )
  208.         )
  209.       )
  210.       (ssadd e ss)
  211.       (redraw e 3)
  212.       (apply
  213.         fun
  214.         (list e)
  215.       )
  216.     )
  217.   )
  218.       )
  219.       (setq ss1 nil)
  220.     )
  221.     (redraw)
  222.     ss
  223.   )
  224.   (defun llt:entsel (pt col / a b c col en ent len pix pt x y) ; 带有刷子的entsel功能子程序,caoyin老大提供
  225.     (redraw)
  226.     (setq len (p2u 1)
  227.     x (car pt)
  228.     y (cadr pt)
  229.     )
  230.     (d_brush col x y len)
  231.     (while (not (member (car (setq pt1 (grread t 12 2))) '(3 11)))
  232.       (setq pt1 (cadr pt1))
  233.       (if (vl-consp pt1)
  234.   (progn
  235.     (or
  236.       pt
  237.       (setq pt pt1)
  238.     )
  239.     (setq x (car pt)
  240.     y (cadr pt)
  241.     )
  242.     (if (> (distance pt1 pt) (p2u (* 0.0001 (car (getvar "screensize")))))
  243.       (progn
  244.         (redraw)
  245.         (setq len (p2u 1)
  246.         x (car pt)
  247.         y (cadr pt)
  248.         )
  249.         (d_brush col x y len)
  250.         (setq pt pt1)
  251.       )
  252.     )
  253.   )
  254.       )
  255.     )
  256.     (redraw)
  257.     (and
  258.       (= (car pt1) 3)
  259.       (vl-consp (cadr pt1))
  260.       (setq en (nentselp (cadr pt1)))
  261.     )
  262.     (setq ent (car en))
  263.     (setq pt1 (cadr pt1))
  264.     (if (cadddr en)
  265.       (setq name (cadddr en))
  266.     )
  267.     ent
  268.   )
  269.   (defun errsub (msg)
  270.     (if (not (member msg '("程序中断" "功能撤销"
  271.           "退出 / 中断" ""
  272.          )
  273.        )
  274.   )
  275.       (princ (strcat "\n" msg))
  276.     ); if
  277. (vla-EndUndoMark      
  278.     (vla-get-ActiveDocument (vlax-get-acad-object))
  279.   )  
  280.     (setvar "shortcutmenu" 2)
  281.     (redraw)
  282.     (setq *error* orerr)
  283.     (prin1)
  284.   )
  285.   (defun show_list (key newlist)
  286.     (start_list key)
  287.     (mapcar
  288.       'add_list
  289.       newlist
  290.     )
  291.     (end_list)
  292.   )
  293.   (defun jys001 (x kk / ent txt1 txt3 zz) ; 首部框
  294.     (setq ent (entget x))
  295.     (setq txt1 (cdr (assoc 1 ent)))
  296.     (setq zz 1)
  297.     (while (or
  298.        (> (atoi (substr txt1 zz 1)) 0)
  299.        (= (substr txt1 zz 1) "0")
  300.      )
  301.       (setq zz (+ zz 1))
  302.     )
  303.     (if (> zz (strlen txt1))
  304.       (setq txt3 kk)
  305.       (setq txt3 (strcat kk (substr txt1 zz)))
  306.     )
  307.     (entmod (subst
  308.         (cons 1 txt3)
  309.         (assoc 1 ent)
  310.         ent
  311.       )
  312.     )
  313.   )
  314.   (defun jys002 (x / ent txt3)         ; 尾部框
  315.     (if (and
  316.     (setq ent (entget x))
  317.     (member (cdr (assoc 0 ent)) '("TEXT" "MTEXT"))
  318.   )
  319.       (progn
  320.   (setq kk (jys003 kk sbak))
  321.   (if (= zz 0)
  322.     (setq txt3 kk)
  323.     (setq txt3 (strcat txt2 kk))
  324.   )
  325.   (entmod (subst
  326.       (cons 1 txt3)
  327.       (assoc 1 ent)
  328.       ent
  329.     )
  330.   )
  331.       )
  332.     )
  333.   )
  334.   (defun jys003 (st2 sbak / l l1 s st3 st4) ; 处理尾部数字
  335.     (setq st3 st2
  336.     s "0"
  337.     st4 ""
  338.     l (strlen st2)
  339.     )
  340.     (while (eq s "0")
  341.       (setq s (substr st3 1 1)
  342.       st3 (substr st3 2)
  343.       st4 (if (eq s "0")
  344.       (strcat st4 s)
  345.       st4
  346.     )
  347.       )
  348.     )               ; 将首位是0的数字分离出来
  349.     (setq st2 (atoi st2)
  350.     st2 (+ st2 sbak)
  351.     st2 (itoa st2)
  352.     st2 (strcat st4 st2)
  353.     l1 (strlen st2)
  354.     s (substr st2 1 1)
  355.     )
  356.     (if (and
  357.     (= s "0")
  358.     (> l1 l)
  359.   )
  360.       (setq st2 (substr st2 2))
  361.     )               ; 处理了形如A09变为A10的问题
  362.     st2
  363.   )
  364.   
  365.   ;; 修改后的函数:处理首部框选的递增
  366.   (defun jys001-incremental (x / ent txt1 txt3 zz)
  367.     (setq ent (entget x))
  368.     (setq txt1 (cdr (assoc 1 ent)))
  369.     (setq zz 1)
  370.     (while (or
  371.        (> (atoi (substr txt1 zz 1)) 0)
  372.        (= (substr txt1 zz 1) "0")
  373.      )
  374.       (setq zz (+ zz 1))
  375.     )
  376.     ;; 使用当前递增的值
  377.     (if (> zz (strlen txt1))
  378.       (setq txt3 current-kk)
  379.       (setq txt3 (strcat current-kk (substr txt1 zz)))
  380.     )
  381.     (entmod (subst
  382.         (cons 1 txt3)
  383.         (assoc 1 ent)
  384.         ent
  385.       )
  386.     )
  387.     ;; 递增当前值,为下一个对象准备
  388.     (setq current-kk (jys003 current-kk sbak))
  389.   )
  390.   
  391.   (defun dzs001 (lst vvs / e)
  392.     (setq e (nth (atoi vvs) lst))
  393.     (cons e (vl-remove e lst))
  394.   )
  395.   (defun dzs002 ()
  396.     (show_list "e01" lst1)
  397.     (show_list "e02" lst2)
  398.     (show_list "e03" lst3)
  399.   )
  400.   (setvar "cmdecho" 0)
  401.   (vl-load-com)
  402.   (setq orerr *error*)
  403.   (setq *error* errsub)
  404.   (while (progn
  405.      (if (setq wbak (vl-registry-read "HKEY_CURRENT_USER\\software\\TH++" "wbak"))
  406.        (setq lst1 (cons wbak (vl-remove wbak '("尾部" "首部"))))
  407.        (setq lst1 '("尾部" "首部"))
  408.      )
  409.      (if (setq sbak (vl-registry-read "HKEY_CURRENT_USER\\software\\TH++" "sbak"))
  410.        (setq lst2 (cons sbak (vl-remove sbak '("1" "2"
  411.                  "3" "4"
  412.                  "5" "6"
  413.                  "7" "8"
  414.                  "9" "10"
  415.                  "15" "20"
  416.                  "30" "40"
  417.                  "50"
  418.                 )
  419.            )
  420.       )
  421.        )
  422.        (setq lst2 '("1" "2"
  423.         "3" "4"
  424.         "5" "6"
  425.         "7" "8"
  426.         "9" "10"
  427.         "15" "20"
  428.         "30" "40"
  429.         "50"
  430.        )
  431.        )
  432.      )
  433.      (if (setq dbak (vl-registry-read "HKEY_CURRENT_USER\\software\\TH++" "dbak"))
  434.        (setq lst3 (cons dbak (vl-remove dbak '("单选" "窗选"))))
  435.        (setq lst3 '("单选" "窗选"))
  436.      )
  437.      (initget "S ")
  438.      (if (= (setq ent (nentsel (strcat "\n选择起始文字[设置(S)]:<" (car lst1) "加" (setq sbak (car lst2))
  439.                ">"
  440.              )
  441.           )
  442.       )
  443.       "S"
  444.          )
  445.        (progn
  446.          (setq dclname (cond
  447.              ((setq tempname (vl-filename-mktemp "dzs.dcl")
  448.               filen (open tempname "w")
  449.         )
  450.          (foreach stream '("\n" "dzs1:dialog {\n"
  451.             "     label = "递增刷" ;\n" "     :boxed_column {\n"
  452.             "         label = "设置" ;\n" "         :row {\n"
  453.             "             :text {label = " 递增位置" ; }\n"
  454.             "             :text {label = "递增步长" ;  }\n"
  455.             "             :text {label = "目标文字" ;  }\n" "         }\n"
  456.             "         :row {\n" "             :popup_list { key = "e01" ;  edit_width = 7 ; }\n"
  457.             "             :popup_list { key = "e02" ;  edit_width = 7 ; }\n"
  458.             "             :popup_list { key = "e03" ;  edit_width = 7 ; }\n"
  459.             "         }\n" "     }\n"
  460.             "     ok_cancel;\n" " }\n"
  461.            )
  462.            (princ stream filen)
  463.          )
  464.          (close filen)
  465.          tempname
  466.              )
  467.            )
  468.          )
  469.          (setq dcl_re (load_dialog dclname))
  470.          (if (not (new_dialog "dzs1" dcl_re))
  471.      (exit)
  472.          )
  473.          (show_list "e01" lst1)
  474.          (show_list "e02" lst2)
  475.          (show_list "e03" lst3)
  476.          (action_tile "e01" "(setq lst1 (dzs001 lst1  $value))(dzs002) ")  ; 位置
  477.          (action_tile "e02" "(setq lst2 (dzs001 lst2  $value))(dzs002)") ; 步长
  478.          (action_tile "e03" "(setq lst3 (dzs001 lst3  $value))(dzs002)") ; 对象
  479.          (action_tile "accept" "(setq dcl_pt (done_dialog 1)) ") ; 确定
  480.          (setq bb (start_dialog))
  481.          (if (= bb 1)
  482.      (progn
  483.        (vl-registry-write "HKEY_CURRENT_USER\\software\\TH++" "wbak" (car lst1))
  484.        (vl-registry-write "HKEY_CURRENT_USER\\software\\TH++" "sbak" (car lst2))
  485.        (vl-registry-write "HKEY_CURRENT_USER\\software\\TH++" "dbak" (car lst3))
  486.      )
  487.          )
  488.          (unload_dialog dcl_re)
  489.          (vl-file-delete dclname)
  490.        )
  491.      )
  492.      (or
  493.        (= ent "S")
  494.        (null ent)
  495.        (not (member (cdr (assoc 0 (entget (car ent)))) '("TEXT" "MTEXT"
  496.          "ATTRIB"
  497.         )
  498.       )
  499.        )
  500.      )
  501.    )
  502.     (if (= 52 (getvar "errno"))
  503.       (vl-exit-with-error "")
  504.     )
  505.   )
  506.   (setq pt1 (cadr ent))
  507.   (setq txt1 (entget (car ent)))
  508.   (setq box (textbox (list (assoc 1 txt1) (assoc 40 txt1) (assoc 7 txt1)))) ; 文本框坐标
  509.   (setq txtlong (/ (- (car (cadr box)) (car (car box))) 2))
  510.   (setq txt1 (cdr (assoc 1 txt1)))
  511.   (setq sbak (car lst2))
  512.   (setq sbak (atoi sbak))
  513.   (if (= (car lst1) "尾部")
  514.     (progn
  515.       (setq zz (strlen txt1))
  516.       (while (and
  517.          (>= zz 1)
  518.          (or
  519.      (> (atoi (substr txt1 zz 1)) 0)
  520.      (= (substr txt1 zz 1) "0")
  521.          )
  522.        )
  523.   (setq zz (- zz 1))
  524.       )
  525.       (setq kk (substr txt1 (+ zz 1)))
  526.       (if (/= zz 0)
  527.   (setq txt2 (substr txt1 1 zz))
  528.       )
  529.       ;;(command ".UNDO" "BE")
  530.       (if (= (car lst3) "窗选")
  531.   (llt:match pt1 '(2 7) (list (strcat "\n选择目标文字:<尾部加" (itoa sbak) ">") '((0 . "*TEXT"))) '(lambda (x /)
  532.                              (jys002 x)
  533.                            )
  534.   )
  535.   (while t
  536.     (princ (strcat "\n选择目标文字:<尾部加" (itoa sbak) ">"))
  537.     (setq name nil)
  538.     (if (and
  539.     (setq ent (llt:entsel pt1 2))
  540.     (setq ent (entget ent))
  541.     (member (cdr (assoc 0 ent)) '("TEXT" "MTEXT"
  542.        "ATTRIB"
  543.       )
  544.     )
  545.         )
  546.       (progn
  547.         (setq kk (jys003 kk sbak))
  548.         (if (= zz 0)
  549.     (setq txt3 kk)
  550.     (setq txt3 (strcat txt2 kk))
  551.         )
  552.         (if name
  553.     (if (and
  554.           (setq ent1 (entget (car name)))
  555.           (= (cdr (assoc 0 ent1)) "DIMENSION")
  556.         )
  557.       (entmod (subst
  558.           (cons 1 txt3)
  559.           (assoc 1 ent1)
  560.           ent1
  561.         )
  562.       )
  563.       (progn
  564.         (entmod (subst
  565.             (cons 1 txt3)
  566.             (assoc 1 ent)
  567.             ent
  568.           )
  569.         )
  570.         (entupd (car name))
  571.       )
  572.     )
  573.     (entmod (subst
  574.         (cons 1 txt3)
  575.         (assoc 1 ent)
  576.         ent
  577.       )
  578.     )
  579.         )
  580.       )
  581.       (vl-exit-with-error "")
  582.     )
  583.   )
  584.       )
  585.      (command ".UNDO" "E")
  586.     )
  587.   )
  588.   (if (= (car lst1) "首部")
  589.     (progn
  590.       (setq zz 1)
  591.       (while (or
  592.          (> (atoi (substr txt1 zz 1)) 0)
  593.          (= (substr txt1 zz 1) "0")
  594.        )
  595.   (setq zz (+ zz 1))
  596.       )
  597.       (if (= zz 1)
  598.   (setq kk "0")
  599.   (setq kk (substr txt1 1 (- zz 1)))
  600.       )
  601.       ;;(command ".UNDO" "BE")
  602.       (if (= (car lst3) "窗选")
  603.   (progn
  604.     ;; 修复:首部框选时使用递增逻辑
  605.     (setq current-kk (jys003 kk sbak)) ; 初始化当前值
  606.     ;; 使用局部函数包装,确保能访问到current-kk
  607.     (defun local-jys001-incremental (x)
  608.       (setq ent (entget x))
  609.       (setq txt1 (cdr (assoc 1 ent)))
  610.       (setq zz 1)
  611.       (while (or
  612.          (> (atoi (substr txt1 zz 1)) 0)
  613.          (= (substr txt1 zz 1) "0")
  614.        )
  615.         (setq zz (+ zz 1))
  616.       )
  617.       (if (> zz (strlen txt1))
  618.         (setq txt3 current-kk)
  619.         (setq txt3 (strcat current-kk (substr txt1 zz)))
  620.       )
  621.       (entmod (subst
  622.           (cons 1 txt3)
  623.           (assoc 1 ent)
  624.           ent
  625.         )
  626.       )
  627.       ;; 递增当前值,为下一个对象准备
  628.       (setq current-kk (jys003 current-kk sbak))
  629.     )
  630.     (llt:match pt1 '(2 7) (list (strcat "\n选择目标文字:<首部加" (itoa sbak) ">") '((0 . "*TEXT")))
  631.       'local-jys001-incremental
  632.     )
  633.   )
  634.   (while t
  635.     (setq kk (jys003 kk sbak))
  636.     (princ (strcat "\n选择目标文字:<首部加" (itoa sbak) ">"))
  637.     (setq name nil)
  638.     (if (and
  639.     (setq ent (llt:entsel pt1 2))
  640.     (setq ent (entget ent))
  641.     (member (cdr (assoc 0 ent)) '("TEXT" "MTEXT"
  642.        "ATTRIB"
  643.       )
  644.     )
  645.         )
  646.       (progn
  647.         (setq txt1 (cdr (assoc 1 ent)))
  648.         (setq zz 1)
  649.         (while (or
  650.            (> (atoi (substr txt1 zz 1)) 0)
  651.            (= (substr txt1 zz 1) "0")
  652.          )
  653.     (setq zz (+ zz 1))
  654.         )
  655.         (if (> zz (strlen txt1))
  656.     (setq txt3 kk)
  657.     (setq txt3 (strcat kk (substr txt1 zz)))
  658.         )
  659.         (if name
  660.     (if (and
  661.           (setq ent1 (entget (car name)))
  662.           (= (cdr (assoc 0 ent1)) "DIMENSION")
  663.         )
  664.       (entmod (subst
  665.           (cons 1 txt3)
  666.           (assoc 1 ent1)
  667.           ent1
  668.         )
  669.       )
  670.       (progn
  671.         (entmod (subst
  672.             (cons 1 txt3)
  673.             (assoc 1 ent)
  674.             ent
  675.           )
  676.         )
  677.         (entupd (car name))
  678.       )
  679.     )
  680.     (entmod (subst
  681.         (cons 1 txt3)
  682.         (assoc 1 ent)
  683.         ent
  684.       )
  685.     )
  686.         )
  687.       )
  688.       (vl-exit-with-error "")
  689.     )
  690.   )
  691.       )
  692.     )
  693.   )
  694.   (setq *error* orerr)
  695.   (command ".UNDO" "E")
  696.   (princ)
  697. )
提供这版没有提示文字的,看你们喜欢那个版本!
回复 支持 反对

使用道具 举报

发表于 2025-10-30 18:45:41 | 显示全部楼层
设置里是空的。CAD2023
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-10-30 19:11:42 | 显示全部楼层
那不知什么原因了,我这边一点事都没有,2016~2018

回复 支持 反对

使用道具 举报

发表于 2025-10-31 08:50:41 | 显示全部楼层
我也没字,点完不下啦。。。
回复 支持 反对

使用道具 举报

发表于 2025-11-1 09:43:45 | 显示全部楼层
CAD2023 ,设置里是空的!!!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-28 12:10 , Processed in 0.208538 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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