关于字符合并的尝试:意在解决合并后的宽度,垂直字符的排序!
本帖最后由 尘缘一生 于 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)))) ;;左定位,变色
[*] )
[*])
[*])
看能不能做出这个,输入一个关键字,可以让一行字符串以这个关键字断开
例如:“我今天去找你玩”
参数中输入“去”字,这行字变成“我今天” “找你玩”
这两行字相对原来位置不变。
我找到leemac的程序,他的只支持英文,中文的没改出来。 tigcat 发表于 2021-11-8 19:08
看能不能做出这个,输入一个关键字,可以让一行字符串以这个关键字断开
例如:“我今天去找你玩”
参数中 ...
这个本坛记得有的。 尘缘一生 发表于 2021-11-10 02:14
这个本坛记得有的。
兄弟睡得晚啊
页:
[1]