yansu 发表于 2014-8-1 12:44:18

如何批量将布局名称自动编号

请高手帮忙如何批量将布局名称自动编号,即将布局1,布局2,布局3-----更换为C-1,C-2,C-3----前缀可以自定义。这在布局中作图很有用。可以选择布局进行编号。非常谢谢。

edata 发表于 2014-8-1 16:30:30

来个按布局句柄排序的改名
(defun c:tt(/ i str obj)
(setq i 0)
(vlax-for obj (vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object)))
    (if (not(member (vla-get-name obj) '("Model" "模型")))
      (vla-put-name obj (strcat "sk2014-" (itoa(setq i(1+ i)))))
      )
    )
(setq lst '())
(vlax-for obj (vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object)))
    (if (not(member (vla-get-name obj) '("Model" "模型")))
      (setq lst(cons (vla-get-Handle obj) lst))
      )   
    )
(setq lst (vl-sort   lst '(lambda(x y)(< (16to10 x) (16to10 y)))))
(setq i 0)
(setq str "c-")
(while(setq a(car lst))
    (sk_relayout (vla-get-name (vlax-ename->vla-object(handent a))) (strcat str (itoa(setq i(1+ i)))))
    (setq lst(cdr lst))
    )
(princ)
)
(defun sk_relayout (oldName newName)
(vla-put-name (vla-item (vla-get-Layouts (vla-get-ActiveDocument (vlax-get-acad-object))) oldName) newName)
)

;;16进制转10进制
;;http://bbs.mjtd.com/forum.php?mod=viewthread&tid=100771&fromuid=338795

(defun 16to10(str / LEN NUM10 WEIZHI ZIFU)
   (setq len(strlen str))
   (setq weizhi 1)
   (setq num10 0)
   (repeat len
   (setq zifu (substr str weizhi 1))
   (cond
   ((and (>= (ascii (strcase zifu)) 65) (<= (ascii (strcase zifu)) 70)) (setq zifu (- (ascii (strcase zifu)) 55)))
   ((and (>= (ascii zifu) 48) (<= (ascii zifu) 57)) (setq zifu (atoi zifu)))
   )
   (setq num10 (+ (* num10 16) zifu))
   (setq weizhi (1+ weizhi))
   )
   num10
   )

Aries 发表于 2019-10-8 15:48:25

edata 发表于 2014-8-1 16:30
来个按布局句柄排序的改名

这个( ^_^ )不错嘛,收藏一下:handshake

Andyhon 发表于 2014-8-1 14:35:47

本帖最后由 Andyhon 于 2014-8-1 14:38 编辑

info: http://forums.augi.com/archive/index.php/t-77060.html

(vl-load-com)
(defun RenLay (kword / n)
(setq n 1)
(vlax-for x (vla-get-Layouts
                (vla-get-ActiveDocument (vlax-get-acad-object))
            )
    (if(not (eq (strcase (vla-get-name x)) "MODEL"))
      (vla-put-Name x (strcat kword(itoa n)))
    )
    (setq n (1+ n))
)
)

Call it like this...
(renlay "PLOT")
...to have all the layouts renamed to PLOT1, PLOT2, PLOT3, etc.
....

yangchao2005090 发表于 2020-6-15 16:56:09

edata 发表于 2014-8-1 16:30
来个按布局句柄排序的改名

您好,请教一下,因为有很多条路,需要建立不用布局,假如我吧路名全部放到一个txt文件里面,比如路名是路1,路2,路3,可否选定这个txt直接改布局名称呀

kdanqu 发表于 2020-9-29 15:41:14

没币帮顶!!!!!!!

f4800 发表于 2022-3-15 08:49:39

edata 发表于 2014-8-1 16:30
来个按布局句柄排序的改名

好用找了很久多谢分享

520kim 发表于 2025-3-15 20:45:35

no function definition: 16TO10
页: [1]
查看完整版本: 如何批量将布局名称自动编号