当我生成一个新图形时,它会创建一个包含信息的文本文件。Autocad使用字符串位于图形中的特定图层自动更新该文件中的文字。根据字符串所在的层,这将决定更新时使用的信息。
尽管如此,它不会更新块内的属性。有人能帮忙吗。我愿意讨论并协助解决这个问题。我将为我的标题栏自动化一些信息,我们所有的标题栏都被属性阻止。
以下是用于更新信息的代码
- (defun uinfo () (princ "\nUpdating Drawing Information...")
- (if (= found 1)
- (progn (setq dummy (read-line infile))
- (setq desc (read dummy))
- (setq dummy (read-line infile))
- (setq drawing (read dummy)))
- (progn (setq desc '(1 . "- NEW EQUIPMENT -"))
- (setq drawing '(1 . "- UNASSIGNED -"))))
- (setq sset (ssget "X" (list (cons 0 "TEXT") (cons 8 "TITLE"))))
- (setq lp 0)
- (while (< lp (sslength sset))
- (setq ent (entget (ssname sset lp))) (setq entinfo (cdr (assoc 1 ent)))
- (if (= (substr entinfo 1 4) "Desc") (entmod (subst desc (assoc 1 ent) ent)))
- (if (= (substr entinfo 1 4) "Draw") (entmod (subst drawing (assoc 1 ent) ent)))
- (if (= (substr entinfo 1 3) "Dwg") (entmod (subst drawing (assoc 1 ent) ent)))
- (if (= (substr entinfo 1 4) "DESC") (entmod (subst desc (assoc 1 ent) ent)))
- (if (= (substr entinfo 1 4) "DRAW") (entmod (subst drawing (assoc 1 ent) ent)))
- (if (= (substr entinfo 1 3) "DWG") (entmod (subst drawing (assoc 1 ent) ent)))
- (setq lp (1+ lp)))
- (setq sset nil) (setq lp nil)
- (setq sset (ssget "X" (list (cons 0 "TEXT") (cons 8 (strcat tcircuit "-EQMRK")))))
- (setq lp 0)
- (if (/= sset nil)
- (while (< lp (sslength sset))
- (setq ent (entget (ssname sset lp)))
- (setq entinfo (cdr (assoc 1 ent)))
- (if (= (substr entinfo 1 4) "Desc") (entmod (subst desc (assoc 1 ent) ent)))
- (if (= (substr entinfo 1 4) "Draw") (entmod (subst drawing (assoc 1 ent) ent)))
- (if (= (substr entinfo 1 3) "Dwg") (entmod (subst drawing (assoc 1 ent) ent)))
- (if (= (substr entinfo 1 4) "DESC") (entmod (subst desc (assoc 1 ent) ent)))
- (if (= (substr entinfo 1 4) "DRAW") (entmod (subst drawing (assoc 1 ent) ent)))
- (if (= (substr entinfo 1 3) "DWG") (entmod (subst drawing (assoc 1 ent) ent)))
- (setq lp (1+ lp))))
- (princ "Done.")
- (prin1))
以下是用于根据其各自的图层更新图形中所有信息的实际例程。
- (defun C:UPDATE ()
- (setvar "CMDECHO" 0)
- (setvar "MENUCTL" 0)
- ;; (command "._snap" "0.03125")
- (command "plinewid" "0.0")
- (if (null filename) (setq filename (getstring "\nPath and name of update file: ")))
- (if (null tcircuit)
- (progn (C:EQUIP2))
- (progn (makenames tcircuit) (checklayers tcircuit)))
- (if (null tcircuit)
- (progn
- (princ "\nCurrent name has not been established")
- (princ "\nplease type EQUIP and establish current equip. or make new"))
- (progn
- (openfile)
- (seek-tcircuit)
- (if (= (getvar "userr1") 0.0) (setvar "userr1" 3.0))
- (if (= (getvar "userr2") 0.0) (setvar "userr2" 1.0))
- (if (ssget "X" (list (cons 8 "CIRCUIT-INFO") (cons 0 "TEXT"))) (uinfo) (repeat 2 (read-line infile)))
- (if (ssget "X" (list (cons 8 "TITLE") (cons 0 "TEXT"))) (udates) (repeat 2 (read-line infile)))
- ;; (uinfo)
- ;; (udates)
- (if (= found 1)
- ;; (progn (udp) (uext) (uldar) (uvalve))
- (princ "\nNO INFORMATION TO UPDATE"))
- (closefile)))
- (command "._-layer" "s" PIPING "")
- (princ))
我需要添加到代码中,以便它将更新块中定义的属性文本字符串。如果您有任何意见或任何问题,我将不胜感激。 |