找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1919|回复: 6

[求助] 重载AREA命令,如何动态实现选择区域的透明度问题

[复制链接]
发表于 2017-6-21 17:16:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
运用中 做个计算面积导入 文字中的命令,可以节省些画图时间
原来想法
1.   直接调用AREA 命令,

2.  执行完毕后getvar 得到 系统变量 面积的值
3.  导入 单行文字的某特定字节·
后发现 area执行 和  getvar 不在同一个线程,无法顺序执行, 想重写个AREA,但没法同 CAD自身命令,动态显示 选择区域的绿色透明区域可视化。


求助高人指点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-6-21 17:36:16 | 显示全部楼层
你既然用ARX写,就别用COMMAND了,没办法的时候才用ACAD提供的命令。 你这个算面积,写文字,完全可以用ARX的对象的方法去解决。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-6-21 17:37:47 | 显示全部楼层
本帖最后由 newer 于 2017-6-21 17:42 编辑

另外,怎么不在同一个线程了? 把你写的完整的代码贴上来吧。是代码的问题,代码可以解决。
还有,你用的ACAD什么版本?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-21 18:09:50 | 显示全部楼层
本帖最后由 love2002bj 于 2017-6-21 18:11 编辑


1.png 翻了张帆老师的书,找到原因。无法正确得到变量值,执行顺序问题·
static void hades_liangDockControlBar001zzz(void)
        {INT return_cmd;
      return_cmd=acedCommand(RTSTR,_T("area"),RTSTR,PAUSE,RTNONE);
     resbuf rbVar;
       if (RTNORM==return_cmd)
                acedGetVar(_T("area"),&rbVar);
                 acutPrintf(_T("area is %f"),rbVar.resval.rreal);
          }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-6-21 18:55:15 | 显示全部楼层

给你段LISP,你改成ARX

(command "area")
(while (= 1 (getvar "cmdactive"))
   (command "pause")
)
这样,就能保证你AREA命令不结束,就一直执行循环,不会执行下面的语句。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2017-6-21 22:28:13 来自手机 | 显示全部楼层
csharp在C#发过一个选择区域变色
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-3 18:04:37 | 显示全部楼层
感谢 newer  st788796 ,问题已经解决。

根据提供的思路,卡在  getvar "cmdactive"的方法在ARX 里用不了,后来监测cmdactive在 函数全程都是1,判断在 ARX的命令里,cmdactive 也识别 为透明命令执行。
后来借鉴while思路,用 WINDOWS回调函数钩子。 判断键盘输入ESC 或者空格识别 。
贴上部分代码

   acedCommand(RTSTR,_T("area"),RTNONE);        //调用AREA 命令
procOld=(WNDPROC)::SetWindowLongPtr(acedGetAcadDwgView()->GetSafeHwnd(),GWLP_WNDPROC, (INT_PTR)NewAcadWndProc);   //设置钩子,检测空格命令,
   lxl_area__mark=true;
   LXL_ESC=true;
        while(lxl_area__mark==true&&LXL_ESC==true)
         {
               acedCommand(RTSTR,PAUSE,RTNONE); //如果未按下空格键或ESC,循环不跳出
        }


LONG_PTR CALLBACK NewAcadWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{  
        switch(iMsg)
        {
        /*0000 case WM_MOUSEMOVE:
                //lParam = MAKELPARAM(200,200);//禁止移动光标
                break;
        case WM_LBUTTONDOWN:
                AfxMessageBox(_T("WM_LBUTTONDOWN"));//响应鼠标左键
                break;
        case WM_MOUSEWHEEL:
                AfxMessageBox(_T("WM_MOUSEWHEEL"));//响应鼠标滚动
                break;  0000*/
        case WM_KEYDOWN:       
                switch (wParam)
                { case VK_ESCAPE:                 
                LXL_ESC=false;      //如果ESC响应,变量赋值FALSE
           case VK_SPACE:                 
                   lxl_area__mark=false;   //如果空格键响应,变量赋值FALSE
                }
                break;
        default:
                break;
        }
        SetLastError(0);
        return ::CallWindowProc(procOld, hwnd, iMsg, wParam, lParam);
       
               
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-20 10:43 , Processed in 0.190705 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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