zml84
发表于 2011-4-28 12:59:59
我的意思是,太过于简单的函数,没有定义的必要;自定义函数越多,代码越难读。
毕竟不是开发大型程序。
自贡黄明儒
发表于 2011-4-28 13:21:17
本帖最后由 自贡黄明儒 于 2011-4-28 13:23 编辑
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;属性→←文字 相互转换
(defun hh:a22t (/ BLKCNT EN ENLIST ESET1)
(setq eset1(ssget (list (cons 0 "ATTDEF,*text")))
blkcnt 0
)
(if eset1
(while (<= blkcnt (- (sslength eset1) 1))
(setq en (ssname eset1 blkcnt))
(setq enlist (LI_item 0 (entget en)))
(if (= enlist "ATTDEF") (hh:A2T en) (hh:T2A en))
(setq blkcnt (1+ blkcnt))
)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;属性→←文字
;;;;;;;;;;;;;;;;;;;;;;;;;;; Convert Attribute definitions to text
(defun hh:A2T (en / ENLIST SPACE VL)
(setq enlist (entget en))
(setq space (cdr (assoc 67 enlist)))
(setq vl (list
(cons 0 "TEXT")
(cons 100 "AcDbEntity")
(cons 100 "AcDbText")
(assoc 7 enlist)
(assoc 8 enlist)
(assoc 10 enlist)
(assoc 40 enlist)
(cond ((assoc 62 enlist))
((cons 62 256))
)
(cons 1 (cdr (assoc 2 enlist)))
(if (= space nil)
(cons 67 0)
(cons 67 space)
)
)
)
(entdel en)
(entmake vl)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;; Convert Attribute definitions to text
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;文字转换成属性
(defun HH:T2A ( ename / entl Txt )
(setq
entl (entget ename)
Txt(LI_item 1 entl)
entl (LI_CodeStrip entl (list -1 5 8 70 100))
entl (append entl (list (cons 2 (ST_RepChar " " "_" Txt))))
entl (subst (cons 1 Txt) (assoc 1 entl) entl)
entl (subst (cons 0 "ATTDEF") (assoc 0 entl) entl)
entl (append entl (list (cons 3 "") (cons 70 0) (cons 74 0)))
entl (entmake entl)
)
(entdel ename)
(if entl (entlast) nil)
)
;;;;;;;;;;;;;;;;;;;;; | LI_CodeStrip
(defun LI_CodeStrip( entl StripLst / len _entl Code Lst )
(setq
len (length entl)
_entl '()
)
(foreach Lst entl
(setq Code (car Lst))
(if (not (member Code StripLst))
(setq _entl (append _entl (list Lst)))
)
)
_entl
)
;;;;;;;;;;;;;;;;;;;;; | LI_CodeStrip
(Defun ITEM (N E) (CDR (Assoc N E)))
(Defun LI_item (N E) (CDR (Assoc N E)))
;;;;;;;;;;;;;;;;;;;;;;;; | ST_RepChar
(defun ST_RepChar(oldchar newchar Str / len cnt nstr cchar)
(setq
len (strlen str)
nstr ""
cnt 1
)
(repeat len
(setq
cchar (substr str cnt 1)
cnt (1+ cnt)
)
(if (/= cchar oldchar)
(setq nstr (strcat nstr cchar))
(setq nstr (strcat nstr newchar))
)
)
nstr
)
;;;;;;;;;;;;;;;;;;;;;;;; | ST_RepChar
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;文字转换成属性
jicqj
发表于 2011-5-27 22:10:21
很棒 新人要好好学习 好好体会 才能进步这是我现在的感受
自贡黄明儒
发表于 2011-9-8 09:36:42
版主,写得太好了
版主,还能再增加一些吗?
zbwei120
发表于 2011-9-8 15:22:33
不过将常用的函数积累起来,今后调用即可
给大家带来福音。
doro
发表于 2011-9-9 13:40:09
收藏
wangzeyi
发表于 2012-3-22 21:58:10
好东西,学习学习
xz_wym
发表于 2012-5-14 17:23:31
相当不错,借鉴了几句~tks~
laiz3000
发表于 2012-5-15 20:21:57
好贴——……
xiaxiang
发表于 2012-5-15 20:56:44
希望扩展此帖,生成明经函数库