先上代码(亲测可用):
/// <summary>/// 定位缩放值指定实体/// </summary>/// <param name="oid"></param>public static void Orientate(ObjectId oid){try{Entity current_entity = GetEntity(oid);current_entity.Highlight();//高亮显示实体 //缩放至实体ZoomToExtent(current_entity.GeometricExtents);}catch (Exception ex){throw;}}/// <summary>/// 缩放至指定范围/// </summary>/// <param name="extent"></param>public static void ZoomToExtent(Extents3d extent){try{Point3d pMin = extent.MinPoint;Point3d pMax = extent.MaxPoint;//获取当前文档及数据库Document acDoc = Application.DocumentManager.MdiActiveDocument;Database acCurDb = acDoc.Database;// 启动事务using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()){// 获取当前视图using (ViewTableRecord acView = acDoc.Editor.GetCurrentView()){//设置视图的高acView.Height = Math.Abs(pMin.Y - pMax.Y);//设置视图的宽acView.Width = Math.Abs(pMin.X - pMax.X);// 设置视图中心acView.CenterPoint = new Point2d((pMin.X+pMax.X)/2, (pMin.Y+pMax.Y)/2);// 更新当前视图acDoc.Editor.SetCurrentView(acView);}// 提交更改acTrans.Commit();}}catch (Exception){throw;}}
我有一个功能是做检查功能得,检查结果为一个DataTable显示在DataGridView中,我要实现双击行定位缩放到指定实体。
DataGridView显示了除过oid(ObjectID.ToString())得其它字段,双击行由于id唯一,我们可以找到这个对象拿到oid,通过上一篇文章可以获取ObjectID实体然后进行缩放定位。