|
发表于 2010-12-8 13:52:00
|
显示全部楼层
[code]
[CommandMethod("tt4")]
public void test24()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
Database db = doc.Database;
string blkname = "Test";
using (Transaction tr = db.TransactionManager.StartTransaction())
{
BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
ObjectId blkdefid = GetRecorId(tr, bt, blkname);
if (blkdefid == ObjectId.Null)
{
BlockTableRecord blkdef = new BlockTableRecord { Name = blkname };
bt.UpgradeOpen();
blkdefid = bt.Add(blkdef);
tr.AddNewlyCreatedDBObject(blkdef, true);
bt.DowngradeOpen();
List loopents =
new List
{
new Arc(Point3d.Origin, 10, 0, Math.PI),
new Line(new Point3d(-10, 0, 0), new Point3d(10, 0, 0))
};
ObjectIdCollection loopids =
new ObjectIdCollection(
loopents.Select(ent => AddEntity(tr, blkdef, ent)).ToArray());
Hatch hatch = new Hatch();
hatch.SetDatabaseDefaults();
hatch.SetHatchPattern(HatchPatternType.PreDefined, "angle");
hatch.Associative = false;
hatch.AppendLoop(HatchLoopTypes.Outermost, loopids);
hatch.EvaluateHatch(true);
loopents.ForEach(ent => ent.Erase());
List ents =
new List
{
new Circle(Point3d.Origin, Vector3d.ZAxis, 10),
new Line(new Point3d(-15, 0, 0), new Point3d(15, 0, 0)),
hatch
};
int i = 1;
ents.ForEach(ent => { ent.ColorIndex = i++; AddEntity(tr, blkdef, ent); });
}
BlockReference bref = new BlockReference(Point3d.Origin, blkdefid);
BlockTableRecord btr = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
AddEntity(tr, btr, bref);
tr.Commit();
}
}
///
/// 在符号表中获取对应键值的记录Id
///
/// 符号表
/// 记录键值
/// 对应键值的记录Id
public static ObjectId GetRecorId(Transaction tr, T table, string key) where T : SymbolTable
{
if (table.Has(key))
{
if (Application.Version.Major (tr);”不能通过编译,
|
|