| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 778 人关注过本帖
标题:VB 对于AutuCAD的二次开发中的问题,请教高手
取消只看楼主 加入收藏
侃大川
Rank: 2
等 级:论坛游民
威 望:1
帖 子:27
专家分:22
注 册:2009-11-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
VB 对于AutuCAD的二次开发中的问题,请教高手
(引用了AutoCAD 2004 类型库)
声明了两对象变量,并在启动过程中实例化了。
Public acApp as AcadApplication  'Acad对象
Publc acDoc as AcadDocment       '文档对象

创建一个 cls 用于激活 acApp、acDoc 级事件并在事件中编程响应,操作AutoCAD多文档模式需要(单文档不需要)。
其中关键代码:
Public withevents acApp as AcadApplication  'Acad对象
Publc withevents acDoc as AcadDocment       '文档对象
在有关的事件中加入调试码测试成功。
问题:
在多文档模式下,如何保持acDoc变量的实例是位于顶层的活动文档对象
并在关闭活动文档时,下一个激活的文档是 acDoc 变量的实例?
例如:
文档窗口的状态有3种( 最大、最小、一般),如果 AutoCAD 窗口布局采用【层叠】,多文档被置于主窗口之内,
用户操作时会用鼠标点击需要的窗口,使其位于顶层,这时,代码中需要将该窗口变成为 acDoc 的实例。
如何实现,请教高手给予指点。最好有代码、中文注释。
搜索更多相关主题的帖子: AutuCAD 开发 
2010-10-22 10:51
侃大川
Rank: 2
等 级:论坛游民
威 望:1
帖 子:27
专家分:22
注 册:2009-11-12
收藏
得分:0 
谢谢2 楼的启发,试一试看看,已经试了几晚了,都没有理想的方案。
近期一次,是在VB窗体加了个鼠标点击事件,其中:
1、将vb窗体最小化(强迫AcadApplication的实例接收焦点,该实例中的激活事件中有对文档对象 acDoc 的实例化代码),
2、vb窗体恢复,并接收焦点。
这样作可行,但是繁琐(vb窗体获得焦点后,需要点击以下)。---不是最佳办法。
2010-10-23 05:10
侃大川
Rank: 2
等 级:论坛游民
威 望:1
帖 子:27
专家分:22
注 册:2009-11-12
收藏
得分:0 
问题已经解决, 测试了一周,也学到不少知识。
开始一直埋头于 acApp、acDoc 的活动、窗体改变(移动)等事件的测试。昨晚想到窗体,点击、获得与焦点等事件的测试。
今早才想到 Paint 事件,迎刃而解。

使用实例窗体 formObj 的 Paint 事件.
Public withevents acApp as AcadApplication  'Acad对象
Publc withevents acDoc as AcadDocment       '文档对象
Public WithEvents formObj as Form           '增加这一条

'声明
Public Property Set FormObj实例化(oValue as Object)
  '....    '容错代码
  Set formObj = oValue
End Property

'类模块中 formObj 的 Paint 事件响应:
Private Sub formObj_Paint()
  '....        '容错代码
  Set acDoc = acApp.活动文档          ''动态实例化 AutoCAD 的文档对象
End Sub

'调用
Set cls实例.formObj实例化 = 窗体名         ' me 也可以

主程序级 acApp 对象、文档级 acDoc 的事件分别有 23、27个,可供它用
不在讨论范畴。
2010-10-23 17:26
快速回复:VB 对于AutuCAD的二次开发中的问题,请教高手
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015757 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved