这是提供给许多从lisp转移到c#的开发人员的一个函数,这个函数利用后绑代码实现undo返回操作.

这两段代码实现效果一样,只是一个调用了com,一个调用vba.

com接口

    public static class Com
{
#if AC2006 || AC2007 || AC2008 || AC2009 || AC2010 || AC2011 || AC2012 public static AcadDocument Adm { get; } = Application.DocumentManager.MdiActiveDocument.AcadDocument as AcadDocument;
#endif #if !HC2020
public static AcadApplication App { get; } = Application.AcadApplication as AcadApplication;
#else
public static GcadApplication App { get; } = Application.AcadApplication as GcadApplication;
#endif
}

com的undo方法:

        /// <summary>
/// 命令动作编组 调用Com方法
/// </summary>
/// <param name="flag">true为开始编组,false为结束编组</param>
public static void Undo(bool flag)
{
// kean谈论到undo撤回的操作
// https://www.keanw.com/2008/09/more-quiet-comm.html
string undoCtl = Getvar("UNDOCTL");
if (flag)
{
if (undoCtl == "") //存在活动编组
{
Com.Adm.EndUndoMark();
}
Com.Adm.StartUndoMark();
}
else
{
Com.Adm.EndUndoMark();
}
}

代码是根据VBA手册中调用VBA函数来实现的,而浩辰因为VBA缺失,所以无法使用本函数,应该可以通过发送undo命令来实现?? (20190926留)

本代码由edata提供: edata博客

        /// <summary>
/// 命令动作编组 调用VBA方法
/// </summary>
/// <param name="flag">true为开始编组,false为结束编组</param>
public static void UndoVBA(bool flag)
{
//获取CAD程序
object cadApplication = Application.AcadApplication;
//通过反射,获取CAD程序中的所有对象
Type cadType = cadApplication.GetType();
//在所有的对象中.调用成员(对象名字"ActiveDocument",调用属性,返回这个属性的值,粘合剂null,目标程序,附带参数null)
object cadActiveDocument = cadType.InvokeMember("ActiveDocument", BindingFlags.GetProperty, null, cadApplication, null);
Type dcoType = cadActiveDocument.GetType();
//增加动作编组
string undoCtl = Getvar("UNDOCTL");
if (flag)
{
if (undoCtl == "") //存在活动编组
{
dcoType.InvokeMember("EndUndoMark", BindingFlags.InvokeMethod, null, cadActiveDocument, null);
}
dcoType.InvokeMember("StartUndoMark", BindingFlags.InvokeMethod, null, cadActiveDocument, null);
}
else
{
dcoType.InvokeMember("EndUndoMark", BindingFlags.InvokeMethod, null, cadActiveDocument, null);
}
}

最新文章

  1. javascrip for 循环数组事件绑定
  2. WebSocket in ASP.NET Core
  3. 在CMMI推广过程中EPG常犯的错误(转)
  4. 深入分析:Fragment与Activity交互的几种方式(三,使用接口)
  5. MyBatis(3.2.3) - Configuring MyBatis using XML, Mappers
  6. Specular light 计算
  7. 分布式存储Ceph的几种安装方法,源码,apt-get,deploy工具,Ubuntu CentOS
  8. bzoj2705
  9. iOS:删除小程序
  10. Unix/Linux僵尸进程
  11. java.io.File类操作
  12. Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员、后台管理员同时登录
  13. pymysql.err.ProgrammingError: 1064 (Python字符串转义问题)
  14. MySQL学习13 - 索引
  15. chrome 安装setupvpn 解决chorme未能成功加载扩展程序的问题
  16. 阅读:ECMAScript 6 入门(4)
  17. spring boot + embed tomcat + standalone jar的内存泄露问题
  18. pycharm最常用的快捷键总结
  19. iOS 开发 需要的版本管理工具,UI图,bug管理工具等
  20. testng生成报告ReportNG美化测试报告

热门文章

  1. New users can not log on Win8
  2. IDEA导入MySQL包
  3. Echarts的使用方法
  4. springboot xml声明式事务管理方案
  5. 6. Uniforms in American&#39;s Eyes 美国人眼里的制服
  6. 2.Early Education of Children 儿童的早期教育
  7. shell知识积累
  8. 以太坊虚拟机(EVM)
  9. int -2147483648 ----- 2147483647
  10. WordPaster-HDwik5.0整合教程