明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 847|回复: 3

关于字符合并的尝试:意在解决合并后的宽度,垂直字符的排序!

[复制链接]
发表于 2021-11-5 22:01:42 | 显示全部楼层 |阅读模式
本帖最后由 尘缘一生 于 2021-11-6 01:08 编辑

不多说:


    • ;;字符 文字合并-----(一级)---------------------
    • (defun wzhb (ss / i n ename dl ell x y text e1 e2 ang h h0 dis num strlis str1)
    •   (if ss
    •     (progn
    •       (setq ang (e-ang (ssname ss (fix (* (sslength ss) 0.5))) nil))
    •       (setq dl nil h0 2.5 num 0 dis 0)
    •       (repeat (setq i (sslength ss))
    •         (setq ename (ssname ss (setq i (1- i))))
    •         (setq h (e-higt ename))
    •         (if (> h h0) ;;取最高大字高
    •           (setq h0 h)
    •           (setq h h0)
    •         )
    •       )
    •       (repeat (setq i (sslength ss))
    •         (setq ename (ssname ss (setq i (1- i))) ell (entget ename) x (cadr (assoc 10 ell)) y (cadr (cadr (e-box4 ename t))) text (getstr ename))
    •         (setq dl (append dl (list (list x text ename y))))
    •         (setq strlis (sl-str->singleonly text))
    •         (repeat (setq n (length strlis))
    •           (setq str1 (nth (setq n (1- n)) strlis))
    •           (if (>= (ascii str1) 128) ;;汉字
    •             (progn
    •               (setq dis (+ (* 1.3 h) dis))
    •               (setq num (+ 2 num)) ;;个数
    •             )
    •             (progn
    •               (setq dis (+ (* 0.7 h) dis))
    •               (setq num (1+ num))
    •             )
    •           )
    •         )
    •       )
    •       (setq x (/ (/ dis num) h)) ;;宽高比
    •       (if (or (= ang pi2) (= ang (- 0 pi2)))
    •         (setq dl (vl-sort dl (function (lambda (e1 e2) (< (cadddr e1) (cadddr e2)))))) ;;垂直文字 从上到下
    •         (setq dl (vl-sort dl (function (lambda (e1 e2) (< (car e1) (car e2)))))) ;;其余 从左到右
    •       )
    •       (setq ;;第一个实体数据
    •         text (cadr (nth 0 dl))
    •         ell (entget (caddr (nth 0 dl)))
    •         i 1
    •       )
    •       (repeat (1- (length dl))
    •         (setq text (strcat text (cadr (nth i dl))))
    •         (entdel (caddr (nth i dl)))
    •         (setq i (1+ i))
    •       )
    •       (entmod (emod (emod (emod (emod (emod (emod ell 1 text) 40 h) 41 x) 72 0) 73 0) 62 (atoi (slsjqs)))) ;;左定位,变色
    •     )
    •   )
    • )
发表于 2021-11-8 19:08:59 | 显示全部楼层
看能不能做出这个,输入一个关键字,可以让一行字符串以这个关键字断开
例如:“我今天去找你玩”
参数中输入“去”字,这行字变成“我今天” “找你玩”
这两行字相对原来位置不变。
我找到leemac的程序,他的只支持英文,中文的没改出来。
 楼主| 发表于 2021-11-10 02:14:25 | 显示全部楼层
tigcat 发表于 2021-11-8 19:08
看能不能做出这个,输入一个关键字,可以让一行字符串以这个关键字断开
例如:“我今天去找你玩”
参数中 ...

这个本坛记得有的。
发表于 2021-11-10 21:36:36 | 显示全部楼层
尘缘一生 发表于 2021-11-10 02:14
这个本坛记得有的。

兄弟睡得晚啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 08:52 , Processed in 0.151347 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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