返回介绍

绘制简单表格的例程代码

发布于 2023-08-09 23:10:33 字数 2021 浏览 0 评论 0 收藏 0

绘表过程,就是往McDbDatabase数据库添加实体的过程,详细代码可参考CAD控件\Src\MxDraw5.2\samples\Edit实例的代码,运行效果如下所示:

1.png

绘表算法这里不再赘述,若需要可参见上述的实例,这里将演示部分关于ARX的代码。 把图元对象添加到数据库的模型空间中的代码如下:

AcDbObjectId
CDrawTable::AddToModelSpace(AcDbEntity* pEntity,AcDbDatabase* pDatabase)
{
    AcDbObjectId objId;	 
	AcDbBlockTableRecordPointer spBlkRec(ACDB_MODEL_SPACE,pDatabase,AcDb::kForWrite);
	if(spBlkRec.openStatus() != Acad::eOk)
		return AcDbObjectId::kNull;
	spBlkRec->appendAcDbEntity(objId, pEntity);
    pEntity->close();
    return objId;
}

往数据库中画一条直线的代码如下:

AcDbObjectId CDrawTable::DrawLine(AcGePoint3d pt1,AcGePoint3d pt2,double dLineWidth,AcDbDatabase* pDatabase)
{
	if(fabs(dLineWidth) <= 0.00001)
	{
		AcDbLine* pLine = new AcDbLine(pt1,pt2);

		// test
		//pLine->setLineWeight(McDb::kLnWt015);

		return AddToModelSpace(pLine,pDatabase);
	}
	else
	{

		AcDbPolyline* pPL = new AcDbPolyline;
		pPL->setConstantWidth(dLineWidth);
		pPL->addVertexAt(0,pt1.convert2d(AcGePlane::kXYPlane));
		pPL->addVertexAt(1,pt2.convert2d(AcGePlane::kXYPlane));
		return AddToModelSpace(pPL,pDatabase);
	}
}

居中方式绘制一段文字的代码如下:

AcDbObjectId CDrawTable::DrawMCText(AcGePoint3d pt,const CString& sTxt,double dTextHeight,AcDbDatabase* pDatabase)
{
	AcDbText *pText = NULL;
	pText = new AcDbText;
	
	pText->setHorizontalMode(AcDb::kTextCenter);
	pText->setVerticalMode(AcDb::kTextVertMid);
	//pText->setVerticalMode(AcDb::kTextBottom);
	pText->setPosition(pt);
	pText->setAlignmentPoint(pt);
	pText->setTextString(sTxt);
	pText->setHeight(dTextHeight );
	pText->setColorIndex(MrxDbgUtils::kGreen);

	// test
	//pText->setRotation(3.14159265 / 4.0);

	return AddToModelSpace(pText,pDatabase);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文