最近更新于 2025-03-23 15:51
环境
AutoCAD 机械版 2025
ObjectARX 2025
VS 2022(ISO C++14)
环境配置参考:https://blog.iyatt.com/?p=16480
实现
Ellipse.hpp
#pragma once
class Ellipse
{
public:
static void work();
private:
static void drawEllipse(AcDbEllipse* pEllipseObj);
};
Ellipse.cpp
#include "stdafx.h"
#include "Ellipse.hpp"
void Ellipse::drawEllipse(AcDbEllipse * pEllipseObj)
{
AcDbBlockTable* pBlockTable = nullptr;
acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable, AcDb::kForRead);
AcDbBlockTableRecord* pBlockTableRecord = nullptr;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
pBlockTableRecord->appendAcDbEntity(pEllipseObj);
pBlockTableRecord->close();
pBlockTable->close();
}
void Ellipse::work()
{
const AcGePoint3d center(10, 0, 0); // 中心
const AcGeVector3d normal(0, 0, 1); // xy平面向量
const AcGeVector3d majorAxis(50, 0, 0); // 长半轴矢量
const double radiusRation = 0.5; // 短轴和长轴的比值
AcDbEllipse* pEllipseObj = new AcDbEllipse(center, normal, majorAxis, radiusRation);
Ellipse::drawEllipse(pEllipseObj);
pEllipseObj->close();
}
在 acrxEntryPoint.cpp 中引用头文件,并在 On_kInitAppMsg 方法里调用
调试运行
ObjectARX 2025(C++)绘制椭圆 AcDbEllipse