排序属性导出
你好我有一个miclos先生的lisp,(thanx),它将属性值提取到一个文件中。
我尝试在csv文件中添加另一列,但没有成功。
当我从具有相同块的文件中导出时,得到以下结果:
block name:,_Dorrlitt
LITTERA
D10H
如果我在一个文件中有两个或30个D10H,我会得到:
block name:,_Dorrlitt
LITTERA
D10H
每次30次,也就是说超过90次。再加上一个街区。。。文件开始变长了。
我想要的是lisp添加大量相同的属性。
也许是这样:
block name:,_DorrlittLITTERAD10H
30 < amount
有什么帮助吗?
顺致敬意,
lisp文件如下所示:
; Global ATTribute EXtractor
; by Miklos Fuccaro mfuccaro@hotmail.com
;-------------------------November 2004 -------
;;Edited March 2006 by C. Bassler to allow specification of block and tage names to extract
(defun gattexdorr()
(setq Blocklist '("_Dorrlitt"))
;; ** edit to include block names to select
(setq TagList '("LITTERA"))
;; ** edit to include tag names to extract
;;create block names separated by columns, for selection filter
(setq Blocknames (List2String BlockList))
(setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 BlockNames))))
(if (not ss)
(quit))
(setq Root (getvar "DWGPREFIX"))
(setq path (strcat "..\\AdminIT\\Attribut\\Export\\Littera\\"))
(setq file (open (strcatRoot path
(substr (getvar "DWGNAME")
1
(- (strlen (getvar "DWGNAME")) 4))
"Dorrlittera.csv" )
"w")
i -1)
(write-line
(strcat Root
(getvar "DWGNAME")
" -found "
(itoa (sslength ss))
" block(s) with attributes")
file)
(repeat (sslength ss)
(setq TagRow nil
ValRow nil)
(setq Edata (entget (setq e (ssname ss (setq i (1+ i))))))
(write-line "" file)
(write-line (strcat "block name:" "," (Dxf 2 Edata)) file)
(while (/= (Dxf 0 Edata) "SEQEND")
(if
(and
(= (Dxf 0 Edata) "ATTRIB")
(member (dxf 2 Edata) TagList)
;;if tag is on list
) ;and
(progn
(setq TagRow (cons (Dxf 2 Edata) TagRow))
(setq valRow (cons (Dxf 1 Edata) ValRow))
) ;progn
)
(setq Edata (entget (setq e (entnext e))))
) ;while
(write-line (List2String (reverse TagRow)) file)
(write-line (List2String (reverse ValRow)) file)
) ;repeat
(close file)
(princ (strcat "\nExport av Dörrlittera klar från modell:\n" (getvar "DWGNAME") "\nGå till A->Attribut->Export->Littera och öppna filen Dörrlittera!!"))
(princ)
) ;defun
;;-------------------------------
(defun List2String(Alist)
(setq NumStr (length Alist))
(foreach ItemAList
(if (= Item (car AList))
;;first item
(setq LongString (car AList))
(setq LongString (strcat LongString "," Item))
)
)
LongString
) ;defun
;;--------------------------------
(defun Dxf(code pairs)
(cdr (assoc code pairs))
)
(defun c:AIX:EXPORTDORRLITT()
(gattexdorr)
(princ))
页:
[1]