明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 260|回复: 3

【右键菜单】函数修正

[复制链接]
发表于 2020-6-24 00:34 | 显示全部楼层 |阅读模式
本帖最后由 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))

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

以下附上自用的相关应用



本帖子中包含更多资源

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

x
发表于 2020-6-24 11:12 | 显示全部楼层
要是支持天正就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2020-7-15 16:26 , Processed in 0.280236 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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