arx函数集合
void drawline(AcGePoint3d startPt,AcGePoint3d endPt,const ACHAR *linetype,int c,AcDb::LineWeight ww)//画直线
{
AcDbLine *pLine = new AcDbLine(startPt, endPt); //构建直线类(AcDbLine)的对象
AcDbBlockTable *pBlockTable; //指向块表的指针
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable, AcDb::kForRead); //将指针指向当前数据库中的块表
AcDbBlockTableRecord *pBlockTableRecord; //指向块表记录的指针
//将块表记录的指针指向当前块表的模型空间记录
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
pBlockTable->close(); //关闭块表
AcDbObjectId lineId; //直线ID
pBlockTableRecord->appendAcDbEntity(lineId, pLine); //将指向添加到块表记录
//属性设置-------------------------------------------------------------------
pLine->setLinetype(linetype);
pLine->setLinetypeScale(0.6,1);
pLine->setLineWeight(ww);
pLine->setColorIndex(c);
pBlockTableRecord->close(); //关闭块表记录
pLine->close();
}
void createArc( AcGePoint3d centerPt,double r,double bA,double eA,const ACHAR *linetype,int c,AcDb::LineWeight ww)
{
AcDbArc *pArc = new AcDbArc(centerPt,r,bA,eA);
AcDbBlockTable *pBlockTable; //指向块表的指针
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable, AcDb::kForRead); //将指针指向当前数据库中的块表
AcDbBlockTableRecord *pBlockTableRecord; //指向块表记录的指针
//将块表记录的指针指向当前块表的模型空间记录
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
pBlockTable->close(); //关闭块表
AcDbObjectId arcId; //圆弧ID
pBlockTableRecord->appendAcDbEntity(arcId, pArc); //添加到块表记录
//属性设置---------------------------------------------------------
pArc->setLinetype(linetype);
pArc->setLinetypeScale(0.6,1);
pArc->setLineWeight(ww);
pArc->setColorIndex(c);
pBlockTableRecord->close(); //关闭块表记录
pArc->close();
}
void createspLine(AcGePoint3dArray points,int order,double jd,const ACHAR *linetype,int
c,AcDb::LineWeight ww)
{
AcDbSpline *pLine = new AcDbSpline(points, order, jd);
AcDbBlockTable *pBlockTable; //指向块表的指针
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable, AcDb::kForRead); //将指针指向当前数据库中的块表
AcDbBlockTableRecord *pBlockTableRecord; //指向块表记录的指针
//将块表记录的指针指向当前块表的模型空间记录
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
pBlockTable->close(); //关闭块表
AcDbObjectId spLineId; //样线
pBlockTableRecord->appendAcDbEntity(spLineId, pLine); //添加到块表记录
//属性设置---------------------------------------------------------
pLine->setLinetype(linetype);
pLine->setLinetypeScale(0.6,1);
pLine->setLineWeight(ww);
pLine->setColorIndex(c);
pBlockTableRecord->close(); //关闭块表记录
pLine->close();
}
void createText(AcGePoint3d pt1,const ACHAR *zhi,AcDbObjectId style,double h,double xzj)
{
AcDbText *pText = new AcDbText(pt1, zhi, style, h,xzj);
AcDbBlockTable *pBlockTable;
acdbHostApplicationServices()->workingDatabase()
->getBlockTable(pBlockTable, AcDb::kForRead);
AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,
AcDb::kForWrite);
AcDbObjectId zhiId;
pBlockTableRecord->appendAcDbEntity(zhiId, pText);
pBlockTable->close();
pBlockTableRecord->close();
pText->close();
}
void createAlignedDim(AcGePoint3d pt1,AcGePoint3d pt2,AcGePoint3d pt3)//直线尺寸标注
{
const ACHAR *a=NULL;
AcDbObjectId style = AcDbObjectId::kNull;
AcDbAlignedDimension *pDim = new AcDbAlignedDimension(pt1, pt2, pt3,a,style);
pDim->setColorIndex(1);
AcDbBlockTable *pBlockTable;
acdbHostApplicationServices()->workingDatabase()
->getBlockTable(pBlockTable, AcDb::kForRead);
AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,
AcDb::kForWrite);
AcDbObjectId biaoID;
pBlockTableRecord->appendAcDbEntity(biaoID, pDim);
pBlockTable->close();
pBlockTableRecord->close();
pDim->close();
}
void createDiaDim(AcGePoint3d pt,double l,double d)//直径尺寸标注
{
const ACHAR *zheshicicun=NULL;
AcDbObjectId dimStyle = AcDbObjectId::kNull;
ads_point pt2, pt3;
pt2[X] = pt.x;
pt2[Y] = pt.y;
pt2[Z] = pt.z;
double pi=3.1415926,gel;
AcGeVector2d pt4(pt.x,pt.y);
gel=pt4.angle();
acutPolar(pt2, pi+gel, d, pt3);o
AcGePoint3d pt1=asPnt3d(pt3);
AcDbDiametricDimension *pDim = new AcDbDiametricDimension(pt,pt1, l, zheshicicun,
dimStyle);
pDim->setColorIndex(1);
AcDbBlockTable *pBlockTable;
acdbHostApplicationServices()->workingDatabase()
->getBlockTable(pBlockTable, AcDb::kForRead);
AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,
AcDb::kForWrite);
AcDbObjectId biaoID;
pBlockTableRecord->appendAcDbEntity(biaoID, pDim);
pBlockTable->close();
pBlockTableRecord->close();
pDim->close();
}
//定义粗糙度标注符号---------------------------
void createRoughness1 (AcGePoint3d pt,const ACHAR *zhi)
{ double pi=3.1415926;
AcGePoint3d pt1=biandian(pt,-1.5,3*cos(30*pi/180));
AcGePoint3d pt2=biandian(pt,1.5,3*cos(30*pi/180));
AcGePoint3d pt3=biandian(pt2,5*cos(60*pi/180),5*sin(60*pi/180));
AcGePoint3d pt4=biandian(pt1,-3.5,1);
huazixian(pt,pt1,NULL,1,AcDb::kLnWt000);
huazixian(pt1,pt2,NULL,1,AcDb::kLnWt000);
huazixian(pt,pt2,NULL,1,AcDb::kLnWt000);
huazixian(pt2,pt3,NULL,1,AcDb::kLnWt000);
wenzhi(pt4,zhi,NULL,2.5,0);
}
void createRoughness2(AcGePoint3d pt,const ACHAR *zhi) {
double pi=3.1415926;
AcGePoint3d pt1=biandian(pt,3*cos(30*pi/180),1.5);
AcGePoint3d pt2=biandian(pt,3*cos(30*pi/180),-1.5);
AcGePoint3d pt3=biandian(pt2,5*cos(30*pi/180),-5*sin(30*pi/180));
AcGePoint3d pt4=biandian(pt1,1,1.8);
huazixian(pt,pt1,NULL,1,AcDb::kLnWt000);
huazixian(pt1,pt2,NULL,1,AcDb::kLnWt000);
huazixian(pt,pt2,NULL,1,AcDb::kLnWt000);
huazixian(pt2,pt3,NULL,1,AcDb::kLnWt000);
double u=-pi*90/180;
wenzhi(pt4,zhi,NULL,2.5,u);
}
/////////////////////////////
void CreateHatch(AcDbObjectIdArray objIds,const ACHAR* patName, bool bAssociative)//剖面线 {
Acad::ErrorStatus es;
AcDbHatch *pHatch = new AcDbHatch();
// 设置填充平面
AcGeVector3d normal(0, 0, 1);
pHatch->setNormal(normal);
pHatch->setElevation(0);
pHatch->setAssociative(bAssociative);
// 设置填充图案
pHatch->setPattern(AcDbHatch::kPreDefined, patName);
// 添加填充边界
es = pHatch->appendLoop(AcDbHatch::kExternal, objIds);
// 显示填充对象
es = pHatch->evaluateHatch();
// 添加到模型空间
AcDbBlockTable *pBlockTable;
acdbHostApplicationServices()->workingDatabase()
->getBlockTable(pBlockTable, AcDb::kForRead);
AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,
AcDb::kForWrite);
AcDbObjectId tianID;
pBlockTableRecord->appendAcDbEntity(tianID, pHatch);
pBlockTable->close();
pBlockTableRecord->close();
pHatch->close();
}
//加载线型-------------------------------------------------------------
void loadLineType()
{
AcDbLinetypeTable *pLinetypeTbl;
AcDbObjectId lineTypeId;
acdbHostApplicationServices()->workingDatabase()->getLinetypeTable(pLinetypeTbl,AcDb::k
ForRead);
const ACHAR *lyName = _T("DASHED");
if ((pLinetypeTbl->getAt(lyName,lineTypeId))!=Acad::eOk);
{
pLinetypeTbl->close();
acdbHostApplicationServices()->workingDatabase()->loadLineTypeFile(lyName,_T("acadiso.li
n"));
}
lyName = _T("CENTER2");
if ((pLinetypeTbl->getAt(lyName,lineTypeId))!=Acad::eOk);
{
pLinetypeTbl->close();
acdbHostApplicationServices()->workingDatabase()->loadLineTypeFile(lyName,_T("acadiso.li
n"));
}
lyName = _T("DOT");
if ((pLinetypeTbl->getAt(lyName,lineTypeId))!=Acad::eOk);
{
pLinetypeTbl->close();
acdbHostApplicationServices()->workingDatabase()->loadLineTypeFile(lyName,_T("acadiso.li
n"));
}
pLinetypeTbl->close();
}
void createTolerance(AcGePoint3d tian)//标注公差
{
AcGePoint3d tian1=biandian(tian,15,-10);
AcGePoint3d tian2=biandian(tian1,8,0);
AcGePoint3d dian=tian2;
huazixian(tian, tian1,NULL,1,AcDb::kLnWt000);
huazixian(tian1, tian2,NULL,1,AcDb::kLnWt000);
AcGePoint3d dian1=biandian(dian,3,0);
AcGePoint3d dian2=biandian(dian,12,0);
AcGePoint3d dian3=biandian(dian,15,0);
AcGePoint3d dian4=biandian(dian,0,4);
AcGePoint3d dian5=biandian(dian,3,4);
AcGePoint3d dian6=biandian(dian,12,4);
AcGePoint3d dian7=biandian(dian,15,4);
huazixian(dian, dian3,NULL,1,AcDb::kLnWt000);
huazixian(dian4, dian7,NULL,1,AcDb::kLnWt000);
huazixian(dian, dian4,NULL,1,AcDb::kLnWt000);
huazixian(dian5, dian1,NULL,1,AcDb::kLnWt000);
huazixian(dian6, dian2,NULL,1,AcDb::kLnWt000);
huazixian(dian7, dian3,NULL,1,AcDb::kLnWt000);
AcGePoint3d dian8=biandian(dian,0.2,0.5);
AcGePoint3d dian9=biandian(dian1,0.2,0.5);
AcGePoint3d dian10=biandian(dian2,0.2,0.5);
double uuu=-25*3.141592/180;
wenzhi(dian8,_T("?"),NULL,3,uuu);
wenzhi(dian9,_T("0.03"),NULL,2.5,0);
wenzhi(dian10,_T("A"),NULL,2.5,0);
}
//基准--------------------------
void createDatum(AcGePoint3d dian1)//标注基准
{
AcGePoint3d dian2=biandian(dian1,15,0);
AcGePoint3d dian3=biandian(dian2,-6,-2);
AcGePoint3d dian4=biandian(dian2,0,-2);
AcGePoint3d dian5=biandian(dian4,-3,0);
AcGePoint3d dian6=biandian(dian5,0,-5);
AcGePoint3d dian7=biandian(dian6,0,-3);
AcGePoint3d dian8=biandian(dian7,-1,-1);
huazixian(dian1, dian2,NULL,1,AcDb::kLnWt000);
huazixian(dian3, dian4,NULL,0,AcDb::kLnWt040);
huazixian(dian5, dian6,NULL,0,AcDb::kLnWt000);
createArc(dian7,3,0,6.28318,NULL,0,AcDb::kLnWt000);
wenzhi(dian8,_T("A"),NULL,2.5,0);
}
本文档为【arx函数集合】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。