AddTransient无法在AutoCAD2023.netc#中绘制图像。
创始人
2024-07-27 03:34:54
0

可能是因为AddTransient对象在调用完其绘制函数后就立即被销毁,而图像被绘制时还需保持其持续存在。因此,可以通过在AddTransient之前添加对象的代码,来使图像持续存在。示例代码如下:

public void MyCommand() { Document doc = Application.DocumentManager.MdiActiveDocument; Transaction tr = doc.TransactionManager.StartTransaction(); using (tr) { BlockTable bt = tr.GetObject(doc.Database.BlockTableId, OpenMode.ForRead) as BlockTable; BlockTableRecord btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; Line line = new Line(new Point3d(0,0,0), new Point3d(100, 100, 0)); btr.AppendEntity(line); tr.AddNewlyCreatedDBObject(line, true); MyTransient myTransient = new MyTransient(line); Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.TransientManager.AddTransient(myTransient); tr.Commit(); } }

public class MyTransient : IDisposable { DBObject _objectToDraw; public MyTransient(DBObject obj) { _objectToDraw = obj; }

public void Draw(Graphics gs, Point p)
{
    // draw the object
}

public void Dispose()
{
    Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.TransientManager.EraseTransient(_objectToDraw.ObjectId, new ObjectIdCollection());
    _objectToDraw.Dispose();
}

}

此示例中,我们在AddTransient之前创建了一个Line对象,并将其添加到了BlockTableRecord.ModelSpace中。我们还创建了一个MyTransient对象,该对象将持有Line对象的引用并实现了Draw方法。MyTransient对象将通过AddTransient方法来添加到AutoCAD中,并绘制Line对象。最后,在完成绘制后,我们将持有的DBObject和添加的Transient对象一同进行了释放操作。

通过以上的方法,我们可以实现在AutoCAD 2023 .net c#中正确地绘制对象。

相关内容

热门资讯

Android Studio ... 要解决Android Studio 4无法检测到Java代码,无法打开SDK管理器和设置的问题,可以...
安装tensorflow mo... 要安装tensorflow models object-detection软件包和pandas的每个...
安装了Laravelbackp... 检查是否创建了以下自定义文件并进行正确的配置config/backpack/base.phpconf...
安装了centos后会占用多少... 安装了CentOS后会占用多少内存取决于多个因素,例如安装的软件包、系统配置和运行的服务等。通常情况...
按照Laravel方式通过Pr... 在Laravel中,我们可以通过定义关系和使用查询构建器来选择模型。首先,我们需要定义Profile...
按照分类ID显示Django子... 在Django中,可以使用filter函数根据分类ID来筛选子类别。以下是一个示例代码:首先,假设你...
Android Studio ... 要给出包含代码示例的解决方法,我们可以使用Markdown语法来展示代码。下面是一个示例解决方案,其...
Android Retrofi... 问题描述:在使用Android Retrofit进行GET调用时,获取的响应为空,即使服务器返回了正...
Alexa技能在返回响应后出现... 在开发Alexa技能时,如果在返回响应后出现问题,可以按照以下步骤进行排查和解决。检查代码中的错误处...
Airflow Dag文件夹 ... 要忽略Airflow中的笔记本检查点,可以在DAG文件夹中使用以下代码示例:from airflow...