55325


ブロック定義内の図形を直接編集するコーディング方法を教えて下さい。  
例えばブロック定義内の円図形の半径を変更する、など。

過去には一度ブロックを分解して、編集、再度ブロック化といった手順で行っておりましたが、現在はブロックの分解は不要というようなお話を伺いました。

もし、サンプルコード等があればご提示いただけると助かります。

以上、よろしくお願いします。


CC BY-SA 4.0
2019-05-28T11:13:16.050
55316
2019-05-29T01:16:52.690
34508
question
.net ijcad arx
ブロック定義内の図形を直接編集するコーディング方法を教えて下さい。


ブロック内の円を選択して、円の半径を入力した半径に変更するサンプルコードです。

[code]

    public void TestCommand()
    {
        var db = Application.DocumentManager.MdiActiveDocument.Database;
        var ed = Application.DocumentManager.MdiActiveDocument.Editor;
        var nentres = ed.GetNestedEntity("\nSelect nested circle");
        if (nentres.Status != PromptStatus.OK) return;
        using (var tr = db.TransactionManager.StartTransaction())
        {
            foreach(var id in nentres.GetContainers())
            {
                using (var insert = tr.GetObject(id, OpenMode.ForRead) as BlockReference)
                {
                    if (insert == null) continue;
                    using (var circle = tr.GetObject(nentres.ObjectId, OpenMode.ForWrite) as Circle)
                    {
                        if (circle == null) continue;
                        var dblopt = new PromptDoubleOptions("\nInput radius");
                        dblopt.DefaultValue = circle.Radius;
                        dblopt.UseDefaultValue = true;
                        var dblres = ed.GetDouble(dblopt);
                        if (dblres.Status != PromptStatus.OK) return;
                        circle.Radius = dblres.Value;
                    }
                }
            }
            tr.Commit();
        }
        ed.Regen();
    }
    
[/code]


CC BY-SA 4.0
2019-05-29T01:16:52.690
55325
2019-05-29T01:16:52.690
55316
answer