明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 87707|回复: 256

[函数] 【函数源码分享】根据G版思路写的右键菜单函数。附实例代码。

    [复制链接]
发表于 2013-5-19 11:10:10 | 显示全部楼层 |阅读模式
本帖最后由 wowan1314 于 2013-6-8 11:11 编辑

       根据G版思路写的“对话框”,或者叫“右键菜单函数”更准确些。
原帖地址:
有趣的对话框程序!LISP能实现吗?http://bbs.mjtd.com/forum.php?mo ... 1224&fromuid=282351

;;=========================右键菜单函数V1.0--先关闭捕捉===========BY WOWAN1314
;;                       思路来源----G版        程序制作:----WOWAN1314  
;;主要参考资料: CAOYIN刷子函数及"流浪水手"的拖拽实例其他不一一点名了。基本是拼凑出来的。
;; 感谢G版,caoyin  流浪水手 ...一发程序发现大部分都是别人写的。有的都不记的作者了。哎。怪不得好多人都不敢发
;;免责声明:本着开源精神,本代码可随意复制。仅供参考、交流。实际工作不得使用,否则后果自负。
;;==================================================================;;
;;功能:在指定点产生类似右键菜单的表格框供选择。并返回选择值。
;;调用格式:(YY:YJCAIDAN PT LEN LEN1 WZLST TUXIAN)
;;参数:        PT表格产生点,len格子大小。tuxian为要作底的文字内容. WZLST为要写的文字表.LEN1横向长度,
;;                  共计5个参数TUXIAN可为NIL,其他必须有值.
;;附加说明:表格横向固定2格,竖向多少格由文字表决定. 竖向长度固定,横向长度自定. 文字样式随当前
;;返回值:   表(0 "DN15").表内第一项为数字:表示选择了WZLST的第几项(其中0表示第一个文字),
;;                                       表内第二项为对应的文字内容.
;;==================================================================;;
  1. ;;;======================{  示例代码:修改替换管径文字 }====================;;
  2. ;;;
  3. (DEFUN C:T11 (/ EN WZTXT WZLST LEN OLDWZ LEN1 SNAP WZ *error* error_end)
  4. ;;-------------------------------出错函数
  5.    (defun *error* (x) (error_end)(command "_.undo" "1"))
  6.    (defun error_end ()
  7.       (AND snap (setvar "osmode" snap));打开捕捉
  8.       (command "_.undo" "e");结束编组
  9.       ;回到当初
  10.       (REDRAW);刷新当前
  11.    )
  12. ;;主函数
  13. (command "_.undo" "Be")
  14.   (WHILE (SETQ EN (entsel "\n选择要修改管径的文字:"))
  15.     (IF  (AND (SETQ WZTXT (DXF_READ 1 (CAR EN)))
  16.        (wcmatch WZTXT "*DN##*")
  17.   )        ;管径
  18.       (PROGN
  19.   (SETQ WZLST (LIST "DN15"    "DN20"    "DN32"  "DN40"
  20.         "DN50"    "DN65"    "DN75"  "DN80"
  21.         "DN100"   "DN300"   "DN150"  "DN200"
  22.         "你好"
  23.        )
  24.   )
  25.   (SETQ len   (p2u222 88)
  26.         OLDWZ WZTXT
  27.         LEN1  (* 0.26 4 LEN)
  28.         ;;计算横向长度
  29.   )
  30.   (setq snap (getvar "osmode"))
  31.   (setvar "osmode" 0)    ;关闭
  32.   (IF (SETQ WZ (CADR (YY:YJCAIDAN (CADR EN) LEN LEN1 WZLST OLDWZ)));;调用菜单函数
  33.     (YY_SubUpd (CAR EN) 1 WZ) ;;此处放回调函数
  34.   )        ; IF

  35.       )
  36.     )          ;END IF
  37.   )
  38. (error_end)
  39.   (PRINC)
  40. )          ;END DEFUN

  41. ;;;===========================================得到当前屏幕的大小比例
  42. (defun p2u222 (pix)
  43.   (* pix (/ (getvar "viewsize") (cadr (getvar "screensize"))))
  44. )

本帖子中包含更多资源

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

x

点评

你越来越牛x了!收费差不多了之后建议开源,方便大家学习。  发表于 2013-5-21 20:45
拾取文字,根据屏幕视图大小缩放生成的文字,grread拾取位置判断选择哪个文字  发表于 2013-5-20 10:54

评分

参与人数 9明经币 +10 金钱 +81 收起 理由
林霄云 + 1 + 50 赞一个!好像不支持ucs?
ylzhaosjz + 1 赞一个!
hhhlike + 1 + 5 很给力!
print1985 + 1 + 5 很给力!
kwok + 1 很给力!新坛规币不会到你账上要37分账,呵呵
zctao1966 + 1 很给力!
自贡黄明儒 + 1 神马都是浮云
夏生生 + 6 很给力!马甲加分
Gu_xl + 3 + 15 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

 楼主| 发表于 2019-10-14 19:50:05 | 显示全部楼层
6年了~  却没有发布深化这个函数的。
让此函数支持 “多标签 多页 固定行” 显示菜单。
如果有人写了,方便的话请发上来,我现在好多基本函数都忘了。这个右键菜单还是比系统自带的好用好看些~



