1372826956:AAFe2Py65GSQkfGiRnXuOQ-eD9yXcwMv988

Visual LISP Dersleri Visual LISP’e Giriş – Ders-8 Özellikler & Metotlar Kısım #2

Visual Lisp Fonksiyonu Nasıl Çağrılır

Tamam, ihtiyacınız olan Visual Lisp özelliğini veya yöntemini (metodunu) tanımladınız; ancak yine de fonksiyonu nasıl çağıracağınızı belirlemelisiniz. Belirtilecek argümanları ve bu argümanların veri tipini bilmeniz gerekir. Önce özelliklere bakalım.

Özellikler

VBA’da tabaka “layer” özelliğinin söz dizimi aşağıdaki şekildedir:

object.Layer veya object.property

object : Tüm çizim nesneleri, öznitelik “attribute” referansları, gruplar. Bu özelliğin uygulanacağı nesne veya nesneler.

Layer : Dizge; okuma-yazma (Grup nesneleri için salt yazılır). Tabakanın “Layer” ismi.

Uyarılar

Bütün varlıkların ilişkili bir tabakası “layer” vardır. Belgede her zaman en az bir tabaka “layer” (tabaka 0) bulunur. Çizgi tiplerinde olduğu gibi, bir varlık için bir  “layer” belirleyebilirsiniz. Şayet bir tabaka “layer” belirlemezseniz, geçerli etkin tabaka “current layer” yeni varlık için kullanılır. Şayet varlık için bir tabaka “layer” belirlenirrse, geçerli etkin tabaka “current layer” dikkate alınmaz. Geçerli etkin tabakayı “current layer” ayarlamak veya sorgulamak için ActiveLayer özelliğini kullanın. Her tabakanın “layer”, tabaka “layer” nesnesi aracılığıyla ayarlanıp sorgulanabilen ilişkili özellikleri vardır.

VBA’da aşağıdaki kodu kullanabilirsiniz:

Oldlayer = object.Layer —> tabaka “layer” ismini elde etmek için.
object.Layer = “2” —>  tabaka “layer” ismini değiştirmek için.

Visual Lisp, nesne özelliklerini okumak ve güncellemek için fonksiyonlar sunar. Nesne özelliklerini okuyan işlevler vla-get önekiyle adlandırılır ve aşağıdaki söz dizimini gerektirir:

(vla-get-property object)

Örneğin, vla-get-layer object nesnenin üzerinde olduğu tabakayı “layer” geri döndürür.

Visual Lisp Konsoluna “Console” aşağıdakileri girin :

_$ (vl-load-com)_$ (setq acadDocument (vla-get-activedocument (vlax-get-acad-object)))

#<VLA-OBJECT IAcadDocument 00b94e14> 

_$ (setq mspace (vla-get-modelspace acadDocument))

#<VLA-OBJECT IAcadModelSpace 01e42444> 

_$ (setq apt (getpoint “Specify First Point: “))

(307.86 539.809 0.0)

_$ (setq pt (getpoint “Specify next point: ” apt))

(738.188 479.426 0.0) 

_$ (setq myline (vla-addline mspace (vlax-3d-point apt) (vlax-3d-point pt)))

#<VLA-OBJECT IAcadLine 01e81de4> 

_$ (setq oldlayer (vla-get-layer myline))

“7”

oldLayer isimli değişken şimdi çizgi nesnenizin tabaka “layer” ismini içermektedir.

Özellikleri güncelleştiren fonksiyonların önüne vla-put koyun ve aşağıdaki sözdizimini kullanın:

(vla-put-property object yeni-değer)

Örneğin, vla-put-layer object yeni- nesnenin tabakasını “layer” değiştirir.

Konsol “Console” veri istemine aşağıdakiler girin:

_$ (vla-put-layer myline “4”)

nil

Çizginizin tabakası “layer”  artık tabaka “layer” “4” olarak değişti.

Metotlar

Şimdi de yöntemleri (metotları) inceleyelim. VBA’daki Ofset yönteminin (metodunun) sözdizimi aşağıdaki gibidir:

