namezg 发表于 2011-12-18 19:23:28

如何更改当前标注样式中的文字样式而不生成标注样式替代.

1.如何更改当前标注样式中的文字样式而不生成标注样式替代.
2.如何删除已有的标注样式替代.

http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 namezg的微博

caoyin 发表于 2011-12-18 19:31:00

1.(command "_.DIMSTYLE" "_SAVE")
2.标注样式替代是因为相关系统变量被修改但又为保存到当前样式,当当前样式被修改即不现实样式替代,无需删除也无法删除

vormittag 发表于 2011-12-18 19:37:56

标注样式替代是作为扩展数据写入标注图元的,应该可以通过删除图元扩展数据恢复成默认的标注样式。

Leo1980 发表于 2018-1-19 15:30:53

第一个问题
public static void SetDimStyleCurrent(string DimStyleName)
{
    // Establish connections to the document and its database
    Document doc = Application.DocumentManager.MdiActiveDocument;
    Database db = doc.Database;

    // Establish a transaction
    using (Transaction tr = doc.TransactionManager.StartTransaction())
    {
      DimStyleTable dst = (DimStyleTable)tr.GetObject(db.DimStyleTableId, OpenMode.ForRead);
      ObjectId dimId = ObjectId.Null;

      string message = string.Empty;
      if (!dst.Has(DimStyleName))
      {
            CreateModifyDimStyle(DimStyleName, out message);
            dimId = dst;
      }
      else
            dimId = dst;

      DimStyleTableRecord dstr = (DimStyleTableRecord)tr.GetObject(dimId, OpenMode.ForRead);

      /* NOTE:
         * If this code is used, and the updated style is current,
         * an override is created for that style.
         * This is not what I wanted.
         */
      //if (dstr.ObjectId != db.Dimstyle)
      //{
      //    db.Dimstyle = dstr.ObjectId;
      //    db.SetDimstyleData(dstr);
      //}

      /* Simply by running these two lines all the time, any overrides to updated dimstyles get
         * cleared away as happens when you select the parent dimstyle in AutoCAD.
         */
      db.Dimstyle = dstr.ObjectId;
      db.SetDimstyleData(dstr);

      tr.Commit();
    }
}

关键在于
db.Dimstyle = dstr.ObjectId;
db.SetDimstyleData(dstr);
要两句一起用,我之前也是只用一句,总是有个替代

LIULISHENG 发表于 2018-1-24 08:54:24

页: [1]
查看完整版本: 如何更改当前标注样式中的文字样式而不生成标注样式替代.