找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 171|回复: 2

双击实体弹出对话框(重载AcDbDoubleClickEdit)

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-2-28 08:57:30 | 显示全部楼层 |阅读模式
  1. // DoubleClickEdit.h: interface for the CDoubleClickEdit class.
  2. //
  3. //
  4. //By freejsutin 2005-08-17 
  5. #include "AcDblClkEdit.h" //for dinfine AcDbDoubleClickEdit
  6. #pragma comment (lib ,"AcDblClkEditPE.lib")
  7. #include "actrans.h" //for dinfine actrTransactionManager
  8. class CDoubleClickEdit : public AcDbDoubleClickEdit 
  9. {
  10. public:
  11. CDoubleClickEdit();
  12. virtual ~CDoubleClickEdit();
  13. void finishEdit(void);
  14. void CDoubleClickEdit::startEdit(AcDbEntity *pEnt, AcGePoint3d clickpt);
  15. private:
  16. bool upgradeOpen(AcDbObject *pEnt);
  17. };
复制代码

0

主题

0

回帖

26

积分

管理员

积分
26
 楼主| 发表于 2024-2-28 08:57:55 | 显示全部楼层
DoubleClickEdit.cpp: implementation of the CDoubleClickEdit class.
  1. #include "stdafx.h"
  2. #include "autodrawing.h"
  3. #include "DoubleClickEdit.h"
  4. #include "DeviceAttribute.h"
  5. void CDoubleClickEdit::finishEdit()
  6. {
  7. }// 主要是这个函数在起作用,在这个函数里实现你想要的功能
复制代码

0

主题

0

回帖

26

积分

管理员

积分
26
 楼主| 发表于 2024-2-28 08:58:05 | 显示全部楼层
  1. void CDoubleClickEdit::startEdit(AcDbEntity *pEnt, AcGePoint3d clickpt)
  2. {
  3. // 由于要对实体进行编辑,先锁定文档
  4. AcApDocument *pDoc = acDocManager->curDocument();
  5. acDocManager->lockDocument(pDoc, AcAp::kWrite);
  6. // 判断如果传进来的实体是我的自定义实体,便进行修改操作
  7. if (pEnt->isKindOf(cascoCDeviceDrawing::desc())) 
  8. {
  9.    cascoCDeviceDrawing* pMyClass = cascoCDeviceDrawing::cast(pEnt);
  10.    // 将打开级别升级到可写方式,防止对象以只读模式打开
  11.    if( !upgradeOpen(pMyClass) ) 
  12.    {
  13.             acDocManager->unlockDocument(pDoc);
  14.     return;
  15.    }
  16.    // 创建这个对象,以便切换CAD资源
  17.    CAcModuleResourceOverride thisResource;
  18.    CDeviceAttribute Diatest(CWnd::FromHandle(adsw采用acadMainWnd()));
  19.    Diatest.DoModal();
  20.    pMyClass->close();
  21. }
  22. // 所有修改完成,解锁文档
  23. acDocManager->unlockDocument(pDoc);
  24. // 刷新显示
  25. actrTransactionManager->flushGraphics();
  26. }
  27. bool CDoubleClickEdit::upgradeOpen(AcDbObject *pEnt)
  28. {
  29. if(pEnt->upgradeOpen()!=Acad::eOk)
  30. {
  31.    acutPrintf("错误:不能打开%s实体!", pEnt->isA()->name());
  32.    return FALSE;
  33. }
  34. return TRUE;
  35. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 14:45 , Processed in 0.134229 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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