我正在使用C#编写一个AutoCAD插件,需要在带阴影的对象(例如,圆的中心)的中间显示HATCH的属性. 我在代码中有两个问题:
-
怎么才能进入圆心呢?
-
我怎样才能得到舱口的财产?
我在AUTOCAD中的这条线上遇到错误.
acText.TextString = hatch.Area.ToString(); // Area of hatch
下面是主要摘自Stackflow的代码.
[CommandMethod("DisplyArea")]
public static void SelectCirclesToHatch()
{
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);
int vr = 1;
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 });
using (var hatch = new Hatch())
{
curSpace.AppendEntity(hatch);
tr.AddNewlyCreatedDBObject(hatch, true);
hatch.SetHatchPattern(HatchPatternType.PreDefined, "ANSI31");
hatch.Associative = true;
hatch.AppendLoop(HatchLoopTypes.Outermost, ids);
hatch.EvaluateHatch(true);
DBText acText = new DBText();
//它需要是CIRCLE.CENTER,但我如何访问它?
acText.Position = new Point3d(2,2,0);
acText.TextString = hatch.Area.ToString(); // Area of hatch
acText.Height = 0.5;
curSpace.AppendEntity(acText);
tr.AddNewlyCreatedDBObject(acText, true);
}
}
tr.Commit();
}
}
有什么解决办法吗?