【AcDbRegion::createFromCurves】

在ARX2021环境中,编译项目时遇到了链接错误,具体表现为无法解析AcDbRegion::createFromCurves和AcDbRegion::desc这两个静态成员函数的外部符号。这通常是由于缺少相应的库文件导致的,如acgeomen.lib。解决方案可能是确保链接器配置正确,包含所有必要的库文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public: static class AcRxClass * __cdecl AcDbRegion::desc(void)" (?desc@AcDbRegion@@SAPEAVAcRxClass@@XZ),函数 “public: static enum Acad::ErrorStatus __cdecl CCreateEnt::FindCenterClosedCurve(class AcDbObjectId,class AcGePoint3d &)” (?FindCenterClosedCurve@CCreateEnt@@SA?AW4ErrorStatus@Acad@@VAcDbObjectId@@AEAVAcGePoint3d@@@Z) 中引用了该符号
1>CreateEnt.obj : error LNK2019: 无法解析的外部符号 “public: static enum Acad::ErrorStatus __cdecl AcDbRegion::createFromCurves(class AcArray<void *,class AcArrayMemCopyReallocator<void *> > const &,class AcArray<void *,class AcArrayMemCopyReallocator<void *> > &)” (?createFromCurves@AcDbRegion@@SA?AW4ErrorStatus@Acad@@AEBV?AcArray@PEAXV?AcArray@PEAXV?AcArray@PEAXV?AcArrayMemCopyReallocator@PEAX@@@@AEAV4@@Z),函数 “public: static class AcArray<class AcDbObjectId,class AcArrayMemCopyReallocator > __cdecl CCreateEnt::CreateRegion(class AcArray<class AcDbObjectId,class AcArrayMemCopyReallocator > const &)” (?CreateRegion@CCreateEnt@@SA?AV?AcArray@VAcDbObjectId@@V?AcArray@VAcDbObjectId@@V?AcArray@VAcDbObjectId@@V?AcArrayMemCopyReallocator@VAcDbObjectId@@@@@@AEBV2@@Z) 中引用了该符号
fatal error LNK1120: 2 个无法解析的外部命令
1>已完成生成项目“DockControlBar19.vcxproj”的操作 - 失败。
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========

这个是什么问题??
在arx2021当中,出现这个,
解决方案

Try to link with acgeoment.lib
在AutoCAD中使用C#将框选的CAD图形转化为面域,你需要使用AutoCAD的.NET API来编程实现。下面是一个简单的步骤说明: 1. 启动AutoCAD应用程序,并加载.NET程序集。 2. 创建一个新的类库项目,并添加对AutoCAD类型库的引用,通常是`acdbmgd.dll`和`acmgd.dll`。 3. 在你的代码中,首先需要初始化AutoCAD应用程序接口,然后打开一个数据库,并获取当前文档和模型空间。 4. 使用选择集来框选图形。你可以使用`Editor.SelectionBox`方法来实现用户选择框选区域。 5. 遍历选择集中的图形对象,使用`AcDbRegion.CreateFromCurves`方法将曲线对象转换为面域。 6. 最后,确保正确处理异常并关闭数据库。 以下是一个简化的代码示例,展示了基本的框架结构: ```csharp using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; public void ConvertToRegions() { Document acDoc = Application.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; Editor acEdit = acDoc.Editor; // 启动事务处理 using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { // 打开块表记录用于读写 BlockTable acBlkTbl; acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable; // 打开模型空间块表记录用于读写 BlockTableRecord acBlkTblRec; acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; // 创建选择集,这里可以根据需要选择是否使用选择框 PromptSelectionResult acSSPrompt = acEdit.SelectImplied(); if (acSSPrompt.Status == PromptStatus.OK) { SelectionSet acSSet = acSSPrompt.Value; foreach (SelectedObject acSSObj in acSSet) { // 检查对象是否为实体 if (acSSObj != null && acSSObj.ObjectId.ObjectClass ==蜻蜓.NET.Objects.Class.DwgObject) { DBObject acObj = acTrans.GetObject(acSSObj.ObjectId, OpenMode.ForRead); // 对象转换为面域的逻辑 // ... } } } // 提交事务处理 acTrans.Commit(); } } ``` 这段代码只是一个框架,你需要填充将对象转换为面域的具体逻辑。转换逻辑通常涉及到`Curve`对象的处理,以及确保所有必要的实体都是闭合的曲线,这样才能形成面域。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lst0426

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值