Etiketli Blok Referans Oluşturumak
AutoCAD.Net (C#) ile etiketli bir blok tanımının nasıl oluşturulacağını bir önceki yazımda göstermeye çalışmıştım. Mevcut bir blok tanıma ait referansın çizime nasıl ekleneceğini merak ediyorsanız aşağıdaki kaynak kodu inceleyebililirsiniz.
using System;
using System.Collections.Generic;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
[assembly: CommandClass(typeof(BlokOlusturma.Commands))]
namespace BlokOlusturma
{
public class Commands
{
[CommandMethod("AbcProgramlama", "BlokOlustur", "BlkOls", CommandFlags.Modal)]
public void EtiketliBlokOlusturma()
{
// Blok ismi
string blockName = "ETIKETLI-NOKTA";
// Blok konum noktası
Point3d insPnt = new Point3d();
// 1. Bloğumuzun içereceği nesneleri oluşturması
// Bloğumuz bir daire ve bu dairenin ortasında nokta numarasını
// bize gösterecek bir etiketten oluşacak
// 1a. Daire nesnesinin oluşturulması
Circle circle = new Circle(insPnt, Vector3d.ZAxis, 0.20d);
circle.ColorIndex = 1;
// 1b. Etiketin oluşturulması
AttributeDefinition attDef = new AttributeDefinition();
attDef.SetDatabaseDefaults();
attDef.HorizontalMode = TextHorizontalMode.TextCenter;
attDef.VerticalMode = TextVerticalMode.TextVerticalMid;
attDef.TextString = "";
attDef.Tag = "No";
attDef.Prompt = "Nokta numarası";
attDef.Rotation = 0.0d;
attDef.Height = 0.15d;
attDef.AlignmentPoint = insPnt;
attDef.ColorIndex = 4;
// 2. Block kaydının oluşturulması :
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
using (Transaction tr = db.TransactionManager.StartTransaction())
{
// Çizim blok tablosuna erişim
BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
// Blok kaydının blok tablosundaki varlığının kontrolü
if (!bt.Has(blockName))
{
BlockTableRecord btr = new BlockTableRecord();
// Blok kayıt özelliklerinin ayarlanması
btr.Name = blockName;
btr.Origin = insPnt;
// Blok kaydının blok tablosuna eklenmesi
bt.UpgradeOpen();
ObjectId btrId = bt.Add(btr);
tr.AddNewlyCreatedDBObject(btr, true);
// Biraz önce oluşturduğumuz nesnelerin blok kaydına eklenmesi
btr.AppendEntity(circle);
tr.AddNewlyCreatedDBObject(circle, true);
btr.AppendEntity(attDef);
tr.AddNewlyCreatedDBObject(attDef, true);
// İşlemlerin onaylanması
tr.Commit();
}
}
}
}
}
Yorum yapın