明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2716|回复: 3

[求助]如何将DBText定位并缩放合适大小到屏幕中央

[复制链接]
发表于 2009-10-29 15:09:00 | 显示全部楼层 |阅读模式

如何将DBText定位并缩放合适大小到屏幕中央,其中缩放合式大小指比如说整个屏幕能放15同样的DBText;

在开发文档中有一个zoom方法,真不知这些参数如何设置;

我是新学,一些概念真不懂,谢谢了;

 楼主| 发表于 2009-10-29 15:12:00 | 显示全部楼层

就是缩放到整个屏幕一行能放15个“中国人民”字样,请高手指点

发表于 2009-10-29 17:25:00 | 显示全部楼层
简单的办法就是调用Zoom命令
或者试下下面的ZoomWindow
  1.         public enum UcsCode
  2.         {
  3.             Wcs = 0,
  4.             Ucs,
  5.             MDcs,
  6.             PDcs
  7.         }
  8.         [DllImport("acad.exe", CallingConvention = CallingConvention.Cdecl)]
  9.         private static extern int acedTrans(
  10.             double[] point,
  11.             IntPtr fromResbuf,
  12.             IntPtr toResbuf,
  13.             int displacement,
  14.             double[] result
  15.         );
  16.         public static double[] Trans(double[] point, UcsCode from, UcsCode to)
  17.         {
  18.             ResultBuffer rbfrom = new ResultBuffer(new TypedValue((int)LispDataType.Int16, from));
  19.             ResultBuffer rbto = new ResultBuffer(new TypedValue((int)LispDataType.Int16, to));
  20.             double[] res = new double[2];
  21.             acedTrans(point, rbfrom.UnmanagedObject, rbto.UnmanagedObject, 0, res);
  22.             return res;
  23.         }
  24.         public static Point2d Wcs2Dcs(Point3d point, bool atPaperSpace)
  25.         {
  26.             double[] res =
  27.                 Trans(
  28.                     point.ToArray(),
  29.                     UcsCode.Wcs, atPaperSpace ? UcsCode.PDcs : UcsCode.MDcs);
  30.             return new Point2d(res);
  31.         }
  32.         public void ZoomWindow(Point3d minPoint, Point3d maxPoint)
  33.         {
  34.             Document doc = Application.DocumentManager.MdiActiveDocument;
  35.             Editor ed = doc.Editor;
  36.             ViewTableRecord cvtr = ed.GetCurrentView();
  37.             ViewTableRecord vtr = new ViewTableRecord();
  38.             vtr.CopyFrom(cvtr);
  39.             Point3d[] oldpnts = new Point3d[] { minPoint, maxPoint };
  40.             Point3d[] pnts = new Point3d[8];
  41.             Point2d[] pnt2ds = new Point2d[8];
  42.             for (int i = 0; i < 2; i++)
  43.             {
  44.                 for (int j = 0; j < 2; j++)
  45.                 {
  46.                     for (int k = 0; k < 2; k++)
  47.                     {
  48.                         int n = i * 4 + j * 2 + k;
  49.                         pnts[n] = new Point3d(oldpnts[i][0], oldpnts[j][1], oldpnts[k][2]);
  50.                         pnt2ds[n] = Wcs2Dcs(pnts[n], false);
  51.                     }
  52.                 }
  53.             }
  54.             double xmin, xmax, ymin, ymax;
  55.             xmin = xmax = pnt2ds[0][0];
  56.             ymin = ymax = pnt2ds[0][1];
  57.             for (int i = 1; i < 8; i++)
  58.             {
  59.                 xmin = Math.Min(xmin, pnt2ds[i][0]);
  60.                 xmax = Math.Max(xmax, pnt2ds[i][0]);
  61.                 ymin = Math.Min(ymin, pnt2ds[i][1]);
  62.                 ymax = Math.Max(ymax, pnt2ds[i][1]);
  63.             }
  64.             vtr.Width = xmax - xmin;
  65.             vtr.Height = ymax - ymin;
  66.             vtr.CenterPoint = pnt2ds[0] + (pnt2ds[7] - pnt2ds[0]) / 2;
  67.             ed.SetCurrentView(vtr);
  68.             ed.Regen();
  69.         }

发表于 2010-9-30 15:26:00 | 显示全部楼层
学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 01:54 , Processed in 0.153364 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表