1028695446 发表于 2020-6-24 00:34:54

【右键菜单】函数修正

本帖最后由 1028695446 于 2020-6-24 01:19 编辑

原贴地址,请移步至:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=101509&extra=page%3D1%26filter%3Dtypeid%26typeid%3D14&page=1


本次主要对该 “右键菜单函数“ 做个补充完善:
问题描述:在布局中图纸空间中使用该右键菜单函数,临时生成的菜单,只显示列表框和背景遮罩,但是不显示文字
原因分析:使用 vla-addtext 函数,始终使用的是模型空间,所以在 布局中的图纸空间 使用该右键菜单函数,生成的临时文字在模型空间中,并不在图纸空间中
解决思路:增加个简单的判断:当前是否在布局中图纸空间

注:以下代码,为了顺带解释下 "tilemode"和"CVPORT"2个参数的组合表达的情况,所以判断看起来比较冗杂
...
(if (not *YH_doc*)(setq *YH_doc* (vla-get-activedocument (vlax-get-acad-object))));获取当前图档指针               
(setq a (=(getvar "tilemode")0) );;模型1,布局0               
(setq b (=(getvar "CVPORT")1));;图纸空间1               
(cond
      ((and a b);布局中的图纸空间
                (setq YH_spc (vla-get-PaperSpace *YH_doc*))
      )
      ((and a (not b));布局中的模型空间
                (setq YH_spc (vla-get-modelspace *YH_doc*))
      )
      ((and (not a) (not b));模型空间
                (setq YH_spc (vla-get-modelspace *YH_doc*))
      )      
)
(setq YH_text (vla-addtext YH_spc WZ (vlax-3d-point WPT) WZhigh))

...


简化下就是
...
(if (not *YH_doc*)(setq *YH_doc* (vla-get-activedocument (vlax-get-acad-object))));获取当前图档指针               
(if (and
      (zerop (getvar "tilemode"))
      (=(getvar "CVPORT")1)
    )
      (setq YH_spc (vla-get-PaperSpace *YH_doc*))
      (setq YH_spc (vla-get-modelspace *YH_doc*))                        
)      

(setq YH_text (vla-addtext YH_spc WZ (vlax-3d-point WPT) WZhigh))

...
请自行去原贴页面下载源码,自行搜索替换相关内容

以下附上自用的相关应用



lrd1861 发表于 2020-6-24 10:21:55

这是小号

fxlt619 发表于 2020-6-24 11:06:01

太厉害了!

fxlt619 发表于 2020-6-24 11:12:11

要是支持天正就好了

vladimir 发表于 2020-12-6 18:57:13

不能用啊,楼主

p-3-ianlcc 发表于 2020-12-10 16:56:07

不錯用,很棒!
謝謝分享!

200853006 发表于 2020-12-15 20:58:02

谢谢分享!

wgij007 发表于 2021-3-27 22:06:39

能不能搞成3行吗,2行内容多就不够看.

alexmai 发表于 2021-6-9 21:22:16

好用,能增加功能,支持属性块文字修改,就完美了

meja 发表于 2021-8-12 21:24:54

这个使用起来相当方便啊,取代词库!
页: [1] 2
查看完整版本: 【右键菜单】函数修正