乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 72|回复: 1

选取对象,wblock 后设定viewtablerecord居中显示

[复制链接]

11

主题

92

帖子

10

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2021-4-30 00:36:00 | 显示全部楼层 |阅读模式
  1. public static class Extension
  2.     {
  3.         public static void ZoomExtents(this Database db)
  4.         {
  5.             if (db == null)
  6.                 throw new ArgumentNullException("db");
  7.             if (db.TileMode)
  8.                 acedVports2VportTableRecords();
  9.             else
  10.                 db.TileMode = true;
  11.             db.UpdateExt(false);
  12.             using (var tr = db.TransactionManager.StartOpenCloseTransaction())
  13.             {
  14.                 var view = (ViewportTableRecord)tr.GetObject(db.CurrentViewportTableRecordId, OpenMode.ForWrite);
  15.                 var ratio = view.Width / view.Height;
  16.                 var ext = new Extents3d(db.Extmin, db.Extmax);
  17.                 ext.TransformBy(view.WorldToEye());
  18.                 var lg = ext.MaxPoint.X - ext.MinPoint.X;
  19.                 var ht = ext.MaxPoint.Y - ext.MinPoint.Y;
  20.                 if (lg / ht < ratio)
  21.                 {
  22.                     view.Height = ht;
  23.                     view.Width = ht * ratio;
  24.                 }
  25.                 else
  26.                 {
  27.                     view.Height = lg / ratio;
  28.                     view.Width = lg;
  29.                 }
  30.                 view.CenterPoint = new Point2d(
  31.                     (ext.MaxPoint.X + ext.MinPoint.X) / 2.0,
  32.                     (ext.MaxPoint.Y + ext.MinPoint.Y) / 2.0);
  33.                 tr.Commit();
  34.             }
  35.         }
  36.         public static Matrix3d WorldToEye(this AbstractViewTableRecord view)
  37.         {
  38.             if (view == null)
  39.                 throw new ArgumentNullException("view");
  40.             return
  41.                 Matrix3d.WorldToPlane(view.ViewDirection) *
  42.                 Matrix3d.Displacement(view.Target.GetAsVector().Negate()) *
  43.                 Matrix3d.Rotation(view.ViewTwist, view.ViewDirection, view.Target);
  44.         }
  45.         
  46.     }

回复

使用道具 举报

1

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
12
发表于 2021-4-30 09:04:00 | 显示全部楼层
楼主,这是可以做块预览那种吗
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 00:03 , Processed in 0.140885 second(s), 56 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表