明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: wzg356

[源码] 自设ssget关键字提示函数356版--命令行/屏幕提示两个版本

[复制链接]
 楼主| 发表于 2025-2-25 22:55:39 来自手机 | 显示全部楼层
hubeiwdlue 发表于 2025-2-25 22:40
比如:S单次框选关键字,又希望带自定义关键字做设置选项。
论坛上的这类函数,好像中望一直不支持,2025 ...

:s意义就是只执行1次选择,自定义关键字执行1次——输入关键字或选择1次。
回复 支持 反对

使用道具 举报

发表于 2025-2-25 22:59:37 | 显示全部楼层
wzg356 发表于 2025-2-25 22:55
:s意义就是只执行1次选择,自定义关键字执行1次——输入关键字或选择1次。

哦,我知道了,谢谢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-2-26 09:12:07 来自手机 | 显示全部楼层
ssgetsel修正点选过滤和输出遗漏,两个函数都可以在文字刷工具用。
回复 支持 反对

使用道具 举报

发表于 2025-2-27 14:08:59 | 显示全部楼层
带提示的ssget比较实用,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-2-27 20:22:40 | 显示全部楼层
本帖最后由 wzg356 于 2025-2-27 23:02 编辑

ssgetpro的3种主要的应用场景代码示例
运行:
(setq  sel '((97 "A")(65 "A")(115 "S")(83 "S")) ;关键字A S --- 查grread简表设置
        fls nil ;过滤表
        msg "选取对象(功能A/功能S)<>:" ;提示        
)
继续分别运行以下为3 种场景示例代码即可理解区别---均为执行1次 如要循环加while就行
返回关键字/选择集/nil
1.实现关键字A S+:S模式---拾取/框选 区分正/反框选
(ssgetpro sel fls msg)
(while (ssgetpro sel fls msg)) ;循环示例,右键/回车/空格结束,以下2例类似

2.实现关键字A S+:E:S模式---拾取
(if(= 'str(type (setq p(grKwordP sel msg 2))))
        p(if p(ssgetpro p fls msg))
)
3.实现关键字A S+1次框选模式---区分正/反框选
(if(= 'str(type (setq p(grKwordP sel msg 2))))
        p(if p(ssgetpro (list p) fls msg))
)
总结:利用grKwordP函数,可实现关键字+任何ssget 方法的组合




评分

参与人数 1明经币 +1 收起 理由
hubeiwdlue + 1 赞一个!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2025-5-16 16:22:12 | 显示全部楼层
wzg356 发表于 2025-2-27 20:22
ssgetpro的3种主要的应用场景代码示例
运行:
(setq  sel '((97 "A")(65 "A")(115 "S")(83 "S")) ;关键 ...

可以按了关键字之后不结束ssget吗?就是有多个关键字,每个关键字对应一项设置,要不还没设置完都结束选择了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-5-16 17:47:49 | 显示全部楼层
本帖最后由 wzg356 于 2025-5-16 17:51 编辑
sandyvs 发表于 2025-5-16 16:22
可以按了关键字之后不结束ssget吗?就是有多个关键字,每个关键字对应一项设置,要不还没设置完都结束选 ...

(defun getpickp(sel msg / p)
        (initget (strcat sel "  "))
        (setq p(entsel msg))
        (cond((= "" p)nil)
                ((= 'str(type p))p)
                ((cadr p))
                ((cadr(grread t 13 1)))
        )        
)
(defun xxxx( / stop p p2 ss....);循环选择示例
(setq stop nil)
(while (not stop)
        (setq p(getpickp sel msg));这种要变换提示
        (cond
                ((not p)(setq stop nil))
                ((= p ....)(.....))
                ((and p(listp p))
                        (cond
                        ;((setq e(nentselp p))....)可以另模拟小窗选
                        ((and
                                        (setq p2(getcorner p "\n指定对角点:"))
                                        (setq ss(ssget"_C" p p2 fls))
                                        )
                                        .....
                        )
                ))
        )
)
)
回复 支持 反对

使用道具 举报

发表于 2025-5-19 11:31:59 | 显示全部楼层

提示的内容在命令行的吗?我显示不到鼠标的位置,不知道是哪里有问题。




理想的是要类似entsel的样式,我理解的重写ssget也是这样比较好用


本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-5-19 16:43:23 | 显示全部楼层
本帖最后由 wzg356 于 2025-5-19 16:45 编辑
jun470 发表于 2025-5-19 11:31
提示的内容在命令行的吗?我显示不到鼠标的位置,不知道是哪里有问题。

屏幕提示截去方括号(简单些好),比较完整的更新了  去下载研究
回复 支持 反对

使用道具 举报

发表于 2025-5-19 17:15:18 | 显示全部楼层
jun470 发表于 2025-5-19 11:31
提示的内容在命令行的吗?我显示不到鼠标的位置,不知道是哪里有问题。

别研究了,能用就行了,想要搞复杂还是得去C#或许ARX,
一个简单的ssget关键字回调函数而已,官方直接提供了,
再不济学四叉树,然后自己做一个得了.
提示什么的,
直接通过系统变量隐藏原本,或者拦截消息过程,再自己自绘一个.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-1 17:00 , Processed in 0.173390 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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