CAD ObjectARX扩展工具的源码(二)

CAD ObjectARX扩展工具的源码(二)
  //
AcDbObjectId CDrawFunction::createtextAll(AcGePoint3d pt,char *text,AcDb::TextHorzMode hMode,AcDb::TextertMode Mode,double hight,double widthFactor,double rotation,int color,CString smallFontName,CString bigFontName,CString layerName)
{
ASSERT(text!=NULL);
AcDbText *pText=NULL;
pText=new AcDbText;
if(pText==NULL)
throw Acad::eOutOfMemory;
AcDbObjectId textId;
textId=createTextStyle(smallFontName,bigFontName,"xianlu");
pText->setTextStyle(textId);
pText->setTextString(text);
pText->setHeight(hight);
pText->setColorIndex(color);
pText->setRotation(rotation);
pText->setWidthFactor(widthFactor);
pText->setPosition(pt);
if(layerName!="")
pText->setLayer(layerName.GetBuffer(0));
addToModelSpace(textId, pText);
pText->close();
return textId;
}

//设置尺寸文本样式
oid CDrawFunction::setDimTextStyle(AcDbObjectId dimId,AcDbObjectId textStyleId,
int colorIndex,double textHeight,double textScator,
double textGap,bool align)
{
AcDbDimension *dimText;
acdbOpenObject(dimText,dimId,AcDb::kForWrite);
dimText->setDimtxsty(textStyleId); //文本字体DIMTXSTY
AcCmColor color;
color.setColorIndex(colorIndex);
dimText->setDimclrt(color);//文本颜色DIMCLRT
dimText->setDimtxt(textHeight); //文本高度DIMTXT
dimText->setDimtfac(textScator);//文本高宽比DIMTFAC
dimText->setDimgap(textGap);//文本距尺寸距离DIMGAP
dimText->setDimtoh(align);//文本标注DIMTOH
dimText->close();
}

//设置尺寸延伸线类型
Acad::ErrorStatus CDrawFunction::setextensionlineStyle(AcDbObjectId dimId,int colorIndex,double length,
double offLength,bool 1,bool 2)
{
Acad::ErrorStatus es=Acad::eOk;
AcDbDimension *dimText=NULL;
if((es=acdbOpenObject(dimText,dimId,AcDb::kForWrite))!=Acad::eOk)
return es;
AcCmColor color;
if((es=color.setColorIndex(colorIndex))!=Acad::eOk)
{
dimText->close();return es;
}
dimText->setDimclre(color);//设置颜色DIMCLRE
dimText->setDimexe(length);//设置超出长度DIMEXE
dimText->setDimexo(offLength);//尺寸偏离长度DIMEXO
dimText->setDimse1(1);//是否注第一条线DIMSE1
dimText->setDimse2(2);//是否注第二条线DIMSE2
dimText->close();
return es;
}
//绘制对齐尺寸线
AcDbObjectId CDrawFunction::drawDimension(AcGePoint3d xLine1Point,AcGePoint3d xLine2Point,
double fwj,int direction,double distance,CString dimText,CString m_cLayerName)
{

AcDbAlignedDimension *dimension=new AcDbAlignedDimension;
AcGePoint3d dimLinePoint;
// CCalcuMethod *calcu=new CCalcuMethod();
// calcu->calEndZbSelf(xLine2Point,distance*direction,fwj,dimLinePoint);
// delete calcu;calcu=NULL;
dimension->setXLine1Point(xLine1Point);
dimension->setDimLinePoint(dimLinePoint);
dimension->setXLine2Point(xLine2Point);
dimension->setDimensionText(dimText.GetBuffer(0));
dimension->setLayer(m_cLayerName.GetBuffer(0));
AcDbObjectId dimId;
addToModelSpace(dimId,dimension);
dimension->close();
return dimId;
}

Acad::ErrorStatus CDrawFunction::createLine(AcDbObjectId &lineId,AcGePoint3d startPt,AcGePoint3d endPt,int color,CString Layer,char *linetype)
{
Acad::ErrorStatus es=Acad::eOk;
ASSERT(linetype!=NULL);
AcDbLine *pLine = new AcDbLine(startPt, endPt);
if((es=pLine->setColorIndex(color))!=Acad::eOk)
{
pLine->close();return es;
}
if(Layer!="")
{
if(pLine->setLayer(Layer)==Acad::eKeyNotFound /
||pLine->setLayer(Layer)==Acad::eDeletedEntry )
{
createNewLayer(Layer);
if((es=pLine->setLayer(Layer.GetBuffer(0)))!=Acad::eOk)
{
pLine->close();return es;
}
}
}
if(linetype!=NULL)
{
AcDbObjectId lineTypeId;
if(getLinetypeIdFromString(linetype,lineTypeId))
{
if((es=pLine->setLinetype(lineTypeId))!=Acad::eOk)
{
pLine->close();return es;
}
if((es=pLine->setLinetypeScale(1))!=Acad::eOk)
{
pLine->close();return es;
}
}
}
es=addToModelSpace(lineId,pLine);
return es;
}

