c# – CAD在鼠标下插入带缩略图的块
发布时间:2020-12-15 21:31:13 所属栏目:百科 来源:网络整理
导读:我需要通过C#插件将外部DWG插入到AutoCAD图形中. 我需要向用户“询问”插入块的插入点和旋转. 到目前为止,我一直使用一个调用命令“._- insert”的lisp函数,它给出了鼠标下块的缩略图,允许用户点击图形来设置插入点,并从那一点开始允许用户再次单击以设置旋
我需要通过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(); } } } 但在这里我有两个问题: 有没有什么方法不使用某种SendCommand并做所有这些东西? 解决方法
似乎Jigging是允许预览的方式.我有三个链接给你.
> Jigging multiple entities with the DrawJig 第一个是使用折线创建简单夹具的示例 – 您可以将其扩展为块. 第二个链接类似,但将旋转应用于混合.这适用于矩形,但可以再次修改以容纳块. 第三个链接描述了一种不同的方法 – AutoCAD的瞬态图形界面.您必须使用AutoCAD 2009或更高版本才能使用此方法. 最后两个链接来自Through the Interface博客,在那里您可以找到更多示例,如果您遇到问题,尤其是编码C#,这是一个非常好的起点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |