返回介绍

说明

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

下载地址:

https://mxtmpweb.mxdraw.f3322.net:3562/cpp/ParamDraw.zip

在绘制实体时,我们需要以动态内存的方式来实例化实体,在C++的语法里即体现为使用new关键字来实例化一个实体对象,如:

McDbLine * pLine = new McDbLine(McGePoint3d(0, 0, 0), McGePoint3d(1, 1, 1));

上述代码即初始化一个直线实体对象,现在将它放入模型空间即可显示:

MrxDbgUtils::addToCurrentSpaceAndClose(pLine);

如未指定实体所在图层,该实体会出现在默认的图层。在此,我们绘制了直线、多段线、点、样条线、圆、圆弧、椭圆、椭圆弧等实体,并将它们设置为红色(红色索引值为1),并将其放入一个独立的图层中,图层中设置了线型,颜色;代码、线型、颜色索引如下所示:

McDbObjectId CParamDrawDlg::CreateLayer(const McDbEntity * pEnt)const
{
	auto sTypeName = pEnt->isA()->name();

	McDbLayerTable * pLayer = nullptr;
	//得到当前数据库
	auto pDatabase = MxDraw::GetDatabase(MxDraw::GetCurOcxHandle());
	//得到层表
	pDatabase->getLayerTable(pLayer, McDb::kForWrite);
	McDbLayerTableRecord * pLayerRecord = nullptr;
	//判断层表里是否有该层的记录
	if (pLayer->has(sTypeName))
	{
		pLayer->getAt(sTypeName, pLayerRecord, McDb::kForWrite);
	}
	else
	{
		//如果没有该层,即添加该层至层表
		pLayerRecord = new McDbLayerTableRecord;
		pLayerRecord->setName(sTypeName);
		pLayer->add(pLayerRecord);
	}
	
	McCmColor mLayerColor;
	mLayerColor.setColorIndex(1);		//红色
	mLayerColor.setColorMethod(McCmColor::kByACI);
	pLayerRecord->setColor(mLayerColor);//
	pLayerRecord->setLineWeight(McDb::kLnWt025);//
	pLayerRecord->setBright(100);//100亮度

	McDbLinetypeTable * pLinetype = nullptr;
	McDbObjectId mLineTypeID;
	pDatabase->getLinetypeTable(pLinetype, McDb::kForRead);
	pLinetype->getAt(L"DIVIDE", mLineTypeID);
	pLayerRecord->setLinetypeObjectId(mLineTypeID);

	//图层必须在关闭状态才能向里添加实体
	pLinetype->close();
	pLayerRecord->close();
	pLayer->close();
	return pLayerRecord->objectId();

}

图层中的线型:

	//设置层为“DIVIDE”线型
	McDbLinetypeTable * pLinetype = nullptr;
	McDbObjectId mLineTypeID;
	pDatabase->getLinetypeTable(pLinetype, McDb::kForRead);
	pLinetype->getAt(L"DIVIDE", mLineTypeID);
	pLayerRecord->setLinetypeObjectId(mLineTypeID);

已有线型:

blob.png

颜色索引说明:

kByblock = 0 随块

kRed = 1 红色

kYellow = 2 黄色

kGreen = 3 绿色

kCyan = 4 青色

kBlue = 5 蓝色

kMagenta = 6 洋红色

kWhite = 7 白色

kBylayer = 256 随层

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

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

发布评论

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