找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 966|回复: 1

[讨论]:关于程序启动是关闭命令行对话框

[复制链接]
发表于 2006-1-25 15:26:15 | 显示全部楼层 |阅读模式

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

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

×
有两个问题需要解决:
1.关闭命令行对话框

  1.   [FONT=courier new]
  2.                 CWnd *pWnd = acedGetAcadDockCmdLine();
  3.                 if(pWnd)
  4.                 {
  5.                         pWnd = pWnd->GetParent();
  6.                         if(pWnd)
  7.                         {
  8.                                 pWnd = pWnd->GetParent();
  9.                                 if(pWnd)
  10.                                 {
  11.                                         pWnd->ModifyStyle(0,WS_VISIBLE|WS_OVERLAPPED);
  12.                                         pWnd->ShowWindow(SW_HIDE);
  13.                                         pWnd->RedrawWindow();
  14.                                         acedGetAcadFrame()->RecalcLayout();
  15.                                 }
  16.                         }
  17.                 }
  18.   [/FONT]
复制代码


已经解决。

2.程序启动时起作用
最初以为直接在On_kInitAppMsg消息中运行上述代码即可,事实上不起作用,感觉关闭之后又显示出来了。(另外如果要在On_kInitAppMsg消息中控制视图zoom-e也不可以,控制视图代码如下)

  1.   [FONT=courier new]
  2. void CGlobalFuns::zoomExt()
  3. {
  4.         // get the extents of the drawing
  5.         AcDbViewTableRecord view;
  6.         AcGePoint3d max =
  7.                 acdbHostApplicationServices()->workingDatabase()->extmax(),
  8.                 min = acdbHostApplicationServices()->workingDatabase()->extmin();

  9.         AcGePoint2d max_2d (max[X], max[Y]);
  10.         AcGePoint2d min_2d (min[X], min[Y]);
  11.         // now set the view centre point
  12.         view.setCenterPoint (min_2d + (max_2d - min_2d) / 2.0);
  13.         // now height and width of view
  14.         view.setHeight(max_2d[Y] - min_2d[Y]);
  15.         view.setWidth (max_2d[X] - min_2d[X]);
  16.         // set the view
  17.         acedSetCurrentView (&view, NULL);
  18.         // updates the extents
  19.         acdbHostApplicationServices()->workingDatabase()->updateExt(TRUE);
  20. }
  21.   [/FONT]
复制代码


于是只好用autocad2004doc.lsp实现,发现也不尽如人意,讨论一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-2-6 20:20:39 | 显示全部楼层
想问下,楼主所说的 程序启动时起作用 的具体情况是什么?是启动CAD时加载的ARX起作用,还是CAD启动完毕后加载的ARX起作用?
如果是CAD启动完毕后加载ARX,在kInitAppMsg里可以执行ZOOME的命令:
extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg,void *appId)
{
   switch(msg){
    case AcRx::kInitAppMsg:
       InitializeApp();
       break;
    //......
   }
   return AcRx::kRetOK;
}

void InitializeApp(void)
{
   //....
   acedCommand(RTSTR,"ZOOM",RTSTR,"E",RTNONE);
}

对于命令行,可能是加载的先后顺序有关,CAD会执行commandline这个命令来显示命令行,你可以在加载的程序里加一句提示,看是否是在该命令前就加载了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-17 03:09 , Processed in 0.358951 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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