获取块中文字

CString Dialog::GetTextForBlock(AcDbBlockReference *pRef, AcGePoint3d pickPoint)
{
AcDbEntity *pEnt;
CString str=_T("");
AcDbVoidPtrArray ptarr = NULL;
Acad::ErrorStatus es=pRef->explode(ptarr);
int iLen = ptarr.length();
for (int i = 0; i < iLen;i++)
{
pEnt = static_cast<AcDbEntity*>(ptarr[i]);
AcDbExtents ext;
pEnt->getGeomExtents(ext);
auto minPt = AcadUtils::ConvertTo2D(ext.minPoint());
auto maxPt = AcadUtils::ConvertTo2D(ext.maxPoint());
AcGePoint2dArray pts;
pts.append(minPt);
pts.append(AcGePoint2d(minPt.x, maxPt.y));
pts.append(maxPt);
pts.append(AcGePoint2d(maxPt.x, minPt.y));
if (XFuntion().PtInRegionInXYPlate(pickPoint, pts) && XFuntion().PtInRegionInXYPlate(pickPoint, pts))//命中了包围框
{
if (pEnt->isKindOf(AcDbText::desc()))
{
AcDbText *pText = NULL;
pText = AcDbText::cast(pEnt);
str = pText->textString();
pText->close();
return str;
}
if (pEnt->isKindOf(AcDbMText::desc()))
{
AcDbMText *pmText = NULL;
pmText = AcDbMText::cast(pEnt);
str = pmText->contents();
pmText->close();
return str;
}
if (pEnt->isKindOf(AcDbBlockReference::desc()))
{
AcDbBlockReference *pRef = AcDbBlockReference::cast(pEnt);
str=GetTextForBlock(pRef, pickPoint);
pRef->close();
}
}
pEnt->close();
}
return str;
}

时间: 2024-10-14 16:23:56

获取块中文字的相关文章

CAD.NET调整属性块中文字宽度

using System;using Autodesk.AutoCAD.ApplicationServices;using Autodesk.AutoCAD.DatabaseServices;using Autodesk.AutoCAD.EditorInput;using Autodesk.AutoCAD.Geometry;using Autodesk.AutoCAD.Runtime; [assembly: CommandClass(typeof(AttributeWidthFactor.MyC

iOS开发之获取一段字符串中的中文字和中文字符

#pragma mark -获取一段字符串中的中文字 + (NSArray *)getAStringOfChineseWord:(NSString *)string { if (string == nil || [string isEqual:@""]) { return nil; } NSMutableArray *arr = [[NSMutableArray alloc]init]; for (int i=0; i<[string length]; i++) { int a

获取系统中已经安装的文字输入法

//获取系统中已经安装的文字输入法 InputLanguageCollection MyInputs = InputLanguage.InstalledInputLanguages; //获取当前输入法信息 InputLanguage CurrentInput = InputLanguage.CurrentInputLanguage; string language = CurrentInput.LayoutName; IntPtr pt = new IntPtr(134481924); for

根据类型获取枚举中的文字

比如数据库里存的是数字,从枚举中获取相应的文字描述 公共方法 public static string GetEnumDesc<T>(T Enumtype) { if (Enumtype == null) throw new ArgumentNullException("Enumtype"); if (!Enumtype.GetType().IsEnum) throw new Exception("参数类型不正确"); return ((Descript

javaScript 实现倒计时 + 获取网页中的文字

一.倒计时 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>文档标题</title> </head> <body> <p id="demo"></p> <script> // Set the date we're counting down to var count

【CSS】 元素块与文字的各种居中解决方案

元素块的居中 首先有这样一个200*200px的元素块在界面内. 元素块的水平居中: 如果想要让其水平居中,则有三种方法: 第一种是知道屏幕的长宽,则根据计算,(屏幕宽X-元素块宽Y)/ 2的结果是元素块向右偏移的长度,不过这种方法很蠢笨,通过外边距调整元素的位置只有在调整元素间的间距时才有作用: 至于第二种,就很合适了,我们不必知道屏幕的宽度,只需要设置外边距: .box { width: 200px; height: 200px; background: #333; margin-left:

[转]java 为什么wait(),notify(),notifyAll()必须在同步方法/代码块中调用?

在 Java中,所有对象都能够被作为"监视器monitor"——指一个拥有一个独占锁,一个入口队列和一个等待队列的实体entity. 所有对象的非同步 方法都能够在任意时刻被任意线程调用,此时不需要考虑加锁的问题. 而对于对象的同步方法来说,在任意时刻有且仅有一个拥有该对象独占锁的线程能够调用它们.例如,一个同步方法是独占的.如果在线程调用某一对象的同步方法时,对象的独占锁被其他线程拥有,那么当前线程将处于阻塞状态,并添加到对象的入口队列中. 只有在调用线程拥有某个对象的独占锁时,才能

【Java面试题】22 JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?

throws是获取异常throw是抛出异常try是将会发生异常的语句括起来,从而进行异常的处理,catch是如果有异常就会执行他里面的语句,而finally不论是否有异常都会进行执行的语句. throw和throws的详细区别如下: throw是语句抛出一个异常.语法:throw (异常对象);         throw e; throws是方法可能抛出异常的声明.(用在声明方法时,表示该方法可能要抛出异常)语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]

通过LINQ和窗口来选择块参照,并且获取块的说明

/// <summary> /// 获取窗口中块说明 /// </summary> /// <param name="db">数据库对象</param> /// <param name="pt1">窗口选择角点1</param> /// <param name="pt2">窗口选择角点2</param> /// <returns></