xj6019 发表于 2021-9-27 08:32:00

规律性说明的太少了,自己的问题尽量描述的清楚点,我替高手再问你几个问题,就三个文字吗,三个文字的位置永远是这么固定的吗,每个文字内容有一定规律,还是三个文字内容都是随机的呀,三个文字在一个封闭区域内不,或者通过什么确定三个文字为一组呀,还是你就只是想自己手选呀,添加到中间的文字什么规律呀,手动输入 还是有一定规律变化呀,等等等等,问题描述不全,想帮忙的,也懒得问!!!

wgij007 发表于 2021-9-27 13:46:44

xj6019 发表于 2021-9-27 08:32
规律性说明的太少了,自己的问题尽量描述的清楚点,我替高手再问你几个问题,就三个文字吗,三个文字的位置 ...

1,文字的内容是随机的,2,不在封闭区域,直接框选,框选区域没有其他文本,只有这三组。3,添加到中间的文字就是那几个,固定的。4,3组文体的位置方位是一样的,只是距离不一样。如图,框选后的三组文本,反左边的两组放在右的那组的上面。

xj6019 发表于 2021-9-27 19:14:49

猜着玩了一下,用的伪代码写的,提供一下思路,你要有合适的 相同功能的函数就直接替换一下

xj6019 发表于 2021-9-27 19:16:26

思路贴出来,主要用两次排序确定三个文字的顺序,其他基本都是常规操作了
伪码,没法直接使用,仅供参考:
(defun c:NM (/ en1 en2 en3 p1 p2 p3 shuru ss ss2 ssl txt txt1 zg)   
        (xj-kaishi)
        (setq ss (ssget (list '(0 . "TEXT,MTEXT"))))
        (setqssl(TableSort-V ss 4 0.0001))
        (setqen1(caar(last(XJ-Remove ssl nil)))) ;排序找到最右边的一个图元
        (setqss2(TableSort-H ss 4 0.0001))
        (setqen2(caaar(XJ-Remove ss2 nil))) ;排序找到左边的上面的图元
        (setqen3(caar(last(XJ-Remove ss2 nil)))) ;排序找到左边的下面的图元
        (setq zg(cdr (assoc 40 (entget en1)))) ;取一个字高
        (setq shuru '(( "输入後缀:" "XXX1" "XXX")))
        (setq TXT(DCL-XJ-DANDUMB"★XJ_山寨版_玩一把★" shuru"1V" nil">>>>天天画图多苦逼!!"))
        (setq TXT1(strcat (BF-ent-getdxf en3 1)(cadar TXT)));命名加了后缀的文字
        (setq p1 (getpoint "\n请指定插入点:"))
        (setq p2 (polar p1 (* 1.5 pi)(* 2.2 zg)))
        (setq p3 (polar p2 (* 1.5 pi)(* 2.2 zg)))
        (entmod(subst(cons 10p1)(assoc 10 (entget en2))(entget en2))) ;更新插入点
        (entmod(subst(cons 10p2)(assoc 10 (entget en3))(entget en3))) ;更新插入点
        (entmod(subst(cons 10p3)(assoc 10 (entget en1))(entget en1))) ;更新插入点
        (entmod(subst(cons 1TXT1)(assoc 1 (entget en3))(entget en3))) ;更新需要加了后缀的文字
        (xj-jieshu)
        (princ)
)

kkq0305 发表于 2021-9-27 22:03:08

wgij007 发表于 2021-9-27 13:46
1,文字的内容是随机的,2,不在封闭区域,直接框选,框选区域没有其他文本,只有这三组。3,添加到中间的 ...

这次才弄明白要干什么 ,之前啥也没有说。

wgij007 发表于 2021-9-28 07:53:48

本帖最后由 wgij007 于 2021-9-28 07:59 编辑

xj6019 发表于 2021-9-27 19:16
思路贴出来,主要用两次排序确定三个文字的顺序,其他基本都是常规操作了
伪码,没法直接使用,仅供参考: ...
感谢您的帮忙,就是视频那样,后面加的字符能直接加上吗,每次一样的。弹出窗口又多了一步了。

能帮忙解决一下,下面的错误吗?真得非常感谢,帮了一个大忙了。
出现错误, nm ; 错误: no function definition: XJ-KAISHI


wgij007 发表于 2021-10-4 12:33:41

xj6019 发表于 2021-9-27 19:16
思路贴出来,主要用两次排序确定三个文字的顺序,其他基本都是常规操作了
伪码,没法直接使用,仅供参考: ...

兄弟,能反那个库共享一下吗,打开好多问题。

xj6019 发表于 2021-10-4 20:34:38

wgij007 发表于 2021-10-4 12:33
兄弟,能反那个库共享一下吗,打开好多问题。

给你个没问题的,能直接用的,说明:只参照之前的说明情况,大体写出来的代码,有变动不适合之前说明情况的,大概率不能满足你的需求,看这么久了,你还想要这个代码,想来应该是你还用的到,晚上抽时间重新捣鼓了一下,已经测试,可以满足你上面所说的情况了,能力有限,有未在说明情况内的其他变动,不再继续更新了哦,能力实在有限,忘见谅!!!


代码见下一层楼------>>>>>>

wgij007 发表于 2021-10-5 07:49:56

xj6019 发表于 2021-10-4 20:35
调试过的代码,如下:
(defun c:nm (/ ss lst i en ent pt en1 en2 en3 txt1 p1 zg p2 p3 )
        (if        (setq s ...

真得太感谢了,帮了大忙,

wgij007 发表于 2021-10-5 07:55:01

本帖最后由 wgij007 于 2021-10-5 08:12 编辑

xj6019 发表于 2021-10-4 20:34
给你个没问题的,能直接用的,说明:只参照之前的说明情况,大体写出来的代码,有变动不适合之前说明情况 ...
兄弟,这个可以是复制吗,原来的不变,只是复制。感谢。
把它改成只选红色的会出错,不明
(if      (setq ss (ssget (list '(0 . "*text")(62 . 1))))
页: 1 2 [3] 4
查看完整版本: 求一关于文本的代码