明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: wgij007

[提问] 求一关于文本的代码

[复制链接]
发表于 2021-9-27 08:32 | 显示全部楼层
规律性说明的太少了,自己的问题尽量描述的清楚点,我替高手再问你几个问题,就三个文字吗,三个文字的位置永远是这么固定的吗,每个文字内容有一定规律,还是三个文字内容都是随机的呀,三个文字在一个封闭区域内不,或者通过什么确定三个文字为一组呀,还是你就只是想自己手选呀,添加到中间的文字什么规律呀,手动输入 还是有一定规律变化呀,等等等等,问题描述不全,想帮忙的,也懒得问!!!
回复

使用道具 举报

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

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

使用道具 举报

发表于 2021-9-27 19:14 | 显示全部楼层
猜着玩了一下,用的伪代码写的,提供一下思路,你要有合适的 相同功能的函数就直接替换一下

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2021-9-27 19:16 | 显示全部楼层
思路贴出来,主要用两次排序确定三个文字的顺序,其他基本都是常规操作了
伪码,没法直接使用,仅供参考:
(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"))))
        (setq  ssl(TableSort-V ss 4 0.0001))
        (setq  en1(caar(last(XJ-Remove ssl nil)))) ;排序找到最右边的一个图元
        (setq  ss2(TableSort-H ss 4 0.0001))
        (setq  en2(caaar(XJ-Remove ss2 nil))) ;排序找到左边的上面的图元
        (setq  en3(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 10  p1)(assoc 10 (entget en2))(entget en2))) ;更新插入点
        (entmod(subst(cons 10  p2)(assoc 10 (entget en3))(entget en3))) ;更新插入点
        (entmod(subst(cons 10  p3)(assoc 10 (entget en1))(entget en1))) ;更新插入点
        (entmod(subst(cons 1  TXT1)(assoc 1 (entget en3))(entget en3))) ;更新需要加了后缀的文字
        (xj-jieshu)
        (princ)
)
回复

使用道具 举报

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

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

使用道具 举报

 楼主| 发表于 2021-9-28 07:53 | 显示全部楼层
本帖最后由 wgij007 于 2021-9-28 07:59 编辑
xj6019 发表于 2021-9-27 19:16
思路贴出来,主要用两次排序确定三个文字的顺序,其他基本都是常规操作了
伪码,没法直接使用,仅供参考: ...

感谢您的帮忙,就是视频那样,后面加的字符能直接加上吗,每次一样的。弹出窗口又多了一步了。

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


回复

使用道具 举报

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

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

使用道具 举报

发表于 2021-10-4 20:34 | 显示全部楼层
wgij007 发表于 2021-10-4 12:33
兄弟,能反那个库共享一下吗,打开好多问题。

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


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

使用道具 举报

 楼主| 发表于 2021-10-5 07:49 | 显示全部楼层
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 ...

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

使用道具 举报

 楼主| 发表于 2021-10-5 07:55 | 显示全部楼层
本帖最后由 wgij007 于 2021-10-5 08:12 编辑
xj6019 发表于 2021-10-4 20:34
给你个没问题的,能直接用的,说明:只参照之前的说明情况,大体写出来的代码,有变动不适合之前说明情况 ...

兄弟,这个可以是复制吗,原来的不变,只是复制。感谢。
把它改成只选红色的会出错,不明
(if        (setq ss (ssget (list '(0 . "*text")(62 . 1))))
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 18:29 , Processed in 0.139677 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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