ly8zx2109 发表于 2009-3-24 19:43:00

哪位高手能用VBA编一个为文字排序的程序

<p>根据CAD单行文字插入点进入排序,然后把值提取出来,用于计算,(类似对二维数组排序)谢谢了!!!!!</p>

ly8zx2109 发表于 2009-3-27 16:06:00

<p>哪们好心人帮帮忙呀。谢谢了</p>

hb_xiaofen 发表于 2009-3-27 21:06:00

用vl-sort函数就可以

ly8zx2109 发表于 2009-3-28 20:41:00

<p>你说的是LISP语言,那具体怎么在选择集中对文字操作呢,谢谢你了,麻烦你了。</p>

雪山飞狐_lzh 发表于 2009-4-2 13:01:00

本帖最后由 作者 于 2009-4-2 18:24:36 编辑 <br /><br /> <p>好象以前我的单行文字转多行文字里有相应的代码,找下吧</p><p><a href="http://www.mjtd.com/bbs/dispbbs.asp?boardid=4&amp;replyid=15810&amp;id=19974&amp;page=1&amp;skin=0&amp;landlord=0&amp;Star=1">http://www.mjtd.com/bbs/dispbbs.asp?boardid=4&amp;replyid=15810&amp;id=19974&amp;page=1&amp;skin=0&amp;landlord=0&amp;Star=1</a></p>

ly8zx2109 发表于 2009-8-15 16:05:00

;; 通用函数 选择集按照给定的组码值进行排序<br/>;;;<br/>;|;;参数说明:SE&nbsp; ----要排序的选择集&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DXF ----排序依据的组码号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INT ----如果组码值为一个表,则INT指出使用第几个;否则nil&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FUZZ----允许偏差;若无为nil&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; K&nbsp;&nbsp; ----T表示从大到小,nil表示从小到大&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; 返回值:排序后的选择集&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; 示例:(SORT-SE SS 10 0&nbsp;&nbsp; 5.0 T&nbsp; )&nbsp; 表示按照10组码的X坐标值进行排序,允许偏差值为5.0,顺序为从大到小<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SORT-SE SS 10 1&nbsp;&nbsp; 3.0 NIL)&nbsp; 表示按照10组码的Y坐标值进行排序,允许偏差值为3.0,顺序为从小到大<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SORT-SE SS 8&nbsp; NIL NIL NIL)&nbsp; 表示按照8组码值(图层名称)进行排序,顺序为从小到大&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>|;<br/>(vl-load-com)<br/>(defun SORT-SE (SE DXF INT FUZZ K / ENT INDEX LST NEWLST NEWSE TMP)<br/>&nbsp;&nbsp;&nbsp; ;;建立排序列表<br/>&nbsp;&nbsp;&nbsp; (setq LST '()<br/>&nbsp;&nbsp; INDEX&nbsp;0<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (repeat (sslength SE)<br/>&nbsp;(setq ENT (entget (ssname SE INDEX))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TMP (cdr (assoc DXF ENT))<br/>&nbsp;)<br/>&nbsp;(if (and INT<br/>&nbsp;&nbsp; (= (type INT) 'INT)<br/>&nbsp;&nbsp; (= (type TMP) 'list)<br/>&nbsp;&nbsp; (&lt; INT (length TMP))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq TMP (nth INT TMP))<br/>&nbsp;)<br/>&nbsp;(setq LST (cons<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list TMP (cdr (assoc 5 ENT)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LST<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;(setq INDEX (1+ INDEX))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; ;;排序操作<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(and FUZZ<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (or<br/>&nbsp;&nbsp; (= (type FUZZ) 'INT)<br/>&nbsp;&nbsp; (= (type FUZZ) 'REAL)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (or<br/>&nbsp;&nbsp; (= (type TMP) 'INT)<br/>&nbsp;&nbsp; (= (type TMP) 'REAL)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;(setq NEWLST<br/>&nbsp;&nbsp; (vl-sort LST<br/>&nbsp;&nbsp;&nbsp;&nbsp; (function (lambda (E1 E2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&lt; (+ (car E1) FUZZ) (car E2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;(setq NEWLST<br/>&nbsp;&nbsp; (vl-sort LST<br/>&nbsp;&nbsp;&nbsp;&nbsp; (function (lambda (E1 E2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&lt; (car E1) (car E2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; ;;如果K为T,则倒置<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;K<br/>&nbsp;(setq NEWLST (reverse NEWLST))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; ;;组织排序后的选择集<br/>&nbsp;&nbsp;&nbsp; (setq NEWSE (ssadd))<br/>&nbsp;&nbsp;&nbsp; (foreach TMP NEWLST<br/>&nbsp;(setq NEWSE (ssadd (handent (cadr TMP)) NEWSE))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; ;;返回值<br/>&nbsp;&nbsp;&nbsp; NEWSE<br/>) ;_结束defun
页: [1]
查看完整版本: 哪位高手能用VBA编一个为文字排序的程序