转:实体ToolTip显示XData
首先要说明,实现方式不是我的原创,其中ToolTip的实现转自这里,然后XData的设置和获取来自Kean的博客,当然我自己也做了点研究,在这里,然后把这两个技术结合起来就是你将要看到的东西。
先上效果吧。

下面是实现的代码:
|
public class Class1:IExtensionApplication { void IExtensionApplication.Initialize() { Mytooltip(); } void IExtensionApplication.Terminate() { } public void Mytooltip() { Document doc =Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; ed.PointMonitor += newPointMonitorEventHandler(MytooltipOn); } private void MytooltipOn(object sender,PointMonitorEventArgs e) { Database db =Application.DocumentManager.MdiActiveDocument.Database; FullSubentityPath[] ePaths = e.Context.GetPickedEntities(); if (ePaths.Length > 0) { FullSubentityPath ePath = ePaths[0]; using (Transaction trans = db.TransactionManager.StartTransaction()) { ObjectId entId = ePath.GetObjectIds()[0]; Entity ent = (Entity)trans.GetObject(entId,OpenMode.ForRead); e.AppendToolTipText(GetXData(ent)); trans.Commit(); } } else { e.AppendToolTipText("\n未指向实体"); } } static public string GetXData(Entity ent) { string ret = ""; Document doc =Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; ResultBuffer rb = ent.XData; if (rb == null) return "该实体不包含XData."; else { int n = 0; foreach (TypedValue tv in rb) { ret += string.Format("类型值{0} - 类型: {1},值: {2}\n", n, tv.TypeCode, tv.Value); n++; } rb.Dispose(); return ret; } } [CommandMethod("SetXD")] static public void SetXData() { Document doc =Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; PromptEntityOptions peo = newPromptEntityOptions("\n请选择实体:"); PromptEntityResult per = ed.GetEntity(peo); if (per.Status == PromptStatus.OK) { Transaction trans = doc.TransactionManager.StartTransaction(); DBObject obj = trans.GetObject(per.ObjectId,OpenMode.ForWrite); AddRegAppTableRecord("Test"); ResultBuffer rb = new ResultBuffer(); rb.Add(new TypedValue(1001, "Test")); rb.Add(new TypedValue(1000, "Greeting! I am the XData")); rb.Add(new TypedValue(1000, "Today is very Cold")); obj.XData = rb; rb.Dispose(); trans.Commit(); trans.Dispose(); } } static void AddRegAppTableRecord(string regAppName) { Document doc =Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; Database db = doc.Database; Transaction trans = doc.TransactionManager.StartTransaction(); RegAppTable rat = (RegAppTable)trans.GetObject(db.RegAppTableId,OpenMode.ForRead, false); if (!rat.Has(regAppName)) { rat.UpgradeOpen(); RegAppTableRecord ratr = newRegAppTableRecord(); ratr.Name = regAppName; rat.Add(ratr); trans.AddNewlyCreatedDBObject(ratr, true); } trans.Commit(); trans.Dispose(); } } |
命令SetXD用于设置XData,不然新建的实体是不包含XData的。指向一个实体后,将会自动显示该实体的XData
原文地址:http://blog.csdn.net/gisoracle/article/details/7276782
转:实体ToolTip显示XData的更多相关文章
- [WPF]TextTrimming截断后,ToolTip显示完整信息
文本过长被截断后,用ToolTip显示完整信息. 文本未被截断,则不显示ToolTip. 值转换器: public class TrimmedTextBlockVisibilityConverter ...
- echarts之字符云tooltip显示混乱问题的解决办法
echarts字符云中tooltip显示混乱主要表现为一下两点: 1.字体与其显示框内容不对应鼠标识别错误 解决思路: 就是option里的数据要对value降序排序(这一点很关键,是必须的一步) 把 ...
- ECharts图表tooltip显示时超出canvas图层解决方法
我们在做ECharts图表的时候可能会遇到tooltip显示时超出了canvas图层范围,并且被其它z-index较高的div容器遮盖,这是悬浮展示信息就看不全,我们根据官网文档的配置项查询发现con ...
- Echarts 的悬浮框tooltip显示自定义格式化
最近做的项目用到echarts雷达图,但是由于地市过多,遇到悬浮框显示问题被遮住 如图: 可以看到上面从兴安开始数据就被遮住了 为了解决这个被遮住的悬浮框,达到tooltip自定义格式 完成后的效果如 ...
- 使用tooltip显示jquery.validate.unobtrusive验证信息
通过重写CSS实现使用tooltip显示jquery.validate.unobtrusive验证信息,效果如图: 1. 在ViewModel中定义验证规则 [Display(Name = " ...
- 用WPF实现在ListView中的鼠标悬停Tooltip显示
原文:用WPF实现在ListView中的鼠标悬停Tooltip显示 一.具体需求描述 在WPF下实现,当鼠标悬停在ListView中的某一元素的时候能弹出一个ToolTip以显示需要的信息. 二.代码 ...
- bootstrap tooltip 显示提示信息
参照网上文档,是这样说的, <a data-toggle="tooltip" data-placement="top" title="这是要提示 ...
- Swing图层的应用——实现tooltip显示
没有错是世纪前的swing. 在使用Swing的时候有个问题一直没有解决,就是Swing自带的tooltip不会跟随鼠标进行移动,而且移动到边界就会遮挡的问题.JCompoent有个createToo ...
- echarts2.0tooltip边框限制导致tooltip显示不全解决办法
1.显示常数位置x和y; 2.根据鼠标移动显示:tooltip : { trigger: 'axis', position:function(p){ //其中p为当前鼠标的位置 return [p[0 ...
随机推荐
- ClassRequestHandler or VendorRequestHandler wIndex must be less than NumIFs
P1_ro:20000EEA ClassRequestHandler ; CODE XREF: USB__HandleSetup+38j P1_ro:20000EEA LDRB R0, [R4,#4] ...
- jQuery性能优化的28个建议
我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来.我也做了一个jQuery性能优化的简明样式表,你可 ...
- MySQL中进行树状所有子节点的查询
在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点.但很遗憾,在MySQL的目前版本中还没有对应的功能. ...
- Java学习笔记之方法重载,动态方法调度和抽象类
一.方法重载 如果子类中的方法与它的超类中的方法有相同的方法名,则称子类中的方法重载超类中的方法,特别是当超类和子类中的方法名和参数类型都相同时,在子类中调用该方法时,超类中的方法会被隐藏.考虑下面程 ...
- Codeforces Round #306 (Div. 2) D. Regular Bridge 构造
D. Regular Bridge Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/550/pro ...
- hdu 4597 Play Game 区间dp
Play Game Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=459 ...
- C#操作XML的完整例子——XmlDocument篇
这是一个用c#控制台程序下, 用XmlDocument 进行XML操作的的例子,包含了查询.增加.修改.删除.保存的基本操作.较完整的描述了一个XML的整个操作流程.适合刚入门.net XML操作的 ...
- C++ 内存泄露处理方法 (转)
1.可以显示内存泄露情况,但无法找到具体的文件位置写法 包含头文件#include <crtdbg.h> 然后在需要检测内存泄露的位置加上语句 _CrtDumpMemoryLeaks(); ...
- INDY idhttp Post用法
http://www.cnblogs.com/tk-del/archive/2013/05/10/3071541.html function Post(AURL: string; ASource: T ...
- iOS 原生地图(MapKit、MKMapView)轨迹渐变
WechatIMG2.png 项目已接入高德地图,并且大部分功能已经实现好,但BOSS觉得iOS自带的地图效果更好...本着面向老板编程的思想,换之.还好,高德地图是在MapKit上封装的,大部分ap ...