冰凌_寒露 发表于 2017-8-11 17:48:48

求助

c#开发插件 出现 错误        5        “Autodesk.AutoCAD.DatabaseServices.MText”不包含“TextStyle”的定义,并且找不到可接受类型为“Autodesk.AutoCAD.DatabaseServices.MText”的第一个参数的扩展方法“TextStyle”(是否缺少 using 指令或程序集引用?)        代码:
//控制文字长度
      
      public void wztkdbl()
      {
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            Database db = HostApplicationServices.WorkingDatabase;
            ed.WriteMessage("\n通过修改文字高宽比控制文字长度");

            //Wch2.FilterType dbmextType = Wch2.FilterType.Text;
            //Wch2.FilterType mtextType = Wch2.FilterType.MText;

            Wch2.FilterType[] Types = new Wch2.FilterType;
            Types = Wch2.FilterType.Text;
            Types = Wch2.FilterType.MText;
            Types = Wch2.FilterType.Dimension;
            DBObjectCollection EntityCollection = Wch2.GetS(Types);
            if (EntityCollection == null)
                return;

            PromptDistanceOptions xzkd = new PromptDistanceOptions("\n文字限制宽度");
            PromptDoubleResult kdjg = ed.GetDistance(xzkd);
            if (kdjg.Status != PromptStatus.OK)
                return;
            double k = kdjg.Value;
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                foreach (DBObject odb in EntityCollection)
                {
                  ObjectId odbid = odb.Id;
                  Entity ent = tran.GetObject(odbid, OpenMode.ForWrite) as Entity;

                  if (ent is DBText)
                  {
                        DBText dbt = (DBText)ent;
                        TextStyleTableRecord tstr = (TextStyleTableRecord)tran.GetObject(dbt.TextStyle, OpenMode.ForRead);//读取当前字体
                        double zkbl = tstr.XScale;//当前字体高宽比
                        double cd;
                        double jd = dbt.Rotation;
                        int n = 0;
                        do
                        {
                            dbt.WidthFactor = zkbl - 0.01 * n;
                            dbt.Rotation = 0;
                            Extents3d wzd = dbt.GeometricExtents;
                            cd = wzd.MaxPoint.X - wzd.MinPoint.X;
                            n++;
                        } while (cd > k);
                        dbt.Rotation = jd;
                  }
                  if (ent is MText)
                  {
                        MText mtt = (MText)ent;
                        TextStyleTableRecord tstr = (TextStyleTableRecord)tran.GetObject(mtt.TextStyle, OpenMode.ForRead);//读取当前字体
                        double zkbl = tstr.XScale;//当前字体高宽比
                        double zk;
                        string wznr = mtt.Text;
                        int n = 0;
                        do
                        {
                            mtt.Contents = "{\\W" + (zkbl - n * 0.01) + ";" + wznr + "}";
                            zk = mtt.ActualWidth;
                            n++;
                        } while (zk > k);
                  }
                  if (ent is Dimension)
                  {
                        Dimension dim = (Dimension)ent;
                        MText mte = new MText();
                        mte.TextStyle = dim.Dimtxsty;
                        mte.TextHeight = dim.Dimtxt;
                        string str;
                        string str1;
                        string str2;
                        string str3;
                        TextStyleTableRecord tstr = (TextStyleTableRecord)tran.GetObject(mte.TextStyle, OpenMode.ForRead);//读取当前字体
                        double zkbl = tstr.XScale;//当前字体高宽比
                        if (dim.DimensionText != "" && !dim.DimensionText.Contains("<>"))
                        {
                            str = dim.DimensionText;
                            mte.Contents = str;
                            str2 = mte.Text;
                        }
                        else
                        {
                            double bznr = Math.Round(dim.Measurement, dim.Dimdec);
                            str = bznr.ToString();
                            mte.Contents = str;
                            str2 = "<>";
                        }
                        str1 = mte.Text;
                        double zk;
                        int n = 0;
                        do
                        {
                            str3 = "{\\W" + (zkbl - n * 0.01) + ";";
                            mte.Contents = str3 + str1 + "}";
                            zk = mte.ActualWidth;
                            n++;
                        } while (zk > k);
                        dim.DimensionText = str3 + str2 + "}";
                  }
                }



寒弓冰弦 发表于 2017-8-11 18:04:26

你好,这个是.net开发CAD用到的,请你在C#开发板块提问吧。
页: [1]
查看完整版本: 求助