用未公开的函数acedSetDynInputDisplayMessage来实现动态显示

翻译 2013年12月04日 00:30:14

原文见:http://forums.autodesk.com/t5/NET/Dynamic-Input/td-p/1339772

目前AutoCAD未公开实现Dynamic Input的API,要实现和AutoCAD同样的效果,可以使用一个未公开的函数acedSetDynInputDisplayMessage

以下是C#代码:

using System;
using System.Text;

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.DatabaseServices;

using System.Threading;
using System.Globalization;
using System.Runtime.InteropServices;

#endregion

namespace RSNNAcadApp.Test
{
public class Test
{
//this is an undocumented api exported from acad.exe. Use it at your 
own risk.
//
// Setting this flag tells AutoCAD to display the last string output 
to the command line
//in the Dynamic Input prompt window (one time only.)
[DllImport("acad.exe", 
EntryPoint="?acedSetDynInputDisplayMessage@@YA_N_N​@Z")]
private static extern bool acedSetDynInputDisplayMessage(bool 
displayMessageOnce);

private double m_dist; //last distance chosen (per-document)
private bool m_firstTime = true; //first invocation of "test"? 
(per-document)
//use a non-static command method so the enclosing class (Test) will 
be instantiated
//for each document
[CommandMethod("test")]
public void DoIt()
{
Editor ed = 
Application.DocumentManager.MdiActiveDocument.Edit​or;
PromptDistanceOptions opt1 = new PromptDistanceOptions("Abstand 
zeigen");

opt1.AllowNegative = false;
opt1.AllowZero = false;
opt1.AllowNone = false;
opt1.UseDashedLine = true;
if (!m_firstTime)
opt1.DefaultValue = m_dist;


PromptDoubleResult res = ed.GetDistance(opt1);

if (res.Status == PromptStatus.OK)
{
m_dist = res.Value;
ed.WriteMessage(String.Format("Abstand = {0}", 
m_dist.ToString()));
acedSetDynInputDisplayMessage(true);
}
m_firstTime = false;
}
void MyPointFilter(object sender, PointFilterEventArgs e)
{
e.Result.ToolTipText = String.Format("Abstand = {0}", 
m_dist.ToString());
}
}
}


相关文章推荐

用.NET的面板来显示多个AutoCAD实体的属性

原文:Using a palette from .NET to display properties of multiple AutoCAD objects 本文仅翻译部分内容 在这篇文章中我们将换掉...

AutoCAD.NET自动加载自己开发的程序集dll

自动加载.NET开发的DLL程序库需要修改注册表信息HKEY LOCAL_ MACHINE下的AutoCAD相应版木卜的Application 项卜创建一个新项里而设以卜四个个键值: "DESCR...

AutoCAD .NET API基础(一) AutoCAD 对象层次结构(3)

3、The Database Object   Database对象The Database object contains all of the graphical and most of the ...

CListCtrlEx:一个支持文件拖放和实时监视的列表控件——用未公开API函数实现Shell实时监视

一、需求无论何时,当你在Explorer窗口中创建、删除或重命名一个文件夹/文件,或者插入拔除移动存储器时,Windows总是能非常快速地更新它所有的视图。有时候我们的程序中也需要这样的功能,以便当用...

CListCtrlEx:一个支持文件拖放和实时监视的列表控件——用未公开API函数实现Shell实时监视

一、需求无论何时,当你在Explorer窗口中创建、删除或重命名一个文件夹/文件,或者插入拔除移动存储器时,Windows总是能非常快速地更新它所有的视图。有时候我们的程序中也需要这样的功能,以便当用...
  • WINCOL
  • WINCOL
  • 2011-03-08 16:11
  • 2537

利用微软未公开的WindowsAPI函数关闭或注销或重新启动计算机

众所周知,微软公开的用来关闭、注销、重新启动计算机的API是ExitWindowsEx。在Windows95/98下,可直接用ExitWindowsEx,即可正确关闭、注销、重新启动计算机;因Wind...

windows未公开函数NhGetInterfaceNameFromDeviceGuid分析

windows未公开函数NhGetInterfaceNameFromDeviceGuid分析 IPHLPAPI.dll中导出了函数NhGetInterfaceNameFromDeviceGuid,其...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)