Acad::ErrorStatus CDrawFunction::createCircle(AcDbObjectId& circleId,AcGePoint3d center,double radius,int color,CString layer)
{
Acad::ErrorStatus es=Acad::eOk;
AcGeector3d normal(0,0,1);
AcDbCircle *circle=new AcDbCircle(center,normal,radius);
if((es=circle->setColorIndex(color))!=Acad::eOk)
{
circle->close();return es;
}
if(layer!="")
{
if(circle->setLayer(layer)==Acad::eKeyNotFound /
||circle->setLayer(layer)==Acad::eDeletedEntry )
{
createNewLayer(layer);
if((es=circle->setLayer(layer.GetBuffer(0)))!=Acad::eOk)
{
circle->close();return es;
}
}
}
es=addToModelSpace(circleId,circle);
return es;
}

Acad::ErrorStatus CDrawFunction::DrawPolyline(AcDbObjectId& polylineId, AcGePoint3dArray ptArr, int Color, double Width,bool IsClose,CString Layer,char *linetype)
{
Acad::ErrorStatus es=Acad::eOk;
AcDb2dPolyline *pNewPline;
if(IsClose)pNewPline=new AcDb2dPolyline(AcDb::k2dSimplePoly,ptArr,0,Adesk::kTrue,Width,Width);
else pNewPline=new AcDb2dPolyline(AcDb::k2dSimplePoly,ptArr,0,Adesk::kFalse,Width,Width);
if((es=pNewPline->setColorIndex(Color))!=Acad::eOk)
{
pNewPline->close();return es;
}
if(Layer!="")
{
if(pNewPline->setLayer(Layer)==Acad::eKeyNotFound /
||pNewPline->setLayer(Layer)==Acad::eDeletedEntry )
{
createNewLayer(Layer);
if((es=pNewPline->setLayer(Layer))!=Acad::eOk)
{
pNewPline->close();return es;
}
}
}
if(linetype!=NULL)
{
AcDbObjectId lineTypeId;
if(getLinetypeIdFromString(linetype,lineTypeId))
{
if((es=pNewPline->setLinetype(lineTypeId))!=Acad::eOk)
{
pNewPline->close();return es;
}
if((es=pNewPline->setLinetypeScale(1))!=Acad::eOk)
{
pNewPline->close();return es;
}
}
}
if(!pNewPline->isLinetypeGenerationOn())
{
if((es=pNewPline->setLinetypeGenerationOn())!=Acad::eOk)
{
pNewPline->close();return es;
}
}
es=addToModelSpace(polylineId,pNewPline);
return es;
}

Acad::ErrorStatus CDrawFunction::DrawSplinePolyline(AcDbObjectId& polylineId, AcGePoint3dArray ptArr, int Color, double Width,bool IsClose,CString Layer,char *linetype)
{
Acad::ErrorStatus es=Acad::eOk;
AcDb2dPolyline *pNewPline;
if(IsClose)pNewPline=new AcDb2dPolyline(AcDb::k2dQuadSplinePoly,ptArr,0,Adesk::kTrue,Width,Width);
else pNewPline=new AcDb2dPolyline(AcDb::k2dQuadSplinePoly,ptArr,0,Adesk::kFalse,Width,Width);
if((es=pNewPline->setColorIndex(Color))!=Acad::eOk)
{
pNewPline->close();return es;
}
if(Layer!="")
{
if(pNewPline->setLayer(Layer)==Acad::eKeyNotFound /
||pNewPline->setLayer(Layer)==Acad::eDeletedEntry )
{
createNewLayer(Layer);
if((es=pNewPline->setLayer(Layer))!=Acad::eOk)
{
pNewPline->close();return es;
}
}
}
if(linetype!=NULL)
{
AcDbObjectId lineTypeId;
if(getLinetypeIdFromString(linetype,lineTypeId))
{
if((es=pNewPline->setLinetype(lineTypeId))!=Acad::eOk)
{
pNewPline->close();return es;
}
if((es=pNewPline->setLinetypeScale(1))!=Acad::eOk)
{
pNewPline->close();return es;
}
}
}
if(!pNewPline->isLinetypeGenerationOn())
{
if((es=pNewPline->setLinetypeGenerationOn())!=Acad::eOk)
{
pNewPline->close();return es;
}
}
es=addToModelSpace(polylineId,pNewPline);
return es;
}
————————————————
版权声明:本文为CSDN博主「sw283632534」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sw283632534/article/details/5401646

原文地址:https://www.cnblogs.com/mjgw/p/12609682.html

时间: 2024-08-09 22:37:15

CAD ObjectARX扩展工具的源码(二)的相关文章

