news 2026/3/24 23:56:52

CAD二次开发中直线的绘制、颜色、图层、线型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CAD二次开发中直线的绘制、颜色、图层、线型

Color.h

#pragma once class ModelSpace { public: //将实体添加到模型空间 static AcDbObjectId AddToModelSpace(AcDbEntity* pEnt); }; class CLine { public: //创建直线 static AcDbObjectId AddLine(const AcGePoint3d &ptStart, const AcGePoint3d &ptEnd); }; class Color { public: //改变对象颜色 static ErrorStatus ChangeColor(AcDbObjectId entId, Adesk::UInt16 colorIndex); }; class Layer { public: //改变对象图层 static void SetLayer(AcDbObjectId entId, const TCHAR* layerName); }; class LineType { public: //改变对象线型 static void SetLineType(AcDbObjectId entId, const TCHAR* linetype); }; class Demo { public: //加载、卸载和执行主函数 static void m_Init(); static void m_Unload(); static void m_Demo(); };

Color.cpp

#include "stdafx.h" #include "Color.h" #include <tchar.h> void Demo::m_Init() { acedRegCmds->addCommand(_T("g1"), _T("ChangeColor"), _T("测试"), ACRX_CMD_MODAL, Demo::m_Demo); } void Demo::m_Unload() { acedRegCmds->removeGroup(_T("g1")); } //将实体添加到模型空间 AcDbObjectId ModelSpace::AddToModelSpace(AcDbEntity* pEnt) { //检查输入参数的有效性 assert(pEnt); //获得当前图形数据库的块表 AcDbBlockTable* pBT1 = NULL; acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBT1, AcDb::kForRead); //获得模型空间对应的块表记录 AcDbBlockTableRecord* pBT1Rcd = NULL; pBT1->getAt(ACDB_MODEL_SPACE, pBT1Rcd, AcDb::kForWrite); pBT1->close(); //将实体添加到模型空间的快表记录中 AcDbObjectId lineId; Acad::ErrorStatus es = pBT1Rcd->appendAcDbEntity(lineId, pEnt); if (es != Acad::eOk) { pBT1Rcd->close(); delete pEnt; //添加失败时delete pEnt = NULL; return AcDbObjectId::kNull; } //关闭模型空间块表记录 pBT1Rcd->close(); pEnt->close(); return lineId; } AcDbObjectId CLine::AddLine(const AcGePoint3d& ptStart, const AcGePoint3d& ptEnd) { //创建直线实体 AcDbLine* pLine = new AcDbLine(ptStart, ptEnd); //将直线实体添加到模型空间中 return ModelSpace::AddToModelSpace(pLine); } //修改颜色,范围0~256 Acad::ErrorStatus Color::ChangeColor(AcDbObjectId entId, Adesk::UInt16 colorIndex) { //检测参数的有效性 assert(colorIndex >= 0 && colorIndex <= 256); AcDbEntity* pEntity; acdbOpenAcDbEntity(pEntity, entId, AcDb::kForWrite); pEntity->setColorIndex(colorIndex); pEntity->close(); return Acad::eOk; } //修改图层 void Layer::SetLayer(AcDbObjectId entId, const TCHAR* layerName) { AcDbEntity* pEnt = NULL; if (acdbOpenObject(pEnt, entId, AcDb::kForWrite) == Acad::eOk) { pEnt->setLayer(layerName); pEnt->close(); } } //修改线型 void LineType::SetLineType(AcDbObjectId entId, const TCHAR* linetype) { AcDbEntity* pEnt = NULL; if (acdbOpenObject(pEnt, entId, AcDb::kForWrite) == Acad::eOk) { pEnt->setLinetype(linetype); pEnt->close(); } } void Demo::m_Demo() { //创建直线 AcGePoint3d ptStart(0, 0, 0); AcGePoint3d ptEnd(100, 100, 0); AcDbObjectId lineId = CLine::AddLine(ptStart, ptEnd); //修改颜色为红色 Color::ChangeColor(lineId, 2); //修改实体的图层 Layer::SetLayer(lineId, TEXT("中心线")); //修改实体的线型 LineType::SetLineType(lineId, TEXT("HIDDEN")); }

仅供学习使用,还有很多不完善的地方,比如没有对返回值进行检查,未做兜底

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/22 15:45:38

大学生就业需求分析系统毕业论文+PPT(附源代码+演示视频)

文章目录大学生就业需求分析系统一、项目简介&#xff08;源代码在文末&#xff09;1.运行视频2.&#x1f680; 项目技术栈3.✅ 环境要求说明4.包含的文件列表&#xff08;含论文&#xff09;数据库结构与测试用例系统功能结构前端运行截图后端运行截图项目部署源码下载大学生就…

作者头像 李华
网站建设 2026/3/22 23:53:59

Java毕设项目推荐-基于Java的跳蚤市场交易平台基于协同过滤算法的跳蚤市场商品推荐系统【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/23 14:29:33

Java计算机毕设之基于SpringBoot的网球馆管理系统的设计与实现会员信息与消费记录分管理(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/14 10:12:40

Open-AutoGLM部署前必读:如何在48小时内完成隐私合规审计?

第一章&#xff1a;Open-AutoGLM隐私风险在人工智能模型日益普及的背景下&#xff0c;Open-AutoGLM作为一款开源自动化语言生成工具&#xff0c;其广泛应用也引发了对用户隐私泄露的深度关注。该模型在训练过程中依赖大量文本数据&#xff0c;若未对敏感信息进行有效过滤&#…

作者头像 李华
网站建设 2026/3/19 9:39:01

资产设备管理系统源码

功能点&#xff1a;1、资产信息 2、资产报废 3、资产型号管理 4、采购管理 5、借用管理 6、资产出售 7、资产分类 8、维保管理 9、仓库管理 10、资产维保 11、资产标签模版软件全套精华资料包清单部分文件列表&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0…

作者头像 李华
网站建设 2026/3/14 5:24:53

Open-AutoGLM PPT导出权限错误怎么办,资深工程师亲授解决妙招

第一章&#xff1a;Open-AutoGLM PPT导出功能概述Open-AutoGLM 是一款基于大语言模型的自动化办公工具&#xff0c;其核心功能之一是将自然语言生成的内容一键导出为结构化的 PowerPoint 演示文稿。该功能适用于会议纪要生成、技术方案汇报、教学课件制作等场景&#xff0c;显著…

作者头像 李华