明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2068|回复: 15

[经验] 右键菜单

[复制链接]
发表于 2024-1-26 12:22:20 | 显示全部楼层 |阅读模式
本帖最后由 sandyvs 于 2024-1-26 14:22 编辑

一直苦于文字加后缀,尤其是符号,输入法还不能打出来。找到相关的http://bbs.mjtd.com/forum.php?mo ... hlight=%D3%D2%BC%FC,其他的基本也是在此基础上改进优化,但右键菜单函数有点复杂,我改不了。

所以,换种思路,先生成菜单不就好了:

(setq wzlst '(
                        ("1" "2" "3" "4" "5" "6"  "7" "8")
                        ("甲" "乙" "丙" "丁" "戊" "己"  "辛" "辛")
                        ));;根据需求更改,或写函数修改


(defun c:dynyj ( / *error* code ptx ptd en enstr ent pts pt0 bg loop gr wz ss ss1 strh sm pt)
        (defun *error* ( msg )
                (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
                        (progn (princ (strcat "\n错误:" msg))
                                (setvar "SELECTIONPREVIEW" 3)
                                (redraw)
                        )
                )
                (princ)
   )
        (gxl-error-init2 '*error* 2)
        (setq en (car(entsel "\n选择文字(空选新建):")))
        (while (and en(not (eq (czx:getdxf en 0) "TEXT")))
                (setq en (car(entsel "\n选择文字(空选新建):"))))
        (if (= en nil)
                (progn
                  (setq pt0 (cadr (grread t 5)))
                  (setq sm "右键写图名,左键写普通字")
                )
                (progn
                        (setq enstr (czx:getdxf en 1))
                        ; (setq pts (czx:minbox en 0))
                        ; (setq pts (czx:sort pts "yxz" 0))
                        ;(setq pt0 (car pts))
                        (setq pt0 (cadr (grread t 5)))
                        (setq sm "右键替换,左键加后缀")
                )
        )
        (setq ent (entlast))
        (setq bg (czx:hzbg2 pt0 (setq strh (* (getvar "viewsize") 0.010)) wzlst nil sm nil t))
        (setq ss (czx:newss ent))
        (setq loop t)
        (princ( strcat "\n" sm ":"))
          (while loop
                (setq gr (grread t 13 2))
                (setq code (car gr))
                (setq ptx (cadr gr))
                (cond
                  ((= code 5);移动
                        (setvar "SELECTIONPREVIEW" 2)
                        (redraw)
                        (foreach x (car bg)
                                (if (czx:insidep (caddr x) ptx)
                                        (progn
                                                (czx:putdxf (cadr x) 62 1)
                                                (czx:putdxf (cadr x) 40 (* strh 2.8))
                                                (grvecs (append (list -6) (czx:lst-cross (caddr x))))
                                                (setq wz (car x))
                                                
                                        )
                                        (progn
                                                (czx:putdxf (cadr x) 62 7)
                                                (czx:putdxf (cadr x) 40 (* strh 2))
                                        )
                                )
                        )
                        (setq ptd ptx)
                  )
                  ((= code 25);;右键
                        (if (czx:insidep (cadr bg) ptd)
                                (progn
                                        (setq loop nil)
                                        (czx:erase ss)
                                        (if en
                                                (czx:putdxf en 1 wz)
                                                (progn
                                                        (setq ss1(czx:tmx (czx:emktext "YQ_TEXT" "YQ_TEXT" wz 0 (* 4.5 (getvar "dimscale")) 1 pt0 "中下")))
                                                        (command ".move" ss1 "" pt0  (getpoint pt0))
                                                )
                                        )
                                        (redraw)
                                )
                        )
                  )
                  ((= code 3);;;左键
                   (if (czx:insidep (cadr bg) ptd)
                           (progn
                                   (setq loop nil)
                                   (czx:erase ss)
                                        (if en
                                        (czx:putdxf en 1 (strcat enstr wz))
                                        (progn
                                                (czx:emktext "YQ_TEXT" "YQ_TEXT" wz 0 (* 2.5 (getvar "dimscale")) 1 pt0 "正中")
                                                (command ".move" (entlast) "" pt0  (getpoint pt0))
                                        )
                                        )
                                   (redraw)
                           )
                   )
                  )


                )
          )
        (gxl-error-end2)
        (setvar "SELECTIONPREVIEW" 3)
        (prin1)
        (princ)
)



所需函数见http://bbs.mjtd.com/forum.php?mo ... =1&extra=#pid953361

大多函数来自论坛,感谢各位作者!

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-1-27 21:24:20 | 显示全部楼层
大佬,这个错误怎么处理呢?
命令: DYNYJ
错误:no function definition: GXL-ERROR-INIT2
命令:
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2024-1-29 10:48:12 | 显示全部楼层
本帖最后由 sandyvs 于 2024-1-29 11:09 编辑
木子代山马化十 发表于 2024-1-27 23:44
是下您这个所需函数.fas吗?
我加载的话,提示错误: EOF 错误,我是2021,
不好意思哈,我是小白不太懂

是这个函数,函数搜索那个只是个示例,没2021,不知什么情况,有时间我再测试下


更新了下,重新下载试试
发表于 2024-1-27 23:44:17 | 显示全部楼层
sandyvs 发表于 2024-1-27 22:13
这个是G版的错误处理函数,帖子下方的链接有,下载加载下

是下您这个所需函数.fas吗?
我加载的话,提示错误: EOF 错误,我是2021,
不好意思哈,我是小白不太懂
 楼主| 发表于 2024-1-27 22:13:00 | 显示全部楼层
木子代山马化十 发表于 2024-1-27 21:24
大佬,这个错误怎么处理呢?
命令: DYNYJ
错误:no function definition: GXL-ERROR-INIT2

这个是G版的错误处理函数,帖子下方的链接有,下载加载下
发表于 2024-1-28 11:53:50 | 显示全部楼层
大佬,找到了函数搜索,但是打开之后里面数据库只有3个函数
发表于 2024-1-28 22:30:20 | 显示全部楼层
命令: DYNYJ
选择文字(空选新建):
选择文字(空选新建):
** Error: 除数为零 **
用不了
发表于 2024-1-29 08:16:08 | 显示全部楼层
运行不出来楼主的效果呢                  
 楼主| 发表于 2024-1-29 10:46:10 | 显示全部楼层
00放飞梦想00 发表于 2024-1-28 22:30
命令: DYNYJ
选择文字(空选新建):
选择文字(空选新建):

wzlst没定义吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 23:12 , Processed in 0.214065 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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