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