1
このコードは正しく動作しません。線とポリラインは描画されませんが、レイヤが作成されます。私はこの問題が取引に関係するかもしれないとは思いますが、わかりませんし、解決する方法もわかりません。コードはレイヤーを作成しますが、オートキャドで線を描画しません
このメソッドは、作成メソッドにパラメータを送信します。
public static void DrawingLines()
{
Document document = Application.DocumentManager.MdiActiveDocument;
Database database = document.Database;
// Verificando a existencia dos Layers, caso não existam, são criados
CreatingLayer("P04", 4);
CreatingLayer("TEXTO", 3);
CreatingLayer("P01", 1);
// Start a transaction
using (Transaction transactionManager =
database.TransactionManager.StartTransaction())
{
// Cria o triangulo da função
var acPoly = new Polyline();
acPoly.AddVertexAt(0, new Point2d(Variaveis.pt.X - 225,
Variaveis.pt.Y - 175), 0, 0, 0);
acPoly.AddVertexAt(1, new Point2d(Variaveis.pt.X + 225,
Variaveis.pt.Y - 175), 0, 0, 0);
acPoly.AddVertexAt(2, new Point2d(Variaveis.pt.X + 225,
Variaveis.pt.Y - 55), 0, 0, 0);
acPoly.AddVertexAt(3, new Point2d(Variaveis.pt.X - 225,
Variaveis.pt.Y - 175), 0, 0, 0);
acPoly.Layer = "P01";
// Desenha a linha central cyan
var acLine = new Line()
{
StartPoint = new Point3d(Variaveis.pt.X + 53, Variaveis.pt.Y -
270, 0),
EndPoint = new Point3d(Variaveis.pt.X + 53, Variaveis.pt.Y -
513, 0)
};
acLine.Layer = "P04";
// Add the new object to the block table record
AddToModelSpace(acPoly);
AddToModelSpace(acLine);
}
}
このメソッドは、レイヤーが存在するかどうかをチェックします。存在しない場合は作成されます。このメソッドは、モデル空間内のエンティティを挿入
public static void AddToModelSpace(Entity ent)
{
Document document = Application.DocumentManager.MdiActiveDocument;
Database database = document.Database;
using (Transaction tr = database.TransactionManager.StartTransaction())
{
var blTbl = tr.GetObject(database.BlockTableId, OpenMode.ForRead) as
BlockTable;
var blTblRec = tr.GetObject(blTbl[BlockTableRecord.ModelSpace],
OpenMode.ForWrite) as BlockTableRecord;
blTblRec.AppendEntity(ent);
tr.AddNewlyCreatedDBObject(ent, true);
tr.Commit();
}
}
@ erik-philips今、私のコードは完全に機能しました。どうもありがとうございました! –
@ erik-philips私はプログラミングが初めてです。もう一度、ありがとう! –