gpt4 book ai didi

c# - 鼠标下带有缩略图的 CAD 插入 block

转载 作者:行者123 更新时间:2023-11-30 12:33:21 28 4
gpt4 key购买 nike

我需要通过 C# 插件将外部 DWG 插入到 AutoCAD 图形中。我需要向用户“询问”插入 block 的插入点和旋转。直到现在我一直使用调用命令“._-insert”的 lisp 函数,它给出了鼠标下方 block 的缩略图,允许用户单击绘图以设置插入点,然后从该点允许用户再单击一次以设置旋转。现在我想避免使用 Lisp 或使用 AutoCAD 的低级 API,因为我需要一个可以在各种 CAD 环境中运行的解决方案。我发现的是这样的:

public static void InsertDwg(string dwgName)
{
CADAPI.ApplicationServices.Document doc = CADAPI.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
CADDB.Database db = doc.Database;
CADAPI.EditorInput.Editor ed = doc.Editor;
CADDB.ObjectId ObjId;
using (CADDB.Transaction trx = db.TransactionManager.StartTransaction())
{
CADDB.BlockTable bt = db.BlockTableId.GetObject(CADDB.OpenMode.ForRead) as CADDB.BlockTable;
CADDB.BlockTableRecord btrMs = bt[CADDB.BlockTableRecord.ModelSpace].GetObject(CADDB.OpenMode.ForWrite) as CADDB.BlockTableRecord;
using (CADDB.Database dbInsert = new CADDB.Database(false, true))
{
dbInsert.ReadDwgFile(dwgName, CADDB.FileOpenMode.OpenForReadAndAllShare, true, string.Empty);
ObjId = db.Insert(Path.GetFileNameWithoutExtension(dwgName), dbInsert, true);
}
CADAPI.EditorInput.PromptPointOptions ppo = new CADAPI.EditorInput.PromptPointOptions("\nInsertion Point");
CADAPI.EditorInput.PromptAngleOptions ppa = new CADAPI.EditorInput.PromptAngleOptions("\nInsert Rotation");
CADAPI.EditorInput.PromptPointResult ppr;
ppr = ed.GetPoint(ppo);
CADAPI.EditorInput.PromptDoubleResult ppd = ed.GetAngle(ppa);
if (ppr.Status == CADAPI.EditorInput.PromptStatus.OK)
{
CADGEOM.Point3d insertPt = ppr.Value;
CADDB.BlockReference bref = new CADDB.BlockReference(insertPt, ObjId);
btrMs.AppendEntity(bref);
trx.AddNewlyCreatedDBObject(bref, true);
trx.Commit();
}
}
}

但是这里我有两个问题:最主要的是鼠标下没有预览。第二个是用户需要点击 3 次而不是 2 次来设置插入点和旋转。

有没有什么方法可以不使用某种SendCommand 并执行所有这些操作?时间差

最佳答案

似乎 Jigging 是允许预览的方法。我为您提供了三个链接。

第一个是使用折线创建简单夹具的示例 - 您可以将其扩展为 block 。

第二个链接类似,但对混合应用旋转。这适用于矩形,但可以再次修改以容纳 block 。

第三个链接描述了一种不同的方法 - AutoCAD transient 图形界面。您必须使用 AutoCAD 2009 或更高版本才能使用此方法。

最后两个链接来自Through the Interface博客,您可以在其中找到更多示例,如果您遇到问题,这是一个很好的起点,尤其是对于编码 C#。

关于c# - 鼠标下带有缩略图的 CAD 插入 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9467937/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com