Salı
AutoCAD, ProgramlamaAutocad .NET API ile programlamaya giriş.
Merhaba,
Bu yazıda amacım .Net 2.0 platformu dil ailesinin en popüler dili olan C# ile Autocad.Net API'sinin (Managed ObjectArx Wrapper'ın) nasıl kullanılacağını göstermek. Programlama ortamı olarak Visual Studio.Net 2005'i kullanacağız.
Autocad için .Net uygulaması yazmaya başlamadan önce ObjectArx SDK'yı (Uygulama Geliştirme Aracını) indirmeliyiz. ObjectArx SDK "utils\ObjARXWiz" klasörü içerisinde ObjectArx Sihirbazının kurulumunu (ArxWizard.msi) bulabililirsiniz. Sihirbaz kurulumunun tamamlanmasıyla birlikte AutoCAD Yönetilen(Managed) C# Projesi Visual Studio 2005 proje tiplerine eklenecektir. Artık başlamaya hazırız.
Visual Studio 2005 ile yeni bir proje oluşturmak için File->New->Project... sekmesini seçelim. Daha sonra, aşağıda Şekil-1 ve 2'de gösterildiği gibi, proje tipini (AutoCAD Managed C# Project), ismini, yerini ve kayıtlı geliştirici sembolünü (biz CNET sembolünü kullanacağız) sırayla belirleyerek AutoCAD.Net projesinin oluşturulmasını tamamlayalım.

Fig.1

Fig.2
AutoCAD Yönetilen C# Uygulama Sihirbazı bizim yerimize proje hazırlıklarını yapacak ve basit bir AutoCAD komutu tanımlamak için gerekli kodu oluşturacaktır. Visual Studio proje referanslarına göz attığımızda ise sihirbazın, AutoCAD.NET'e özgü acdbmgd.dll (ObjectArx AcDb ve ilişkili sınıflarını içerir) ve acmgd.dll (AutoCAD uygulama sınıflarını içerir) dosyalarını referans listesine eklediğini görebiliriz.
-
using System;
-
using Autodesk.AutoCAD.Runtime;
-
[assembly: CommandClass(typeof(CsMgdAcad.CNETCommands))]
-
namespace CsMgdAcad
-
{
-
///
-
/// Summary description for CNETCommands.
-
///
-
public class CNETCommands
-
{
-
public CNETCommands()
-
{
-
//
-
// TODO: Add constructor logic here
-
//
-
}
-
-
// Define Command "AsdkCmd1"
-
[CommandMethod("AsdkCmd1")]
-
static public void test() // This method can have any name
-
{
-
// Put your command code here
-
}
-
-
}
-
}
Code.1
Sihirbazın oluşturduğu yukardaki kodu inceleyecek olursak, CommandMethodAttribute için gerekli Autodesk.AutoCAD.Runtime isim uzayını projemize eklediğini ve uygulamamız için CNETCommands adlı bir sınıf oluşturduğunu görürüz. CNETCommands sınıfı içerisinde, komut metodları (CommandMethods) olarak bildirilen geridönüş fonksiyonları tanımlabilir. Bu geridönüş fonksiyonlarının erişilebilirlik anahtarı mutlaka public olmalıdır. Ayrıca bu fonksiyonların CNETCommands sınıfı içinde tanımlanması gibi bir zorunluluk da yoktur, public erişime sahip her sınıf içerisinde tanımlanabilir.
Artık Visual Studio 2005 ortamında Build->Build CsMgdAcad sekmesini seçerek derlediğimiz sonuç dll'yi (bizim için ..\Release\ CsMgdAcad.dll yada ..\Debug\ CsMgdAcad.dll) yüklemek için AutoCAD Netload komutu kullanabiliriz.
AutoCAD şimdilik, .Net modüllerini, ObjectArx yada AutoLisp uygulamalarında olduğu gibi AutoCAD açılışında otomatik olarak yükleyen bir komut sağlamamaktadır. Ama bir kayıt defteri dosyası (*.reg) hazırlayarak otomatik yükleme kolaylıkla yapılabilir. Bu dosyanın nasıl hazırlanacağı aşağıda gösterilmiştir.
Autocad.Net Modülünün (Dll'sinin) Otomatik Yüklenmesi
Autocad 2009 için,
[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R17.2\ACAD-7001:409\Applications\UygulamaAdi]
Autocad 2007 için,
[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R17.0\ACAD-5001:409\Applications\UygulamaAdi]
uygulama anahtarını oluşturduktan sonra aşağıdaki açıklanan değerleri bu anahtara ekleyebiliriz .
DESCRIPTION : Uygulama modülünün tanımı
LOADER : Uygulama yolu
LOADCTRLS : Uygulamanın yüklenme nedenini açıklayan sayısal bir DWORD değeri (2 alınabilir)
MANAGED : .Net modülleri için hep "1" olan bir DWORD değeri.
Örnek bir kayıt defteri dosyasını proje ekinde bulabilirsiniz.
Referanslar:
Getting started with AutoCAD and .NET
Automatic loading of .NET modules
Viewed 476 kere okunmus. Bu hafta: 7 Bu gun: 3 En son: 3 December 2008, 5:23Post Tags: AutoCAD, Programlama
Related Posts
Popular
- DOGRULT.LSP: Seçilen Çizgiyi En Yakın Dik Açıya Getirir
12/03/2008 10:14 am
3 Comments - 289 Adet elektrik sembolü Download köşemizde
12/02/2008 10:06 pm
5 Comments - Bilgisayar Tarihi 2
12/01/2008 05:58 pm
2 Comments - Gelecek Nesil Depolama Ortamı: SSD (Katı Halli Disk)
11/28/2008 07:51 pm
2 Comments - Kaynak Kodlarınızı Web Sayfanızda Fiyakalı Gösterin
11/27/2008 05:35 pm
1 Comment
Eyl 2, 2008
Yanıtla
Esen bey; çok güzel bir konuya el attığınızı düşünüyorum.Ne zamandır bu site uykuda duruyor.Hem bir canlanma hem de siteyi ziyaret edenlerin daha teknik ve daha yaratıcı kaynaklara ulaşmasını tetikleyeceği umudu oldu. Yalnız, bu işlediğiniz konunun acaba C# ile değil de VB.NET ile olması mümkün müdür? Kolay gelsin.
Eyl 3, 2008
Yanıtla
Mehmet Bey, C# VB.NET’e göre daha çok kullandığım ve daha iyi bildiğim bir dil. Bu yüzden AutoCAD.NET ile ilgili makaleleri hep C#’la yazmayı düşünüyorum. Ama C# kodunu VB.NET koduna çeviren ücretsiz web tabanlı çeviriciler var. Onları kullanabilirsiniz.
http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx
http://www.kamalpatel.net/ConvertCSharp2VB.aspx
http://www.carlosag.net/Tools/CodeTranslator/