问题描述:

在中望CAD中开发.NET程序中经常会有循环打开dwg并且激活为当前图纸,然后做一些事情后关闭dwg再打开新的dwg的操作,此时会遇到一些异常行为,如调试的过程中代码异常卡在某个地方,需要手动关闭dwg才能继续执行等问题,该如何解决?


解决方案:

这种情况多半是异步操作出问题,可以尝试在命令注册的时候加上CommandFlags.Session标识:

[DllImport("zwcad.exe", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl, EntryPoint = "zcedCmd")]
private static extern int zcedCmd(IntPtr vlist);
[CommandMethod("HelloCS2", CommandFlags.Session)]
static public void HelloCS2()
{
	Database db = HostApplicationServices.WorkingDatabase;
	Document doc = Application.DocumentManager.GetDocument(db);
	ZwSoft.ZwCAD.EditorInput.Editor ed = doc.Editor;
	var Paths = new List
	{
	@"C:\test1.dwg",
	@"C:\test3.dwg",
	@"C:\test2.dwg"
	};

	foreach (var path in Paths)
	{
		var materfile = Application.DocumentManager.Open(path, false);
		Application.DocumentManager.MdiActiveDocument = materfile;
		ResultBuffer rb = new ResultBuffer();
		rb.Add(new TypedValue(5005, "zoom"));
		rb.Add(new TypedValue(5005, "e"));

		int test = zcedCmd(rb.UnmanagedObject);
		Application.DocumentManager.MdiActiveDocument.CloseAndDiscard();
	}
}


英文空间链接

★在使用中望CAD的.NET接口遍历当前打开的所有图纸时,出现阻塞的现象,如何解决?https://confluence.zwcad.com/pages/viewpage.action?pageId=284952219
  • No labels