簡體   English   中英

c#,autocad 插件,更新 object 屬性的文本

[英]c#, autocad plugins, Updating text of object properties

我需要編寫 AutoCAD 插件來顯示 object 的區域。下面是我的代碼。

它工作正常,但測試是 static。我需要繼續跟蹤圓cir.Area.ToString()的面積;。 目前,如果我稍后更改圓圈的大小,文本將不再更改。 例如,我的圓的面積是 10。我運行代碼,它顯示 10。但是如果我改變圓的半徑,文本仍然是 10。我怎樣才能讓它工作。

[CommandMethod("displayarea")]
public static void Displayarea()
{
    var doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
    var db = doc.Database;
    var ed = doc.Editor;
    var filter = new SelectionFilter(new[] { new TypedValue(0, "Circle") });
    var selection = ed.GetSelection(filter);


    if (selection.Status != PromptStatus.OK)
        return;
    using (var tr = db.TransactionManager.StartTransaction())
    {
        var curSpace = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
        foreach (var id in selection.Value.GetObjectIds())
        {
            var ids = new ObjectIdCollection(new[] { id });

            Circle cir = (Circle)tr.GetObject(id, OpenMode.ForRead) as Circle;
            var _centerPosition = cir.Center;

                using (DBText acText = new DBText())
                {
                    acText.Position = _centerPosition;
                    acText.TextString = cir.Area.ToString();
                    acText.Height = 0.5;
                    curSpace.AppendEntity(acText);
                    tr.AddNewlyCreatedDBObject(acText, true);
                }

        }
        tr.Commit();
    }
}

您也可以使用oEntity.Modified += OEntity_Modified;

查找: 查找在修改事件時更改了哪些屬性

它通過更換工作

cir.Area.ToString();

string circarea = "%<\\AcObjProp Object(%<\\_ObjId "
                                    + CircleId
                                    + ">%).Area \\f \"%lu2\">%";

您需要使用fields

找到這個: https://www.keanw.com/2007/07/accessing-the-a.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM