ObjectARX 2025(C++)绘制椭圆 AcDbEllipse

最近更新于 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 方法里调用
file

调试运行
file

ObjectARX 2025(C++)绘制椭圆 AcDbEllipse
Scroll to top

目录

打开目录