找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 846|回复: 4

[LISP程序]:已修改的字符串合并程序

[复制链接]
发表于 2003-4-15 10:15:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
从前,我发过的一个小程序,感谢众多网友的建议,今作改正,还请指教:ur1517@inhe.net

字符合并

  1. (defun ctjerr (s)
  2.   (if (/= s "Function cancelled")
  3.     (princ (strcat "\n字符合并Error: " s))
  4.   )
  5.   (setq *error* olderr)
  6.   (princ)
  7. )
  8. (defun c:zfhb (/        i         sel          L           elist    e1
  9.                e2        strall         strpos          strlayer strpt10  str40
  10.                str50        style4         style3          strstyle str41
  11.               )
  12.   
  13.   (princ "\n字符合并   删除前导空格请使用程序:DBA.lsp   ")
  14.   (command "undo" "begin")
  15.   (setq        olderr        *error*
  16.         *error*        ctjerr
  17.         i        0
  18.   )
  19.   (setvar "cmdecho" 0)
  20.   (setq sel nil)
  21.   (while (= nil sel)
  22.     (princ "请按顺序选择文字:")
  23.     (SETQ SEL (SSGET (LIST (CONS 0 "TEXT"))))
  24.   )
  25.   (SETQ L (SSLENGTH SEL))
  26.   (setq        style3 "abcdefg"
  27.         style4 ""
  28.         i      0
  29.   )
  30.   (setq strpos nil)
  31.   (while (< i L)
  32.     (setq elist (ENTGET (SSNAME SEL i)))
  33.     (setq strpos
  34.            (append
  35.              strpos
  36.              (list (list (cdr (assoc 1 elist)) (cdr (assoc 10 elist)))
  37.              )
  38.            )
  39.     )
  40.     (if
  41.       (and (= "" style4)
  42.            (/= "TTF" (strcase (substr style3 (- (strlen style3) 2) 3)))
  43.       )
  44.        ;;将选择集的第一个汉字字符串的有关字体定义作为新字符串的字体定义;否则以最后的字符串为模板
  45.        (progn
  46.          (setq strstyle (cdr (assoc 7 elist)))
  47.          (setq style3 (cdr (assoc 3 (tblsearch "STYLE" strstyle))))
  48.          (setq style4 (cdr (assoc 4 (tblsearch "STYLE" strstyle))))
  49.          (setq strlayer (cdr (assoc 8 elist)))
  50.          (setq strpt10 (cdr (assoc 10 elist)))
  51.          (setq str40 (cdr (assoc 40 elist)))
  52.          (setq str41 (cdr (assoc 41 elist)))
  53.          (setq str50 (cdr (assoc 50 elist)))
  54.        )
  55.     )
  56.     (setq i (1+ i))
  57.   )
  58.   ;;while
  59.   (setq        strpos
  60.          (vl-sort strpos
  61.                   (function (lambda (e1 e2) (< (caadr e1) (caadr e2))))
  62.          )
  63.   )
  64.   ;;根据x坐标对strpos排序               ???不知道为什么不能把相同位置相同字符虑掉,帮助里说能 网友,您看呢?
  65.   (setq        i 0
  66.         strall ""
  67.   )
  68.   (repeat (length strpos)
  69.     (setq strall (strcat strall (car (nth i strpos))))
  70.     (setq i (1+ i))
  71.   )
  72.   ;;取出字符串的合
  73.   (setq strpt10 (polar strpt10 1.57 (* 2.4 str40)))
  74.   (entmake (list (cons 0 "TEXT")
  75.                  (cons 1 strall)
  76.                  (cons 7 strstyle)
  77.                  (cons 8 strlayer)
  78.                  (cons 10 strpt10)
  79.                  (cons 40 str40)
  80.                  (cons 41 str41)
  81.                  (cons 50 str50)
  82.                  (cons 71 0)
  83.                  (cons 72 0)
  84.                  (cons 73 0)
  85.            )
  86.   )
  87. ;;;  (princ "\n 如果不想移动,请按Esc键。")
  88.   (command "move" "l" "" strpt10 pause)
  89.   (setq i 0)
  90.   (while (< i L)
  91.     (entdel (ssname sel i))
  92.     (setq i (1+ i))
  93.   )
  94.   (setq *error* olderr)
  95.   (command "undo" "end")
  96.   (princ)
  97. )

  98. ;;;--------------------------------------
  99. (princ "  ZFHB V1.2已加载。以ZFHB启动命令。")
  100. (princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-4-15 22:39:38 | 显示全部楼层
vl-sor在子表排序中对同大小子元素不删除,对单层表的相同子元素删除。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

发表于 2003-4-16 01:03:11 | 显示全部楼层
试一下这个比vl-sort好用
;;;对一个数字表排序,重复的程序自动忽略
(defun zx_px(a / b c d)
(setq c (apply 'min a) c (- c 1000.0))
(while (> (setq d (apply 'max a)) c)
(setq b (cons d b) a (subst c d a)) )
b)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-4-25 08:53:07 | 显示全部楼层
文本文件是表格,CAD按行读入后,能不能按空格分解字符串,形成表格。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-4-28 10:09:20 | 显示全部楼层
如果有兴趣,可联系、交流lsp心得,不过,我有时间时才能回复。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 08:14 , Processed in 0.169760 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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