找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1889|回复: 0

C#下是否有等同fromAcDbTextStyle()的实现方法

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2021-1-31 03:00:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Equivalent to fromAcDbTextStyle() under C# (.NET)

Issue
Is there any way to use the fromAcDbTextStyle() function in my .NET application?

解答:
One workaround for your issue is to use standard .NET P/Invoke technique. The sample below shows code for importing “fromAcDbTextStyle” in .NET.
  1.     [DllImport("acdb18.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl,
  2.     EntryPoint = ?fromAcDbTextStyle@@YA?AW4ErrorStatus@Acad@@AAVAcGiTextStyle@@PB_W@Z)]
  3.     private static extern ErrorStatus fromAcDbTextStyle(System.IntPtr style, string styleName);
  4.     [CommandMethod("getTextStrWidth")]
  5.     public void getTextStrWidth()
  6.     {
  7.       Document doc = Application.DocumentManager.MdiActiveDocument;
  8.       Database db = doc.Database;
  9.       Editor ed = doc.Editor;
  10.       PromptResult pr = ed.GetString("\nEnter a string: ");
  11.       if (pr.Status != PromptStatus.OK) return;
  12.       using (Transaction Tx = db.TransactionManager.StartTransaction())
  13.       {
  14.         TextStyleTable TxtStlTbl = Tx.GetObject(db.TextStyleTableId, OpenMode.ForRead) as TextStyleTable;
  15.         string styleName = "STANDARD";
  16.         if (!TxtStlTbl.Has(styleName))
  17.         {
  18.           ed.WriteMessage("\nStyle " + styleName + " doesn't exist :(");
  19.           return;
  20.         }
  21.         Autodesk.AutoCAD.GraphicsInterface.TextStyle iStyle = new Autodesk.AutoCAD.GraphicsInterface.TextStyle();
  22.         if (fromAcDbTextStyle(iStyle.UnmanagedObject, styleName) == ErrorStatus.OK)
  23.         {
  24.           Extents2d ex = iStyle.ExtentsBox(pr.StringResult, true, true, null);
  25.           double width = ex.MaxPoint.X - ex.MinPoint.X;
  26.           double height = ex.MaxPoint.Y - ex.MinPoint.Y;
  27.           ed.WriteMessage("\n-Width = " + width.ToString() + "\n-Height = " + height.ToString());
  28.         }
  29.       }
  30.     }


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-14 18:43 , Processed in 0.367089 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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