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

希望扩展此帖,生成明经函数库
页: 1 2 3 [4] 5
查看完整版本: 发帖专用LISP函数简写&常用函数