首页 > 其他分享 >按选择的实体objectid来zoom时,发现一个很特别的实体dbtext

按选择的实体objectid来zoom时,发现一个很特别的实体dbtext

时间:2023-05-28 10:13:13浏览次数:34  
标签:Matrix3d objectid WCS2DCS 实体 tr zoom ext ent view

dbtext取得其GeometricExtents时,发现ext特别大,暂时不知道什么原因,所以在程序中把文字去掉了。

这一个东西测试了很长时间。

  public static void ZoomObjects(this Editor ed, ObjectIdCollection idCol)
  {
    Document doc = AcadApp.DocumentManager.MdiActiveDocument;
    Database db = doc.Database;
    using (Transaction tr = db.TransactionManager.StartTransaction())
    using (ViewTableRecord view = ed.GetCurrentView())
    {
      Matrix3d WCS2DCS = Matrix3d.PlaneToWorld(view.ViewDirection);
      WCS2DCS = Matrix3d.Displacement(view.Target - Point3d.Origin) * WCS2DCS;
      WCS2DCS = Matrix3d.Rotation(-view.ViewTwist, view.ViewDirection, view.Target) * WCS2DCS;
      WCS2DCS = WCS2DCS.Inverse();
      Entity ent = (Entity)tr.GetObject(idCol[0], OpenMode.ForRead);
      Extents3d ext = ent.GeometricExtents;
      ext.TransformBy(WCS2DCS);
      for (int i = 1; i < idCol.Count; i++)
      {
        ent = (Entity)tr.GetObject(idCol[i], OpenMode.ForRead);
        if(ent is DBText)
        {
          continue;
        }
        Extents3d tmp = ent.GeometricExtents;
        tmp.TransformBy(WCS2DCS);
        ext.AddExtents(tmp);
      }
      double ratio = view.Width / view.Height;
      double width = ext.MaxPoint.X - ext.MinPoint.X;
      double height = ext.MaxPoint.Y - ext.MinPoint.Y;
      if (width > (height * ratio))
        height = width / ratio;
      Point2d center =
          new Point2d((ext.MaxPoint.X + ext.MinPoint.X) / 2.0, (ext.MaxPoint.Y + ext.MinPoint.Y) / 2.0);
      view.Height = height;
      view.Width = width;
      view.CenterPoint = center;
      ed.SetCurrentView(view);
      tr.TransactionManager.QueueForGraphicsFlush();
      ed.Regen();
      tr.Commit();
    }
  }

 

标签:Matrix3d,objectid,WCS2DCS,实体,tr,zoom,ext,ent,view
From: https://www.cnblogs.com/swtool/p/17437830.html

相关文章

  • 渗透测试分析 ---- xxe实体注入入门
    因为我对xxe知之甚少,所以使用chatgpt帮忙翻译了一下效果十分优秀,当xml解析器解析了这句话就会取出外部数据 ......
  • MybatisPlusGenerator 实体类 xml dao 生成工具
    packagecom.thtf.zwdsj.gongjia.config;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.baomidou.mybatisplus.generator.FastAutoGenerator;importcom.baomidou.mybatisplus.generator.config.OutputFile;importcom.baomidou.mybatisplus.gener......
  • Java比较两个实体属性值是否相同,将不同的属性输出
    /** *比较两个实体属性值,返回一个map以有差异的属性名为key,value为一个Map分别存oldObject,newObject此属性名的值 *@paramoldObject进行属性比较的对象1 *@paramnewObject进行属性比较的对象2 *@return属性差异比较结果map */ @SuppressWarnings("rawtypes")......
  • SqlSever表结构转C#实体类
    declare@TableNamesysname='repair_plan'declare@Resultvarchar(max)='///<summary>///'+@TableName+'///</summary>publicclass'+@TableName+'{'select@Result=@Result+'///......
  • 实体类
        ......
  • 实体类
        ......
  • C#获取对象实体的键值对信息
    ///<summary>///键值对///</summary>publicclassKv{///<summary>///键///</summary>publicstringKey{get;set;}///<summary>///值///</s......
  • java 给实体类赋默认值通用方法
    importjava.lang.reflect.Field;importjava.lang.reflect.Modifier;importjava.math.BigDecimal;importjava.sql.Date;importjava.sql.Timestamp;importjava.util.ArrayList;importjava.util.List;/***使用反射给实体类k赋值(默认值)*insertupdate会报null......
  • OpenAPI document 生成实体类
    根据 OpenAPIdocument 生成.net类包括Controllerclass Entityclass 支持输入yaml/json工具下载地址:NSwagStudio.msihttps://github.com/RicoSuter/NSwag/releases......
  • iOS 缩放等级 Set the Zoom Level of an MKMapView
    SettheZoomLevelofanMKMapViewhttp://troybrant.net/blog/2010/01/set-the-zoom-level-of-an-mkmapview/IfyouhaveeverbuiltawebapplicationusingtheGoogleMapsAPI,youarelikelyintimatelyfamiliarwiththislineofcode:map.set......