明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 898|回复: 11

[函数] 函数: 屏幕动态显示信息 动态信息查询---重温经典学习代码

[复制链接]
发表于 2023-12-16 18:28 | 显示全部楼层 |阅读模式
本帖最后由 wzg356 于 2023-12-23 17:15 编辑

本站 有李麦可写的,套路太深 1000多行--还不支持中文

这里发一个简单的---完整的在 下载文件 一楼提醒的变量名已校核
完整函数在下载文件,里面包含动态信息查询---重写
下面有适用范例
;屏幕动态显示指定信息displayinfo
;示例1(displayinfo '("信息第1行""信息第2行"))
;示例2(displayinfo "信息第1行\n信息第2行")
;示例3(displayinfo (list 555 666))
(defun displayinfo(strs / p e1e2)
        (while (not(or(member(car p)'(3 25))(member p '((2 13)(2 32)))))
                ;左右键或回车结束
                (setq p(grread t 8))
                (mapcar 'entdel e1e2)
                (if(= (car p) 5)(setq e1e2(display00(cadr p) strs)))
        )
        (cond((=(car p) 3)"点击了左键"));返回举例
)
;例显示动态坐标(displayXYZ)
(defun displayXYZ( / p e1e2)
        (while (not(or(member(car p)'(3 25))(member p '((2 13)(2 32)))))
                (setq p(grread t 8))
                (mapcar 'entdel e1e2)
                (if(= (car p) 5)
                        (setq e1e2(display00(cadr p)
                                (mapcar 'strcat'        ("X=" "Y=" "Z=")
                                        (mapcar'(lambda(x)(rtos x 2 2))(cadr p))
                                )
                        ))
                )
        )
)

display00里面可以取消底框,直接启用用多行文字填充背景,7楼有多行文字填充背景entmakex组码


本帖子中包含更多资源

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

x

评分

参与人数 1金钱 +10 收起 理由
tigcat + 10 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-12-16 22:28 | 显示全部楼层
  (setq e(entmakemtext p hzt txsty strs))中这个txsty改下才能运行吧
发表于 2023-12-17 15:41 | 显示全部楼层
非常感谢大神分享有趣的源码
发表于 2023-12-18 16:30 | 显示全部楼层
谢谢分享  
发表于 2023-12-20 10:39 | 显示全部楼层
大佬又在默默发新作了,感谢热心分享
发表于 2023-12-20 19:47 | 显示全部楼层
请教下,用grread函数,生成了一个文字,然后定义了个错误函数,如果错误就删掉这个文字。运行命令后,按esc,正常应该能删掉这个文字,如果不动鼠标没问题,移动着鼠标点取消的时候就删不掉,能解决吗?如图所示

本帖子中包含更多资源

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

x

点评

快速移动鼠标的同时按下esc,会出现图片中的情况,怀疑是桌子的bug  发表于 2023-12-20 20:03
 楼主| 发表于 2023-12-23 16:55 | 显示全部楼层
可以取消底框
直接启用用多行文字填充背景
(entmakex (list
                '(0 . "MTEXT")'(100 . "AcDbEntity")'(100 . "AcDbMText")
                '(7 . "STANDARD");样式
                '(62 . 250);文字颜色
                (cons 10 p);点p
                (cons 40 hzt);字高
                (cons 1 strs);内容
                '(90 . 1);使用填充背景
                '(63 . 9);背景颜色
                '(45 . 1.5);超出宽度比例
        ));生成文字
 楼主| 发表于 2023-12-23 17:07 | 显示全部楼层
本帖最后由 wzg356 于 2023-12-23 17:18 编辑
sandyvs 发表于 2023-12-20 19:47
请教下,用grread函数,生成了一个文字,然后定义了个错误函数,如果错误就删掉这个文字。运行命令后,按es ...

一般地循环执行时(setq e(entmakex ...))....(entsel e)===严密成对出现
如循环中间如有其他动作没有(setq e(entmakex ...))
有可能出现(setq e(entmakex ...))(entsel e)(entsel e),e又重新生成了
我原贴就是利用(entsel e)(entsel e)重生文字盖在底框上

为避免这种情况,尽量检查好代码,或这样(setq e(entmakex ...))...(if e(progn(entsel e)(setq e nil)))
发表于 2023-12-23 20:06 | 显示全部楼层
wzg356 发表于 2023-12-23 17:07
一般地循环执行时(setq e(entmakex ...))....(entsel e)===严密成对出现
如循环中间如有其他动作没有(se ...

不是这个问题,出现删不掉的情况时,会提示错误处理函数出错,但如果用空格退出grread并执行同样的错误处理函数,就不会有问题,所以我研究了许久,最终写个arx,在进行grread时把esc替换成空格,结束时再恢复,才得以解决。如果不用arx,只能把生成的文字选择集记录成全局变量,每次执行命令时检查这个选择集是否还存在,如果存在则删除,也基本可解决。
发表于 2023-12-23 21:30 | 显示全部楼层
本帖最后由 sandyvs 于 2023-12-23 21:32 编辑
小菜123 发表于 2023-12-23 20:06
不是这个问题,出现删不掉的情况时,会提示错误处理函数出错,但如果用空格退出grread并执行同样的错误处 ...

是不是entdel函数的问题,我以为它是删除图元呢,原来还可以恢复,我用erase删除,好像就没问题了

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-4-28 11:25 , Processed in 0.339891 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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