找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 407|回复: 0

[求助] C#新增一个字体样式无法应用到DbText

[复制链接]
发表于 2020-10-15 22:25:06 | 显示全部楼层 |阅读模式

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

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

×
想在C#代码中先创建一个样式,然后创建一个DBText,让Dbtext应用新建的样式,发现按如下代码操作后,Dbtext在图纸上都没看到,去掉设置Dbtext的样式ID的语句是OK的,请各位求教下,谢谢。


  1. [CommandMethod("SetFontNew")]
  2.         public void CreateMText()
  3.         {
  4.             //Database db = HostApplicationServices.WorkingDatabase;
  5.             Document doc = Application.DocumentManager.MdiActiveDocument;
  6.             Database db = doc.Database;
  7.             Editor ed = doc.Editor;
  8.             //DocumentLock dl = doc.LockDocument();
  9.             try
  10.             {
  11.                 ObjectId id = AddTextStyle2("宋体", "1", "3", 20, 20);
  12.                 using (Transaction tr = db.TransactionManager.StartTransaction())
  13.                 {
  14.                     BlockTable blockTbl = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
  15.                     BlockTableRecord modelSpace = tr.GetObject(blockTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
  16.                     MText mt = new MText();
  17.                     mt.Contents = "ABCDE";
  18.                     mt.TextStyleId = id;
  19.                     mt.Width = 3.5;
  20.                     mt.Height = 3.5;
  21.                     mt.Location = new Point3d(300, 300, 0);
  22.                     modelSpace.AppendEntity(mt);
  23.                     tr.AddNewlyCreatedDBObject(mt, true);
  24.                     tr.Commit();
  25.                 }
  26.             }
  27.             catch {

  28.             }
  29.             //dl.Dispose();
  30.         }
  31.         public static ObjectId AddTextStyle2(string name, string smallfont, string bigfont, double height, double xscale)
  32.         {
  33.             Document doc = Application.DocumentManager.MdiActiveDocument;
  34.             Database db = doc.Database;
  35.             Editor ed = doc.Editor;
  36.             //DocumentLock dl = doc.LockDocument();

  37.             using (Transaction tr = db.TransactionManager.StartTransaction())
  38.             {
  39.                 TextStyleTable TST = (TextStyleTable)tr.GetObject(db.TextStyleTableId, OpenMode.ForWrite);
  40.                 ObjectId id = GetIdFromSymbolTable2(TST, "test", db, tr);
  41.                 if (id == ObjectId.Null)
  42.                 {
  43.                     TextStyleTableRecord TSTR = new TextStyleTableRecord();

  44.                     //TextStyleTableRecord TSTR = new TextStyleTableRecord();
  45.                     TSTR.Name = "test";
  46.                     TSTR.Font = new ZwSoft.ZwCAD.GraphicsInterface.FontDescriptor("SimSun", false, false, 134, 2);


  47.                     //TSTR.Name = name;
  48.                     //TSTR.FileName = smallfont;
  49.                    // TSTR.BigFontFileName = bigfont;
  50.                     TSTR.TextSize = height;
  51.                     TSTR.XScale = 1;
  52.                     TST.UpgradeOpen();
  53.                     id = TST.Add(TSTR);
  54.                     tr.AddNewlyCreatedDBObject(TSTR, true);
  55.                 }
  56.                 tr.Commit();
  57.                 return id;
  58.             }

  59.         }

  60.         //取得符号表的Id
  61.         public static ObjectId GetIdFromSymbolTable2(SymbolTable st, string key, Database dbH, Transaction trans)
  62.         {
  63.             if (st.Has(key))
  64.             {
  65.                 ObjectId idres = st[key];
  66.                 if (!idres.IsErased)
  67.                     return idres;
  68.                 foreach (ObjectId id in st)
  69.                 {
  70.                     if (!id.IsErased)
  71.                     {
  72.                         SymbolTableRecord str = (SymbolTableRecord)trans.GetObject(id, OpenMode.ForRead);
  73.                         if (str.Name == key)
  74.                             return id;
  75.                     }
  76.                 }
  77.             }
  78.             return ObjectId.Null;

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

本版积分规则

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

GMT+8, 2024-4-24 06:59 , Processed in 0.203289 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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