wowan1314 发表于 2013-5-19 11:10:10

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

本帖最后由 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表示第一个文字),
;;                                       表内第二项为对应的文字内容.
;;==================================================================;;;;;======================{示例代码:修改替换管径文字 }====================;;
;;;
(DEFUN C:T11 (/ EN WZTXT WZLST LEN OLDWZ LEN1 SNAP WZ *error* error_end)
;;-------------------------------出错函数
   (defun *error* (x) (error_end)(command "_.undo" "1"))
   (defun error_end ()
      (AND snap (setvar "osmode" snap));打开捕捉
      (command "_.undo" "e");结束编组
      ;回到当初
      (REDRAW);刷新当前
   )
;;主函数
(command "_.undo" "Be")
(WHILE (SETQ EN (entsel "\n选择要修改管径的文字:"))
    (IF(AND (SETQ WZTXT (DXF_READ 1 (CAR EN)))
       (wcmatch WZTXT "*DN##*")
)      ;管径
      (PROGN
(SETQ WZLST (LIST "DN15"    "DN20"    "DN32""DN40"
      "DN50"    "DN65"    "DN75""DN80"
      "DN100"   "DN300"   "DN150""DN200"
      "你好"
       )
)
(SETQ len   (p2u222 88)
      OLDWZ WZTXT
      LEN1(* 0.26 4 LEN)
      ;;计算横向长度
)
(setq snap (getvar "osmode"))
(setvar "osmode" 0)    ;关闭
(IF (SETQ WZ (CADR (YY:YJCAIDAN (CADR EN) LEN LEN1 WZLST OLDWZ)));;调用菜单函数
    (YY_SubUpd (CAR EN) 1 WZ) ;;此处放回调函数
)      ; IF

      )
    )          ;END IF
)
(error_end)
(PRINC)
)          ;END DEFUN

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

wowan1314 发表于 2019-10-14 19:50:05

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



尘缘一生 发表于 2014-6-14 08:02:14

本帖最后由 尘缘一生 于 2014-6-14 08:06 编辑

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

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

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

fl202 发表于 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就不贴出来了。

lwl450 发表于 2018-2-3 20:05:37

fl202 发表于 2017-12-8 16:36
2018.2.2更新,烦请各位重新下载测试,重新下载不会反复收币。谢谢!
下载地址:
更新后的gif见下方:
...

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

lrd1861 发表于 2013-5-26 15:25:57

布局里这样了

x_s_s_1 发表于 2013-5-19 11:12:36

支持一下,看看思路,我写那个扔了好久了,没时间

海盗曹 发表于 2013-5-19 12:58:16

厉害啊厉害,学习一下~

hhhlike 发表于 2013-5-19 13:03:54

漂亮!楼主太有才了

richine001 发表于 2013-5-19 13:21:10

这个太漂亮了,用处很大

注册 发表于 2013-5-19 13:36:59

建筑的好像很少用到呢

自贡黄明儒 发表于 2013-5-19 13:59:49

还要加个错误处理,不然按ESC中断后就留在屏幕上了。对等好贴,要吹毛求疵

gzxl 发表于 2013-5-19 14:41:04

厉害啊厉害,好贴不顶对不起自己

OWEN7 发表于 2013-5-19 15:40:18

能框选就好了。选不到的时候不自动退出就好了。

13579 发表于 2013-5-19 15:48:55

楼主真的很厉害。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【函数源码分享】根据G版思路写的右键菜单函数。附实例代码。