c - 从 C 语言在 AutoCAD 中画一个圆

标签 c autocad

我正在尝试在已运行的 AutoCAD 实例中绘制一个圆,并将其附加到现有图形中。

这可能吗?最简单的方法是什么?

最佳答案

正如您提到的“已运行的 AutoCAD 实例”,我假设您想要自动化 AutoCAD,通常是通过 ActiveX COM 自动化。您应该使用 AcadApplication 接口(interface)(并且不能使用 AcDb 或 .NET Mgd 引用)。

这是来自 this blog post 的 ActiveX C++ 通用代码示例。请注意 acac19enu.tlb 引用,其中 19 代表 AutoCAD 版本。当前版本是 AutoCAD 2017(库版本:21)。

#import "acax19ENU.tlb" no_namespace
#include <rxmfcapi.h>
#include <axpnt3d.h>
void fAddAttribute()
{
  try
  {
    // get the ActiveX application object from AutoCAD, inc ref count
    IAcadApplicationPtr pAcadApp = acedGetAcadWinApp()->GetIDispatch(TRUE);
    // now get the active doc
    IAcadDocumentPtr pActiveDoc = pAcadApp->ActiveDocument;
    IAcadBlockPtr pBlock = NULL;
    TCHAR *pBlkName = _T("some_block_name");
    // create an activex compatible insertion point3d
    AcAxPoint3d axInsPnt(0,0,0);
    // now add the block name
    pBlock = pActiveDoc->Blocks->Add(axInsPnt.asVariantPtr(),_bstr_t(pBlkName));
    // now add an Attribute to the block
    IAcadAttributePtr pAttDef;
    pAttDef = pBlock->AddAttribute(1.0, (AcAttributeMode)0 ,
      _bstr_t("Type the employee name"), axInsPnt.asVariantPtr(),
      _bstr_t("empname"),_bstr_t(""));
    //attribute added
  }
  catch(_com_error &es)
  {
    acutPrintf(L"\nError : %s", es.ErrorMessage());
  }
}

关于c - 从 C 语言在 AutoCAD 中画一个圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41793618/

相关文章:

c# - 导入多个 DXF 文件时实体错误

python - 如何为 COM 构造对象列表?

vb.net - 如何绘制水平椭圆 (AutoCAD 2014)

c# - 需要WinForm的DWG/DXF文件的查看器控件

VBA循环遍历集合

c - 我需要帮助过滤 C 中的坏词吗?

c - 如何使用 make 构建库列表?

php - 将 PHP 用于守护进程是否明智?

c - 我在 C 语言中读取 .txt 文件中的单词时遇到一些问题

c - 二进制字节在 Linux 串行通信中被误认为是新行