右键菜单
本帖最后由 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
大多函数来自论坛,感谢各位作者!
大佬,这个错误怎么处理呢?
命令: DYNYJ
错误:no function definition: GXL-ERROR-INIT2
命令: 本帖最后由 sandyvs 于 2024-1-29 11:09 编辑
木子代山马化十 发表于 2024-1-27 23:44
是下您这个所需函数.fas吗?
我加载的话,提示错误: EOF 错误,我是2021,
不好意思哈,我是小白不太懂
是这个函数,函数搜索那个只是个示例,没2021,不知什么情况,有时间我再测试下
更新了下,重新下载试试
sandyvs 发表于 2024-1-27 22:13
这个是G版的错误处理函数,帖子下方的链接有,下载加载下
是下您这个所需函数.fas吗?
我加载的话,提示错误: EOF 错误,我是2021,
不好意思哈,我是小白不太懂 感谢分享~:handshake 木子代山马化十 发表于 2024-1-27 21:24
大佬,这个错误怎么处理呢?
命令: DYNYJ
错误:no function definition: GXL-ERROR-INIT2
这个是G版的错误处理函数,帖子下方的链接有,下载加载下 大佬,找到了函数搜索,但是打开之后里面数据库只有3个函数 命令: DYNYJ
选择文字(空选新建):
选择文字(空选新建):
** Error: 除数为零 **
用不了 运行不出来楼主的效果呢 00放飞梦想00 发表于 2024-1-28 22:30
命令: DYNYJ
选择文字(空选新建):
选择文字(空选新建):
wzlst没定义吧
页:
[1]
2