本帖子中包含更多资源

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

x
发表于 2014-6-14 08:02:14 | 显示全部楼层
本帖最后由 尘缘一生 于 2014-6-14 08:06 编辑

        代码写的确实好,然而,本帖只能解决修改问题,一般情况下,我们比如:修改数字,钢筋间距、直径什么的,也就是其中某个数错,并不需要全部这样改写的。

        相信大家都知道
“它山之石屏幕改字”,比这个要实用快速的多。
        上面已有同仁提出:能否改动代码,空选择的时候,直接写出这个字符,提的好。


        总之一句话:

               这段代码好是好,要实际用起来,作用并不大,因为有比这更好的手段,期待修改此代码,增加大家说的写出实体功能。

点评

每个插件都有自己的理想使用环境,修改数字、钢筋间距直径这些属于结构设计范畴,专门的修改工具可以用探索者或者本站帖子http://bbs.mjtd.com/thread-188353-1-1.html?_dsign=93bfb33b,更好的解决结构配筋问题  发表于 2024-3-25 10:13
不解其中奥妙,还用这么大的字  发表于 2014-7-23 21:52
回复 支持 0 反对 2

使用道具 举报

发表于 2017-12-8 16:36:49 | 显示全部楼层
本帖最后由 fl202 于 2018-2-2 11:55 编辑
众山小 发表于 2013-5-22 08:51
楼主,能否在无编辑修改文字时,是能否增加为插入文字?

2018.2.2更新,烦请各位重新下载测试,重新下载不会反复收币。谢谢!
下载地址:
更新后的gif见下方:

修改如下:
1 增加插入文字/复制/文字刷等功能。(不需要的该功能的,请屏蔽;,因为操作多了1次。)
2 修正了wipout的子函数功能,就是遮盖动态菜单下的cad内容。因为有些人比如我用的高版本cad里,如果加载错误,会导致整个程序没有反应。低版本需要加载acwipeout.arx,高版本里需要加载acismui.arx,本程序中加入判断及加载语句。该子函数在屏幕上内容比较多时效果会很好,否则菜单和背景重合会比较难辨别,像我下面的未更新前的gif文件,就是没有遮盖的。
3 主程序和调用的通用菜单函数放在一起了,免得有些人不知道怎么用。直接下载本函数就可以使用了。
楼下说的错误,还未修正,因为不知道原因。等待。
更新前的gif就不贴出来了。

本帖子中包含更多资源

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

x

点评

第二级菜单应该做成标签菜单,替换类的词组在替换面板,插入类的词组在插入面板……,这样体验会更好,弄个二级菜单感觉操作多了好几步。  发表于 2024-3-17 11:25
替换、插入、改写等等写在一起的,不实用,不应该这么作,为什么?当你想改动字符的时候,你难道还需要同时复制移动吗?另外:复制功能后,还需要黏在鼠标上最后定位的。按键最少最少的,才是真正可用的。  发表于 2018-2-3 08:37
回复 支持 1 反对 1

使用道具 举报

发表于 2018-2-3 20:05:37 | 显示全部楼层
fl202 发表于 2017-12-8 16:36
2018.2.2更新,烦请各位重新下载测试,重新下载不会反复收币。谢谢!
下载地址:
更新后的gif见下方:
...

在布局还是看不到??这有办法解决吗

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

发表于 2013-5-26 15:25:57 | 显示全部楼层
布局里这样了

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

发表于 2013-5-19 11:12:36 | 显示全部楼层
支持一下,看看思路,我写那个扔了好久了,没时间

点评

因为给小孩到医院打针,所以那时候拿了个本子就写这个代码的步骤,发现写了步骤再写代码,快多了。  发表于 2013-5-19 11:21
你发的时候,我的已经写差不多了。不过都是写的思路步骤还没写成代码。  发表于 2013-5-19 11:20
发表于 2013-5-19 12:58:16 | 显示全部楼层
厉害啊厉害,学习一下~
发表于 2013-5-19 13:03:54 | 显示全部楼层
漂亮!楼主太有才了
发表于 2013-5-19 13:21:10 | 显示全部楼层
这个太漂亮了,用处很大
发表于 2013-5-19 13:36:59 | 显示全部楼层
建筑的好像很少用到呢
发表于 2013-5-19 13:59:49 | 显示全部楼层
还要加个错误处理,不然按ESC中断后就留在屏幕上了。对等好贴,要吹毛求疵

点评

话说卖出去8个人。16个币了。怎么一个都没到我的账户上!?  发表于 2013-5-19 17:26
好啦! 示例代码也加了出错处理了。作为出错处理参考吧。  发表于 2013-5-19 17:24
主要是提供右键菜单函数。 出错处理在各自的主程序中进行。示例代码主要是为了展示函数调用。  发表于 2013-5-19 14:07
发表于 2013-5-19 14:41:04 | 显示全部楼层
厉害啊厉害,好贴不顶对不起自己
发表于 2013-5-19 15:40:18 | 显示全部楼层
能框选就好了。选不到的时候不自动退出就好了。
发表于 2013-5-19 15:48:55 | 显示全部楼层
楼主真的很厉害。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 10:39 , Processed in 0.209393 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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