明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1252|回复: 6

[提问] 如何实现有排序的文字合并

[复制链接]
发表于 2016-5-4 16:51 | 显示全部楼层 |阅读模式
按文字方向与区域空间位置合并,自上而下,自左向右。
发表于 2016-5-5 11:33 | 显示全部楼层
是这效果吗

本帖子中包含更多资源

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

x
发表于 2018-4-17 20:23 | 显示全部楼层

大佬,正需要你这个插件,在哪里下载啊?
发表于 2019-4-23 01:18 | 显示全部楼层
没明白用在什么地方
发表于 2019-4-23 02:34 | 显示全部楼层
本帖最后由 wudechao 于 2019-4-23 12:23 编辑

;改自论坛某位大师的函数,忘记是谁的。

(defun ffg-t2m (s1 jingdu / t2 sstoes p b l)
  (defun sstoes (ss / a en lst)
    (if ss
      (progn
        (setq a -1)
        (while (setq en (ssname ss (setq a (1+ a))))
          (setq lst (cons en lst))
        )
      )
    )
    lst
  )
  (defun ssptssort (sspts key fuzz / e en fun lst n sortpts sortss)
    (defun sortpts (pts fun xyz fuzz)
      (vl-sort pts '(lambda (a b)
                      (if (not (equal (xyz a) (xyz b) fuzz))
                        (fun (xyz a) (xyz b))
                      )
                    )
      )
    )
    (defun sortpts1 (pts key fuzz)
      (setq key (vl-string->list key))
      (foreach xyz (reverse key)
        (cond
          ((< xyz 100)
            (setq fun >
                  xyz (nth (- xyz 88) (list car cadr caddr))
            )
          )
          (t
            (setq fun <
                  xyz (nth (- xyz 120) (list car cadr caddr))
            )
          )
        )
        (setq pts (sortpts pts fun xyz fuzz))
      )
    )
    (cond
      ((= (type sspts) 'pickset)
        (repeat (setq n (sslength sspts))
          (if (and
                (setq e (ssname sspts (setq n (1- n))))
                (setq en (entget e))
              )
            (setq lst (cons (append
                              (cdr (assoc 10 en))
                              (list e)
                            ) lst
                      )
            )
          )
        )
        (mapcar
          'last
          (sortpts1 lst key fuzz)
        )
      )
      ((listp sspts)
        (cond
          ((vl-consp (car sspts))
            (sortpts1 sspts key fuzz)
          )
          ((= (type (car sspts)) 'ename)
            (foreach e sspts
              (if (setq en (entget e))
                (setq lst (cons (append
                                  (cdr (assoc 10 en))
                                  (list e)
                                ) lst
                          )
                )
              )
            )
            (mapcar
              'last
              (sortpts1 lst key fuzz)
            )
          )
        )
      )
    )
  )
  (setq s1 (sstoes s1)
        t2 ""
  )
  (setq s1 (ssptssort s1 "Yx" jingdu)
        b (entget (car s1))
        t2 (cdr (assoc 1 b))
        l 1
  )
  (foreach a (cdr s1)
    (setq c (cdr (assoc 1 (entget a)))
          l (if (> (strlen c) l)
              (strlen c)
              l
            )
          t2 (strcat t2 c)
    )
  )
  t2
)
发表于 2019-4-23 02:42 | 显示全部楼层
本帖最后由 wudechao 于 2019-4-23 02:45 编辑
004 发表于 2019-4-23 01:18
没明白用在什么地方

比如:用于自动提取某个区域(如图框的图名栏)多行text文字的内容。这个区域文字可能是其它人画的,可能被打断了,有几行,也可能其它原因打断(数字和中文混排打断),现在想提取出来,放在目录里或添加在自动打印文件的名称里。我现在刚好想编写一个自动打印pdf的命令,这个打印文件能自动提取图名,图号等等,
发表于 2019-4-23 08:21 | 显示全部楼层
谢谢! wudechao 分享函数!!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-26 23:59 , Processed in 2.898713 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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