lisp图库不显示缩略图_c# – CAD在鼠标下插入带缩略图的块

我需要通过C#插件将外部DWG插入到AutoCAD图形中.

我需要向用户“询问”插入块的插入点和旋转.

到目前为止,我一直使用一个调用命令“._- insert”的lisp函数,它给出了鼠标下块的缩略图,允许用户点击图形来设置插入点,并从那一点开始允许用户再次单击以设置旋转.

现在我想避免使用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并做所有这些东西?

TIA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值