RetVal = object.Offset(Distance) veya Return Value = object.Method (arguments)

Object :  Yay “Arc”, Çember “Circle”, Elips “Ellipse”, Çizgi “Line”, Çizgi kalınlığı “Line weight” Sürekli çizgi “Polyline”, Çubuk “Spline” gibi AutoCAD nesneleridir. Bu yöntemin uygulandığı nesne veya nesneler için sadece Mesafe – Mesafe çift girişini  okunur. Burada mesafe nesneyi ofset etmek için gerekli olan mesafedir. Ofset, pozitif veya negatif bir sayı olabilir; ancak sıfıra eşit olamaz. Şayet Ofset mesafesi negatifse, bu daha küçük bir eğri olarak yorumlanır. Daha küçük anlamı yoksa, nesne Dünya Koordinat Sistemi (DKS) “(WCS)” koordinatlarından daha küçük olan X, Y veya Z yönünde  kaydırılır.

RetVal : Variant (nesneler dizisi). Offset yöntemi (metodu) sonucu olarak yeni yaratılan nesnelerin dizisi.

VBA’da aşağıdaki şekilde kullanabilirsiniz

offsetObj = object.offset(15.5) bir nesneyi offsetlemek için.

Söz Dizimi Tanımları

“ActiveX and VBA Reference” da kullanılan sözdizimi tanımları Visual Basic kullanıcıları için tasarlanmıştır. VBA Ofset Yöntemini düşünün:

returnvalue = object.Method (arguments)
returnvalue = object.Offset(Distance)

veya bizim örneğimizdeki isimleri (myline) kullanın:
offLine = myline.Offset(15.5)

Visual Lisp’de aynı işlemin sözdizimi şöyledir:

 (setq returnvalue (vla-method object argument))

veya kendi isimlerimizi kullanarak:

setq offLine (vla-offset myline 15.5))

Farklı nesnelerin farklı yöntemleri (metotları) vardır ancak aynı ilkeler uygulanır.

Aşağıdaki kodu  Konsol “Console” istemine yazın:

_$ (setq offLine (vla-offset myline 15.5))

#<variant 8201 …>

OffLine değişkeni, artık, yeni oluşturulan çizginizin varyant dizisi biçimindeki verilerini içerir.

Özet

Yani özetlerse,

  • vla-get- fonksiyonları, özellik değerini almanıza olanak tanıyan her ActiveX Özelliğine karşılık gelir (örneğin, vla-get-Color, bir nesnenin Renk özelliğini alır).
  • vla-put– fonksiyonları, özellik değerini güncellemenizi sağlayan her özelliğe karşılık gelir (örneğin, vla-put-Color, bir Nesnelerin renk özelliğini günceller).
  • vla- fonksiyonları tüm ActiveX yöntemlerine (metotlarına) karşılık gelir. Yöntemi (Metodu) çağırmak için, bu fonksiyonları kullanın (örneğin, vla-addCircle fonksiyonu addCircle yöntemini (metodunu) çağırır.

Visual Lisp ayrıca, isimleri vlax ile öneki olan bir dizi ActiveX ile ilgili fonksiyonlar ekler. Bunlar daha genel ActiveX fonksiyonları olup; bunların her biri çok sayıda yöntem (metod), özellik veya nesneye uygulanabilir. Örneğin, vlax-get-property fonksiyonu ile herhangi bir ActiveX nesnesinin herhangi bir özelliğini elde edebilirsiniz.

Bir sonraki derste, bir nesnenin güncellenme için kullanılabilir olup olmadığını ve bir yöntemin (metodun) veya bir özelliğin bir nesne için geçerli olup olmadığını nasıl belirleyeceğimizi inceleyeceğiz.

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

Revitte Perspektif 3B “3D” Görünüş Oluşturma

Revit’te Perspektif “Perspective“ seçeneği, bir 3 boyutlu 3B “3D” görünüşün ortografik yerine perspektif olarak görüntülenip …

Bir cevap yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.