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

2024-02-29 06:48

本文主要是介绍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;
}

这篇关于CAD ObjectARX扩展工具的源码(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/757910

相关文章

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

Python使用Turtle实现精确计时工具

《Python使用Turtle实现精确计时工具》这篇文章主要为大家详细介绍了Python如何使用Turtle实现精确计时工具,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录功能特点使用方法程序架构设计代码详解窗口和画笔创建时间和状态显示更新计时器控制逻辑计时器重置功能事件

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

MySQL Workbench工具导出导入数据库方式

《MySQLWorkbench工具导出导入数据库方式》:本文主要介绍MySQLWorkbench工具导出导入数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录mysql Workbench工具导出导入数据库第一步 www.chinasem.cn数据库导出第二步

Spring Validation中9个数据校验工具使用指南

《SpringValidation中9个数据校验工具使用指南》SpringValidation作为Spring生态系统的重要组成部分,提供了一套强大而灵活的数据校验机制,本文给大家介绍了Spring... 目录1. Bean Validation基础注解常用注解示例在控制器中应用2. 自定义约束验证器定义自

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

使用Java编写一个字符脱敏工具类

《使用Java编写一个字符脱敏工具类》这篇文章主要为大家详细介绍了如何使用Java编写一个字符脱敏工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、字符脱敏工具类2、测试工具类3、测试结果1、字符脱敏工具类import lombok.extern.slf4j.Slf4j