jda823 发表于 2022-7-6 08:11:13

更新图形图层和fil

我有一大套图纸,我想做以下工作:
 
 
[列表]
[*]将图形另存为新文件名
[*]重命名每个图形中的某些图层
[*]更新位于图形中纯文本的图形名称。
[/列表]
我有一个。包含以下内容的csv(包含所有受影响图形的列表):
OLDFILENAME NEWFILENAME OLDLAYERNAME NEWLAYERNAME
 
 
这就是我目前所拥有的,我走对了吗?如何使用csv数据查找/替换图形中的文本/并将其保存为新文件名。如果可能的话,我想把它作为一个批处理过程。
 
 
 

;;-----------------------=={ Read CSV }==---------------------;; ;;                                                            ;; ;;Parses a CSV file into a matrix list of cell values.      ;; ;;------------------------------------------------------------;; ;;Author: Lee Mac, Copyright © 2012 - www.lee-mac.com       ;; ;;------------------------------------------------------------;; ;;Arguments:                                                ;; ;;filename - filename of CSV file to read                   ;; ;;------------------------------------------------------------;; ;;Returns:List of lists - sublist is row of cell values   ;; ;;------------------------------------------------------------;;
;;-------------------------------------------------------------------------------;;

(defun LM:ReadCSV ( filename / _replacequotes _csv->lst file line lst )
   
   (defun _replacequotes ( str / pos )
       (setq pos 0)
       (while (setq pos (vl-string-search"\"\"" str pos))
         (setq str (vl-string-subst "\"" "\"\"" str pos)
               pos (1+ pos)
         )
       )
       str
   )

   (defun _csv->lst ( str pos / s )
       (cond
         (   (null (setq pos (vl-string-position 44 str pos)))
               (if (wcmatch str "\"*\"")
                   (list (_replacequotes (substr str 2 (- (strlen str) 2))))
                   (list str)
               )
         )
         (   (wcmatch (setq s (substr str 1 pos)) "\"*\"")
               (cons
                   (_replacequotes (substr str 2 (- pos 2)))
                   (_csv->lst (substr str (+ pos 2)) 0)
               )
         )
         (   (wcmatch s "\"*[~\"]")
               (_csv->lst str (+ pos 2))
         )
         (   (cons s (_csv->lst (substr str (+ pos 2)) 0)))
       )
   )

   (if (setq file (open filename "r"))
       (progn
         (while (setq line (read-line file))
               (setq lst (cons (_csv->lst line 0) lst))
         )
         (close file)
       )
   )
   (reverse lst)
)





;;-------------------------------------------------------------------------------;;



(defun c:updatedwgs ( fromfilename tofilename fromlayername tolayername / data file )
(if
       (and
         (setq file (getfiled "Select CSV File" "" "csv" 16))
         (setq data (LM:ReadCSV file))
       )
       (progn
         (princ "\n(")
         (foreach line data
         (progn
               (princ "\n    ") (prin1 line)
       (setq fromfilename (car line)
      tofilename (cadr line)
      fromlayername (caddr line)
                tolayername (cadddr line)
       )
   )
         
   (if (tblsearch "LAYER" fromlayername) ; found the layer
   (progn
       (command "-layer" "U" fromlayername "")
       (command "rename" "layer" fromlayername tolayername)
   )
   )
         )
         )
         (princ "\n)")
       )
   
    (princ)
)
;;-------------------------------------------------------------------------------;;



Lee Mac 发表于 2022-7-6 08:38:24

为什么要从我的代码中删除标题?

jda823 发表于 2022-7-6 08:51:31

 
很抱歉,那天快结束了,我只想复制并粘贴我正在处理的主要部分,以了解我是否朝着正确的方向前进。我是新手,下次会记住的。

Lee Mac 发表于 2022-7-6 09:04:41

以下是来源:
 
http://lee-mac.com/readcsv.html
 
请调整你的帖子,同时阅读我的使用条款。

BIGAL 发表于 2022-7-6 09:11:35

考虑使用一个可能更容易的脚本,并且不需要太多的编码经验
 
打开dwg1重命名la 1 2另存为dwg1x关闭n
打开dwg2重命名la 1 2另存为dwg2x关闭n
打开dwg3重命名la 1 2另存为dwg3x关闭n
 
首先,尝试使用这个start下角CMD,将其更改为您想要的目录,例如K:cd\project52
目录*。dwg>目录。文本/b
将la 1 2重命名为saveas
打开drlst。txt在记事本等复制粘贴我用文字做搜索和替换行尾^ p代码的相关位像“打开”,然后“重命名la 1 2另存为”和复制列alt和鼠标等职位,如果你需要帮助。1-2分钟的图形堆示例
 
我很肯定李,如果你没有冒犯他太多的话,他有一个剧本作者来完成这类任务。
页: [1]
查看完整版本: 更新图形图层和fil