Ortaklarımız: Ant Mekanik , Teknova Shop , Taliasoft

AutoCAD Gunlugu

Üye Girişi

RSS

Autocad Günlüğü RSS besleyicisine üye ol.


Eyl 02
Salı
AutoCAD, Programlama
Autocad .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.

C:
  1. using System;
  2. using Autodesk.AutoCAD.Runtime;
  3. [assembly: CommandClass(typeof(CsMgdAcad.CNETCommands))]
  4. namespace CsMgdAcad
  5. {
  6. ///
  7. /// Summary description for CNETCommands.
  8. ///
  9. public class CNETCommands
  10. {
  11. public CNETCommands()
  12. {
  13. //
  14. // TODO: Add constructor logic here
  15. //
  16. }
  17.  
  18. // Define Command "AsdkCmd1"
  19. [CommandMethod("AsdkCmd1")]
  20. static public void test() // This method can have any name
  21. {
  22. // Put your command code here
  23. }
  24.  
  25. }
  26. }

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:23

Post Tags: ,

2 Yorum to “ Autocad .NET API ile programlamaya giriş. ”
  1. Mehmet Baydar

    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.

  2. Esen Yalım Karaduman

    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/


Yorum bırakın:



All content and source © 2008 Autocad Günlüğü | News Plus wordpress theme brought to you by Zidalgo.