news 2026/4/16 15:51:46

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/4/16 12:49:20

2026年数据工程师的AI转型之路:从传统ETL到智能体架构师,薪资提升与晋升加速的升维之战!

当大模型浪潮席卷全球时&#xff0c;数据工程师正站在一个独特的十字路口。一边是日益自动化的传统数据处理工作&#xff0c;另一边是新兴的AI工程领域带来的巨大机遇。2025年的职场现实是&#xff1a;掌握大模型技能的数据工程师&#xff0c;平均薪资比传统数据工程师高出35-5…

作者头像 李华
网站建设 2026/4/12 10:01:51

python玉米病虫害远程咨询系统的设计与实现_bydat7w3_Pycharm vue django flask

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;已开发项目效果实现截图 同行可拿货,招校园代理 python玉米病虫害远程咨询系统的设计与实现_bydat7w3_Pycharm…

作者头像 李华
网站建设 2026/4/16 9:20:15

破解信创DevOps落地三大痛点:嘉为蓝鲸如何助力企业平稳落地?

信创 DevOps 落地过程中&#xff0c;工具兼容碎片化、人员技能不匹配、流程重构不彻底 三大痛点常导致项目延期、效能不达标、合规风险爆发。多数企业在国产化改造中&#xff0c;要么陷入 “工具拼凑难协同” 的困境&#xff0c;要么因团队不会用、流程不适配导致平台闲置。嘉为…

作者头像 李华
网站建设 2026/4/16 7:05:05

【紧急通知】Open-AutoGLM核心功能即将停用!只因缺少这个插件

第一章&#xff1a;【紧急通知】Open-AutoGLM核心功能即将停用&#xff01;只因缺少这个插件近日&#xff0c;Open-AutoGLM 项目团队发布紧急通告&#xff1a;自下个版本起&#xff0c;其核心自动化推理功能将被强制停用&#xff0c;原因竟是系统检测到关键依赖插件 GLM-Integr…

作者头像 李华
网站建设 2026/4/16 7:04:48

Open-AutoGLM应用避坑指南:90%新手都会犯的3个错误

第一章&#xff1a;Open-AutoGLM开源怎么运用Open-AutoGLM 是一个面向自动化生成语言模型任务的开源框架&#xff0c;支持任务编排、模型调度与结果评估一体化。通过该框架&#xff0c;开发者可以快速构建端到端的自然语言处理流水线。环境准备与项目克隆 使用 Open-AutoGLM 前…

作者头像 李华