明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1057|回复: 6

带屏幕显示的一键关键字(附用法示例)

  [复制链接]
发表于 2024-12-23 17:11:44 | 显示全部楼层 |阅读模式
本帖最后由 sandyvs 于 2024-12-26 18:07 编辑


  • ;;根据G版的一键关键字改编,sandyvs
  • ;[功能] 一键关键字,(czx:onekey str0 keyfun okfzj okfyj okfyd)
  • ;[说明]str0 = 提示信息//keyfun = 关键字和对应功能组成的二维表//okfzj = 左键功能(表,可为nil)//okfyj = 右键功能(表,可为nil)//okfyd = 移动功能(表,可为nil)返回值 = 按键值
  • (defun czx:onekey (str0 keyfun okfzj okfyj okfyd / *error* gr key loop ret txt)
  •    (defun *error* ( msg )
  •       (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
  •         (progn
  •           (princ (strcat "\n错误:" msg))
  •           (if (and txt (entget txt)) (entdel txt))
  •         )
  •       )
  •       (princ)
  •    )
  •   ;(if str0 (princ (strcat "\n " (czx:StrRegExpR "\\n" str0 "" "i") ) )) ;命令栏打印
  •   (setq keyfun (mapcar '(lambda (x) (cons (strcase (car x)) (cdr x))) keyfun))
  •   (setq key (mapcar 'car  keyfun))
  •   (setq loop t)
  •   (while loop
  •     (setq gr (grread t 4 0))
  •     (cond
  •       ((and (= 2 (car gr))
  •           (or (member (setq ret (strcase(chr (cadr gr)))) key))
  •         )
  •         (eval(cadr (assoc ret keyfun)))
  •         (if (caddr (assoc ret keyfun))(setq loop nil))
  •         (redraw)
  •       )
  •       ((= 5 (car gr))
  •         (if (and txt (entget txt)) (entdel txt))
  •         (if str0 (setq txt (czx:emkmt (cadr gr) str0 (/(getvar "viewsize")50) 3 t)))
  •         (if okfyd (eval okfyd))
  •         
  •       )
  •       ((or (= 25 (car gr)) (= 11 (car gr)))
  •         (setq ret "右键")
  •         (if okfyj (eval (car okfyj)))
  •         (if (cadr okfyj) (setq loop nil))
  •       )
  •       ((= 3 (car gr))
  •         (setq ret "左键")
  •         (if okfzj (eval (car okfzj)))
  •         (if (cadr okfzj) (setq loop nil))
  •       )
  •     )
  •   )
  •   (if (and txt (entget txt)) (entdel txt))
  •   ret
  • )
  • (defun czx:emkmt (pt str textheight textcolor bg)
  •   ;(czx:emkstyle "YQ_TEXT")
  •   (setq lst
  •     (list
  •       '(0 . "MTEXT")
  •       '(100 . "AcDbEntity")
  •       '(100 . "AcDbMText")
  •       (cons 40 textheight)
  •       ;(cons 7  "YQ_TEXT")
  •       ;(cons 8  layername)
  •       ;(cons 50 ang)
  •       '(71 . 7)
  •       '(72 . 5)
  •       '(73 . 1)
  •       (cons 62  textcolor)  ;字颜色
  •       (cons 1 str)
  •       (cons 10 pt)
  •     )
  •   )
  •   (if bg
  •     (entmakex (append lst  '((90 . 3) (45 . 1.1) (63 . 256) (441 . 0))))
  •     (entmakex (append lst '((90 . 0))))
  •   )
  • )

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2024-12-23 20:07:10 | 显示全部楼层
最好附个动图演示一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-24 09:37:42 | 显示全部楼层
qazxswk 发表于 2024-12-23 20:07
最好附个动图演示一下。

已增加动图
回复 支持 反对

使用道具 举报

发表于 2024-12-24 14:17:32 | 显示全部楼层
本帖最后由 qazxswk 于 2024-12-24 14:22 编辑

没有必要搞那么复杂,你在命令行里输入
(setvar "DYNPROMPT" 1)
(setvar "DYNMODE" 1)
在命令行输入正常命令,再看光标右下角。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-24 14:25:23 | 显示全部楼层
本帖最后由 sandyvs 于 2024-12-25 10:47 编辑
qazxswk 发表于 2024-12-24 14:17
没有必要搞那么复杂,你在命令行里输入
(setvar "DYNPROMPT" 1)
(setvar "DYNMODE" 1)

什么复杂?只是个多行文字啊,再说这不是针对 正常命令 的啊
回复 支持 反对

使用道具 举报

发表于 2024-12-25 23:31:29 来自手机 | 显示全部楼层
上面红色的菜单栏是啥,求分享
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-26 12:36:32 | 显示全部楼层
w090212y 发表于 2024-12-25 23:31
上面红色的菜单栏是啥,求分享

rbd4.2,路桥工具,网上搜就行,免费的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-5 02:50 , Processed in 0.370457 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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