AutoLISP ve ActiveX API ile Tablo Stili Yaratma

AutoCAD’de tablo stilleri esasen AutoLISP‘te bir betik veya KOMUT “COMMAND” fonksiyonunu kullanarak tablo stili yaratma yeteneğini kısıtlayan bir eksiklik olan komut satırı desteği olmadığı için, Tablo Stili “Table Style” iletişim kutusu (TABLESTYLE komutu) kullanılarak yaratılır. Bununla birlikte, tablo stili yaratmak veya çiziminizde tanımlanmış olan hücre stillerini değiştirmek için, ActiveX API kullanabilirsiniz.

NOT: ActiveX API Mac işletim sistemlerinde çalışan AutoCAD üzerinde bulunmamaktadır.

Bir tablo stili yaratmak için,  o anki (aktif) çizimin içerisinde ACAD_TABLESTYLE sözlüğüne ulaşmak zorundasınız. ACAD_TABLESTYLE sözlüğüne bir referans elde edildiği zaman, daha sonra şayet tablo stili mevcut ise VLA-GETOBJECT fonksiyonunu kullanarak görerek veya VLA-ADDOBJECT fonksiyonunu kullanarak bir tablo stili ekleyerek kontrol edebilirsiniz.

Aşağıdaki örnek kod yeni bir tablo stilinin nasıl yaratılacağını göstermektedir; fakat öncesinde tablo stilinin mevcut olup olmadığını kontrol etmemektedir. Şayet tablo stili mevcut ise, kodda hata meydana gelir.

(vl-load-com)
(defun c:CreateTableStyle()
;;[AutoCAD uygulamasını ve o anki (aktif) çizimi alma]
(setq acad (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acad))

;; [Sözlük kolleksiyonlarını ve TabloStili sözlüğünü alma]
(setq dicts (vla-get-Dictionaries doc))
(setq dictObj (vla-Item dicts “acad_tablestyle”))

;; [Özel bir tablo stili yaratma]
(setq key “MyTableStyle”
class “AcDbTableStyle”)
(setq custObj (vla-AddObject dictObj key class))

;; [Stil için bir isim ve açıklama ayarlama]
(vla-put-Name custObj “MyTableStyle”)
(vla-put-Description custObj “Bu benim özel tablo stilim “)

;; [Stil için veri bayrağı “bit flag “değerini ayarlama]
(vla-put-BitFlags custObj 1)

;; Tablonun yönünü ayarlama, üstten alta veya alttan üste doğru]
(vla-put-FlowDirection custObj acTableTopToBottom)

;; [Tablo sütun başlığının baskınlığını ayarlama]
(vla-put-HeaderSuppressed custObj :vlax-false)

;; [Tablo hücreleri için yatay boşlukları “marjinleri) ayarlama]
(vla-put-HorzCellMargin custObj 0.22)

;; [Tablo başlığının baskınlığını ayarlama]
(vla-put-TitleSuppressed custObj :vlax-false)

;; [Tablo hücreleri için düşey boşlukları (marjinleri) ayarlama]
(vla-put-VertCellMargin custObj 0.22)

;; [Veriler, Sütun başlığı ve Başlık sıraları için hizalamayı ayarlama]
(vla-SetAlignment custObj (+ acDataRow acTitleRow) acMiddleLeft)
(vla-SetAlignment custObj acHeaderRow acMiddleCenter)

;; [Sütun başlık satırı ve Tablo başlık satırı için arka plan rengini ayarlama]
(setq colObj (vlax-create-object “AutoCAD.AcCmColor.19”))
(vla-SetRGB colObj 98 136 213)
(vla-SetBackgroundColor custObj (+ acHeaderRow acTitleRow) colObj)

;; Veri satırları için arka plan rengini temizleme]
(vla-SetBackgroundColorNone custObj acDataRow :vlax-true)

;; Tablo başlık satırı için hücre alt kenar çizgisinin rengini ayarlama]
(vla-SetRGB colObj 0 0 255)
(vla-SetGridColor custObj acHorzBottom acTitleRow colObj)

;;     ;; Tablo başlık satırı için hücre alt kenar çizgisinin kalınlığını ayarlama]
(vla-SetGridLineWeight tableStyle acHorzBottom acTitleRow acLnWt025)

;; [Veri ve Sütun başlığı satırları için iç hücre kenar çizgilerini görünür olarak ayarlama]
(vla-SetGridVisibility custObj acHorzInside  (+ acDataRow acHeaderRow) :vlax-true)

;; [Tablo başlığı, Sütun başlığı ve Veri satırları için yazı yüksekliğini ayarlama]
(vla-SetTextHeight custObj acTitleRow 1.5)
(vla-SetTextHeight custObj (+ acDataRow acHeaderRow) 1.0)

;; [Tablo başlığı satırı için yazı yüksekliğini ve stilini ayarlama]
(vla-SetTextStyle custObj (+ acDataRow acHeaderRow acTitleRow) “Standard”)

;; [Renk nesnelerini serbest bırakma]
(vlax-release-object colObj)
(princ)
)

Aşağıdaki şekil bir tablo nesnesine uygulandığı zaman, tablo stilinin nasıl görüneceğini göstermektedir.

Sekil-1