明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: caoyin

[公告] 发帖专用LISP函数简写&常用函数

    [复制链接]
发表于 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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;文字转换成属性
发表于 2011-5-27 22:10:21 | 显示全部楼层
很棒 新人要好好学习 好好体会 才能进步  这是我现在的感受
发表于 2011-9-8 09:36:42 | 显示全部楼层
版主,写得太好了
版主,还能再增加一些吗?
发表于 2011-9-8 15:22:33 | 显示全部楼层
不过将常用的函数积累起来,今后调用即可
给大家带来福音。
发表于 2011-9-9 13:40:09 | 显示全部楼层
收藏
发表于 2012-3-22 21:58:10 | 显示全部楼层
好东西,学习学习
发表于 2012-5-14 17:23:31 | 显示全部楼层
相当不错,借鉴了几句~tks~
发表于 2012-5-15 20:21:57 | 显示全部楼层
好贴——……
发表于 2012-5-15 20:56:44 | 显示全部楼层
希望扩展此帖,生成明经函数库
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-23 02:34 , Processed in 0.142904 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表