AutoCAD’i Bağımsız Çalıştırılabilen bir Exe Dosyasından Kontrol Etme

Geçenlerde birkaç site kullanıcımız VBA’da AutoCAD‘i kontrol edecek bir exe dosyasının nasıl yaratılacağı hakkında bazı sorular sormuştu. Bunun üzerine bu konuyu tüm yönleri ile ele alan bir makale yazmaya karar verdim. Genellikle NETLOADed dll dosyasının kullanımı AutoCAD içerisine iyi entegre olmuş araçlarsa sahip olsa da, bazen bir exe dosyasını kullanmak daha zarif ve şık bir çözüm olabilmektedir.

Genel kavramlar oldukça açıktırlar.

  1. AutoCAD‘in hali hazırda çalmakta olup olmadığını kontrol edin ve AutoCAD‘e başvuran bir referans yaratın.
  2. AutoCAD‘i kontrol etmek için COM kullanın.

Yukarıdaki bu listeyi yazmaya başladığım zaman, listenin çok uzun olacağını bekliyordum – fakat gerekli olan adımların hepsi bu kadar. Şayet VBA konusunda ileri düzeyde bir kullanıcıysanız, COM kullanıyor olduğumuzu duyduğunuz için, memnun olacağınızı düşünüyorum. Daha önceden öğrenmiş olduğunuz tüm VBA kodlarını rahatlıkla tekrar kullanabilirsiniz.

Şimdi haydi aşağıdaki şekildeki gibi bir basit şekil çizelim:

Sekil-1

Evet tamamdır – bu şekil kolaylıkla bir sürekli çizgi “polyline” ile yaratılabilir. İşte bizim exe dosyamız da tam olarak bunu yapacak.

İlk yapacağımız iş düşünmek olacaktır. Visual Basicde (VB) bağımsız bir exe projesi yaratın. Bunun için VB.NET veya VB6 yazılımını kullanabilirsiniz. Özel bir NET açık ortam çerçevesi “framework” ya da onun gibi bir şeyi kullanma konusunda endişelenmeye gerek duymayacaksınız. COM kullanıyor olduğumuz için, bu sorunlarının çevresinden dolaşacağız.

Bu yüzden, VB6 ile devam edeceğim; bu program biraz eskidi ama konumuzu çok iyi anlatıyor. Programı çalıştırdıktan sonra Yeni Proje “New Project” > Standard EXE seçeneğini seçin.

İlk olarak, kodumuz içerisinden AutoCAD’e bir referans yaratmaya ihtiyaç duyacağız. Bunu yapmak için, exe projemiz içerisine ilişkili AutoCAD tip kütüphanelerini yüklememiz gerekecektir.

Bunu gerçekleştirmek için, Proje “Project” > Referanslar “References” komutuna gidin. Buradan kullandığınız AutoCAD sürümüne bağlı olarak uygun AutoCAD tip kütüphanelerini seçeceğiz. Uygun AutoCAD tip kütüphanelerini yüklediğimizde, AutoCAD için yazılmış olan değişkenleri yaratabileceğiz ve kendi kodumuzu yazabileceğiz. Bu makalemdeki örnekte Form değişkeninin kullanımı ile ilgilenmiyorum. Bu Form değişkenini sadece Yükleme “Load” olayı için bir yaşıyıcı olarak kullanıyoruz:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

Private Sub Form_Load()

Dim ACAD As AcadApplication 'Yazılan Acad Uygulamasının ACAD değişkenini yaratma

'On Error Resume Next 'Bu VBA’ya hataları önemsememesini söyler

Set ACAD = GetObject(, "AutoCAD®.Application") 'Get a running instance of the class AutoCAD.Application

'On Error GoTo 0 'Bu hataları ihmal etmemek için,  VBA’ya geri gitmesini söyler

If ACAD Is Nothing Then 'Kodun yukarıdaki kısmının çalışıp çalışmadığını kontrol etmek için

Set ACAD = New AcadApplication ' ACAD değişkenini AutoCAD’in yeni durumuna ayarlama

ACAD.Visible = True 'Yüklendiğinde, AutoCAD’i görülebilir olarak ayarlama

End If

Dim llCorner As Variant

llCorner = ACAD.ActiveDocument.Utility.GetPoint(, "Pick the lower left corner for the shape")

'Sol alt köşesinden başlayarak şekli çizme

Dim coords(11) As Double

'Şeklin sol alt köşesi

coords(0) = llCorner(0)

coords(1) = llCorner(1)

'Şeklin sağ alt köşesi

coords(2) = llCorner(0) + 100

coords(3) = llCorner(1)

'Şeklin sağ üst köşesi

coords(4) = llCorner(0) + 100

coords(5) = llCorner(1) + 30

'Yarım çemberin sağ ucu

coords(6) = llCorner(0) + 70

coords(7) = llCorner(1) + 30

'Şu an için yarım çember düz olarak çizildi. Bu parçayı daha sonra aşağıya doğru sündüreceğiz.

'Yarım çemberin sol ucu

coords(8) = llCorner(0) + 30

coords(9) = llCorner(1) + 30

'Şelin üst sol köşesi

coords(10) = llCorner(0)

coords(11) = llCorner(1) + 30

'Tanımlanmış koordinatları kullanarak yeni bir sürekli çizgi “polyline” yaratma

Dim poly As AcadLWPolyline

Set poly = ACAD.ActiveDocument.ModelSpace.AddLightWeightPolyline(coords)

'Sürekli çizginin “Polyline” parçasının çıkıntısını 4 olarak ayarlama

poly.SetBulge 3, -1

' Sürekli çizgiyi “Polyline” kapatma

poly.Closed = True

'Uygulamayı sonlandırma

Unload Me

End Sub

Buraya kadar bu şeklin VB6 kullanarak nasıl çizileceğini anlattık. Bu metot VB.NET’e çok benzer olmakla birlikte BuNesne “ThisDrawing” nesnesine ulaşırken, biraz farklı bir yaklaşım uygulama ihtiyacı duymaktayız. Bu BuNesne “ThisDrawing” nesnesini sizlere daha önceden  AutoCAD’de VB NET’e Giriş isimli makalemde anlatmıştım.