Millsy29 发表于 2022-7-6 10:45:57

自动更新标题blo

大家好,
 
我有一个lisp例程,我想将其更改为更加自动化。
 
;* -------------------------- 子程序------------------------------
(defun NEWSYSTEM()
(条件
(=标记名“DRGNUM”)(setq newdata drawingno)
(=标记名“CADFILE”)(setq newdata CADFILE)
(=标记名“REV”)(setq newdata REV)
(无)
)
)
;* -------------------------- 主程序------------------------------
 
(定义C:UPN(/cadfile cadfilelen drawingno drawingrev drawingrevlen)
rev field savefilename标记名newdata)
(setq cadfile(getvar“DWGNAME”))
(setq cadfilelen(strlen cadfile))
(setq图纸编号(substr cadfile 1(-cadfilelen 6)))
(setq drawingrev(substr cadfile 1(-cadfilelen 4)))
(setq drawingrevlen(strlen drawingrev))
(setq rev(substr drawingrev drawingrevlen))
(setq字段(entget(car(ENTSEL)))
(setq savefilename(cdr(assoc 1字段)))
(setq标记名(cdr(assoc 2字段)))
(新闻系统)
(setq字段(subst(cons 1 newdata)(assoc 1字段)字段))
(entmod字段);修改数据库
(entupd(cdr(caddr字段));更新实体而不重新生成
(普林斯)
)
 
这允许我选择标题栏属性,并根据文件名进行相应更改。(不是教你吃蛋)
 
现在我想让它做的是,作为所有标题栏,搜索块“A0 Sheet”“A1 Sheet”“A3 Sheet”,然后找到“cadfile”属性,并自动更改图纸编号和版本。
 
有人能帮我吗?
 
米尔西

Lee Mac 发表于 2022-7-6 11:05:48

没有任何东西可以测试。。。
 

(defun c:upn ( / ss )
;; © Lee Mac 2010

(if (setq ss (ssget "_X" '((0 . "INSERT") (2 . "A#-Sheet") (66 . 1))))
   (
   (lambda ( i / file l dwg rev e el )
       (setq file (getvar 'DWGNAME) l (strlen file))

       (setq dwg (substr file 1 (- l 6))
             rev (substr file (- l 4) 1))

       (while (setq e (ssname ss (setq i (1+ i))))
         (while
         (not
             (eq "SEQEND"
               (cdr
               (assoc 2
                   (setq el
                     (entget
                     (setq e
                         (entnext e)
                     )
                     )
                   )
               )
               )
             )
         )
         (cond
             (
               (eq "DRGNUM" (cdr (assoc 2 el)))

               (Update (SubstDXF 1 dwg el))
             )
             (
               (eq "CADFILE" (cdr (assoc 2 el)))

               (Update (SubstDXF 1 file el))
             )
             (
               (eq "REV" (cdr (assoc 2 el)))

               (Update (SubstDXF 1 rev el))
             )
         )
         )
       )
   )
   -1
   )
)

(princ)
)

(defun SubstDXF ( code value elist )
;; © Lee Mac 2010
(entmod
   (subst
   (cons code value) (assoc code elist) elist
   )
)
)

(defun Update ( elist )
;; © Lee Mac 2010
(entupd
   (cdr (assoc -1 elist))
)
)

Millsy29 发表于 2022-7-6 11:18:45

cad文件更改和图纸编号更改有效,但版本显示为-而不是A,这可能是文件名的错误部分吗?
 
以下文件名示例:
302039-01M0201-003-A.dwg
 
这也是在最后出现的????
 
; 错误:*error*函数内发生错误参数太多

Lee Mac 发表于 2022-7-6 11:23:27

 
是的,我正要问一个文件名示例
 
不确定*错误*-这与您正在运行的另一个例程中的未定位错误处理程序有关,因为我的例程没有错误处理程序。
 
更新的代码。

Millsy29 发表于 2022-7-6 11:34:31

美丽的帕特里克!!!!
http://t3.gstatic.com/images?q=tbn:IgefLhVLEgm7aM:http://www.freewebs.com/peterkaypics/Max%2520%26%2520Paddy.jpg
:lol::lol::lol:
 
很有魅力!
 
非常感谢
 
米尔西

Lee Mac 发表于 2022-7-6 11:51:37

很好-很好
页: [1]
查看完整版本: 自动更新标题blo