CAD动态提示

网友投稿 624 2022-10-04

CAD动态提示

CAD动态提示

1、控件具有鼠标停在一个对象上,然后自动弹出一个提示信息窗口的功能,效果如下:

COM接口

_DMxDrawXEvents::InputPointToolTipEvent

设置提示时间

_DMxDrawX::SetToolTipInitialTime

设置ToolTip自动提示隐藏时间

_DMxDrawX::SetToolTipPopTime

3、js例子说明:

(1) 增加InputPointToolTipEvent事件响应函数:

1

​document.getElementById(​​​​"MxDrawXCtrl"​​​​).ImpInputPointToolTipFun = DoInputPointToolTipFun;​

(2) 在事件中返回需要提示的字符串:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

​function​​​ ​​DoInputPointToolTipFun(ent) {​

​var​​​ ​​sHyperlinks = ent.Hyperlinks;​

​if​​​​(sHyperlinks.length != 0)​

​{​

​var​​​ ​​sClassName = ent.ObjectName;​

 

​var​​​ ​​tip = ​​​​"<b><ct=0x0000FF><al_c>"​​​​+sClassName+​

​"</b><br><ct=0x00AA00><hr=100%></ct><br><a=\"link\">"​​​ ​​+ sHyperlinks + ​​​​"</a>"​​​​;​

 

​mxOcx.SetEventRetString(tip);​

​}​

​ent = ​​​​null​​​​;​

​CollectGarbage();​

​}​

C++接口

McEdInputPointMonitor::MonitorInputPointToolTip

设置提示时间

MxDraw::SetDynToolTipInitialTime

设置ToolTip自动提示隐藏时间

MxDraw::SetDynToolTipPopTime

4、McEdInputPointMonitor::MonitorInputPointToolTip方法

(1)接口:

virtual Mcad::ErrorStatus MonitorInputPointToolTip(IN const McDbObjectIdArray& pickedEntities, IN const McGePoint3d& pickedPoint, IN CString& sNewToolTipString);

(2)参数:

参数

说明

IN const McDbObjectIdArray& pickedEntities

当前光标下面的实体

IN const McGePoint3d& pickedPoint

光标位置

IN CString& sNewToolTipString  

返回提示信息字符串  

(3)参考例子:MxDraw5.2\samples\Edit\Edit.sln中InputPointMonitor.cpp文件。代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

​Mcad::ErrorStatus CInputPointMonitor::MonitorInputPointToolTip(IN ​​​​const​​​ ​​McDbObjectIdArray& pickedEntities,​

​IN ​​​​const​​​ ​​McGePoint3d& pickedPoint,​

​IN CString& sNewToolTipString​

​)​

​{​

​if​​​​(!pickedEntities.isEmpty())​

​{​

​AcDbObjectId entId = pickedEntities[0];​

​AcDbObjectPointer<AcDbEntity> spEnt(entId,AcDb::kForRead);​

​if​​​​(spEnt.openStatus() == Acad::eOk)​

​{​

​CString sClassName = spEnt->isA()->name();​

 

​AcDbHandle handle;​

​spEnt->getAcDbHandle(handle);​

​TCHAR​​​ ​​szHandle[256];​

​handle.getIntoAsciiBuffer(szHandle);​

 

​CString sLayerName;​

​{​

​AcDbObjectPointer<AcDbLayerTableRecord> spLayerTableRec(spEnt->layerId(),AcDb::kForRead);​

​if​​​​(spLayerTableRec.openStatus() == Acad::eOk)​

​{​

​LPCTSTR​​​ ​​pszLayerName = NULL;​

​spLayerTableRec->getName(pszLayerName);​

​sLayerName = pszLayerName;​

​}​

​}​

 

​sNewToolTipString.Format(_T(​​​​"类名:%s,层名:%s,名柄:%s"​​​​),sClassName,sLayerName,szHandle);​

​}​

​}​

​return​​​ ​​Mcad::eOk;​

​}​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何从小程序反向生成 App?
下一篇:从 Flutter 开始聊聊跨平台移动开发框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~