CAD ObjectARX扩展工具的源码(一)

CAD ObjectARX扩展工具的源码(一)收藏的CAD扩展工具的源码: Acad::ErrorStatus CDrawFunction::getAllEntity(AcDbDatabase *pDb,AcDbObjectIdArray& IdArr,const AcArray& layerNameArr){Acad::ErrorStatus es=Acad::eOk;ASSERT(pDb);if(pDb==NULL)return Acad::eInalidInput;AcDbBlock

CAD ObjectARX扩展工具的源码(三)

CAD ObjectARX扩展工具的源码(三)//得到文本边界oid CDrawFunction::getTextBoundary(AcDbObjectId objectId,double offset,AcDbObjectId &textBoundaryId){AcDbExtents Ext;AcDbEntity *pEnt;acdbOpenObject(pEnt,objectId,AcDb::kForWrite);if(pEnt->isKindOf(AcDbText::desc())){

可视化工具gephi源码探秘(二)---导入netbeans

在上篇<可视化工具gephi源码探秘(一)>中主要介绍了如何将gephi的源码导入myeclipse中遇到的一些问题,此篇接着上篇而来,主要讲解当下通过myeclipse导入gephi源码的可行性不高以及熟悉netbeans,并把原本基于netbeans平台开发的gephi源码导入进netbeans后启动正常运行的过程,其中有遇到的不少问题和相应的解决方法. 前日工作梗概(还是沿着想把源码导入myeclipse的思路): 经过从各大子模块的pom.xml中筛选出符合条件的jar包写入项目下的p

可视化工具gephi源码探秘(二)

在上篇<可视化工具gephi源码探秘(一)>中主要介绍了如何将gephi的源码导入myeclipse中遇到的一些问题,此篇接着上篇而来,主要讲解当下通过myeclipse导入gephi源码的可行性不高以及熟悉netbeans,并把原本基于netbeans平台开发的gephi源码导入进netbeans后启动正常运行的过程,其中有遇到的不少问题和相应的解决方法. 前日工作梗概(还是沿着想把源码导入myeclipse的思路): 经过从各大子模块的pom.xml中筛选出符合条件的jar包写入项目下的p

Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)

最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展,并重新打包文件,替换原有的 jar 文件,满足测试开发自身的需求. 下面以修改 eclipse 默认注释中的 ${date} 和 ${time} 对应的返回样式(如下图所示),进行实例说明. 整个二次开发的过程如下所示: 0.未修改之前,生成注释的日期.时间显示格式如下所示: 1.获取对应的 jar

[软件测试]网站压测工具Webbench源码分析

一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench使用C语言编写,下面是其下载链接: http://home.tiscali.cz/~cz210552/webbench.html 说到这里,我赶脚非常有必要给这个网站局部一个截图,如下图: 第一次看到这张图片,着实吃了一精!居然是2004年最后一次更新,我和我的小伙伴们都惊呆了.不过既然现在大家还都

一款生活辅助工具应用源码完整版

这个源码是一款生活辅助工具应用源码完整版,应用集 是一款生活辅助工具,主要有三大功能 (1)易闹钟:用户可以设定一个时间段以及响铃时间,设定个性铃声,设定响铃周期,可以当做早起闹钟,也可以当做备忘提醒: (2)易扫码:可以扫描二维码和条形码,点击之后可以跳转到地址详情: (3)易管理:SD卡管理工具,可以实现增删改移等功能 源码下载: http://code.662p.com/view/9596.html <ignore_js_op> 2_副本 - 副本.png (19.79 KB, 下载次数

深入java并发包源码(二)AQS的介绍与使用

深入java并发包源码(一)简介 深入java并发包源码(二)AQS的介绍与使用 深入java并发包源码(三)AQS独占方法源码分析 AQS 本文章会讲解 AQS 的使用方法,然后通过 DEBUG 跟踪 AQS 执行的一系列操作来分析源码,读者跟着文章 DEBUG 跟踪源码能更容易理解. AQS 是什么? AbstractQueuedSynchronizer 队列同步器(AQS)是一个抽象类,作为并发工具的基础组件,为真正的实现类提供基础设施.并发工具是面向使用者的,AQS 面向的是并发工具的实

用Diff和Patch工具维护源码

在Unix系统下,维护源码版本可以使用很多方法,其中最常用的当然是大名鼎鼎的CVS,但实际上,简单的版本维护工作并没有必要使用复杂的CVS等专门的版本维护工具,Unix标配中的diff和patch工具就完全可以完成代码的简单备份和升级工作. diff以"行"为单位比较两个文本文件(也可以是目录比较),并将不同之处以某种格式输出到标准输出上:patch可以读入这种输出,并按照一定指令使源文件(目录)按照目标文件(目录)更新.Linux内核源码就是按照这种方式保持更新的,我们在www.ke