2020年10月26日月曜日

ACBファイルの色値を調べる

 ACBファイル (Autodesk Color Book) はXMLファイルで、色のデータベースである。AutoCADに添付されているACBファイルの色値は暗号化されていてそのままでは確認できない。COLORダイアログで調べるのも億劫である。

下記のコードは、ダイアログボックスからACBファイルを指定すると、そのカラーブック名と色名、色値をコマンドウィンドウに表示する。


using Autodesk.AutoCAD.ApplicationServices;

using Autodesk.AutoCAD.Colors;

using Autodesk.AutoCAD.EditorInput;

using Autodesk.AutoCAD.Runtime;

using System.Xml;


namespace csSample1

{

    public class Class1

    {

        /// <summary>

        /// ACBVIEWERコマンド

        /// </summary>

        [CommandMethod("ACBVIEWER")]

        public void cmdAcbViewer()

        {

            // Specify ACB file

            Document doc = Application.DocumentManager.MdiActiveDocument;

            Editor ed = doc.Editor;

            PromptOpenFileOptions options = new PromptOpenFileOptions("Specify color book file");

            options.Filter = "Color book file(*.acb)|*.acb|All file(*.*)|*.*";

            options.FilterIndex = 0;

            PromptFileNameResult result = ed.GetFileNameForOpen(options);

            if (result.Status != PromptStatus.OK)

                return;

            // Print book name in ACB file

            Color color = doc.Database.Cecolor;

            string bookName = "";

            string colorName = "";

            XmlDocument xdoc = new XmlDocument();

            xdoc.Load(result.StringResult);

            foreach(XmlElement elem in xdoc.GetElementsByTagName("bookName"))

            {

                bookName = elem.InnerText;

                ed.WriteMessage("\nBookName = {0}", bookName);

            }

            // Print all color name and value in ACB file

            foreach (XmlElement elem2 in xdoc.GetElementsByTagName("colorName"))

            {

                colorName = elem2.InnerText;

                color = Color.FromNames(colorName, bookName);

                ed.WriteMessage("\nColorName = {0} RGB=({1},{2},{3})", colorName, color.Red, color.Green, color.Blue);

            }

        }

    }

}


0 件のコメント:

コメントを投稿

ARESのトリニティ(三位一体)

 ARESのトリニティ戦略、どこがトリニティなんでしょう。 まずはデスクトップCADが、WindowsにもMacにもLinux版もあるというトリニティ。 デスクトップCADと、モバイルCAD(ARES Touch)と、ブラウザとサーバーCAD(ARES Kudo)のトリニティ。 ...