1372826956:AAFe2Py65GSQkfGiRnXuOQ-eD9yXcwMv988

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

Giriş

Bu dersin amacı, tüm AutoCAD nesnelerinin özelliklerini ve Yöntemlerini tanımlamak olmamakla birlikte; öncelikle bir nesne için kullanılabilecek özellikleri ve yöntemleri bulmanın ve ikinci olarak ta Visual Lisp içerisinden bu gibi özelliklerin veya metotların kullanımını tanımlamaktır. AutoCAD içindeki her Nesne, birbirinden farklı olan çok sayıda özellik ve yönteme sahiptir. Her nesnenin her özelliğini veya yöntemini listelemeye çalışmak, bu dersin kapsamını aşan bir konudur.

Her şeyden önce, özellik  ve yöntem tanımlarına bir göz atalım.

Visual Lisp Nesneleri özellikleri ve yöntemleri destekler, Bir Nesnede çalışabilen çeşitli prosedürlere “yöntemler (metot) denirken, Visual Lisp’te bir nesnenin verileri (ayarları veya öznitelikleri)  özellikleri olarak adlandırılır.

Özellikler

Nesnenin karakteristiğini değiştirerek özelliklerini değiştirebilirsiniz. Bir radyo düşünün: Radyonun bir özelliği onun hacmidir. Visual Lisp’de bir radyonun değerini değiştirerek ayarlayabileceğiniz bir “Ses” özelliği olduğunu söyleyebilirsiniz. Bir radyonun sesini 0‘dan 10‘a ayarlayabileceğinizi varsayalım. Şayet radyonuzu Visual Lisp ile kontrol edebilseydiniz, Ses özelliğinin değerini 3’den 5’e veya 5’den 9’a değiştiren bir kod yazabilir ve radyonuzu daha yüksek sesle dinleyebilirdiniz :

(vla-put-Volume Radio 5)

Nesnelerin özelliklerine ek olarak yöntemleri vardır. Metotlar, özelliklerin aynısı gibi cisimlerin bir parçasıdır. Genel olarak, yöntemler, gerçekleştirmek istediğiniz eylemlerdir; özellikler, ayarladığınız veya aldığınız özniteliklerdir. Örneğin, arama yapmak için bir telefon çevirirsiniz. Telefonların “Çevirme” yöntemine sahip olduğunu ve bu sözdizimini yedi haneli bir sayı 4440380’i aramak için kullanabileceğinizi söyleyebilirsiniz:

(vla-Dial Telephone 4440380)

Nesnelerin özelliklerini veya yöntemlerini (metotlarını) değiştirmeye başlamadan önce, bir nesne için hangi özelliklerin ve yöntemlerin kullanılabilir olduğunu bilmeniz gerekir. Bunu yapmak için birkaç yol vardır. Önce özelliklere bakacağız.

AutoCAD’in Yardım “Help” menüsü altında Visual Lisp ve AutoLisp “Visual Lisp and AutoLisp” ve ardından ActiveX ve VBA Referansı “ActiveX and VBA Reference” öğesini açın. Nesneler “Objects” alt bölümünü seçin ve listeden, istediğiniz özellikleri içeren listeyi seçin. Çizgi nesnesini seçin.

Sizin de gördüğünüz gibi, Çizgi nesnesi için geçerli olan tüm Özellikler listelenmiştir.

Dikkatli olun; çünkü bu özelliklerin bazıları Salt Okunur olup; değiştirilemez. Örneğin, Açı “Angle” özelliği Salt Okunur şeklindedir. Düşünün, şayet “AÇI” Özelliğini değiştirirseniz, Çizgi nesnesinin başlangıç veya Bitiş noktaları da değişecektir.

Daha fazla bilgi için Özellik bağlantılarından herhangi birine tıklayın.

Nesnelerin özelliklerini bulmanın diğer bir yolu, Visual Lisp fonksiyonunu (vlax-dump-object) kullanmaktır.

AutoCAD‘i ve ardından Visual Lisp düzenleyicisini açın ve Konsol “Console“ isteminde aşağıdaki kodu yazın:

_$ (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 01e42494>

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

(228.279 430.843 0.0)

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

(503.866 538.358 0.0)

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

#<VLA-OBJECT IAcadLine 01e84614>

_$ (vlax-dump-object myline); IAcadLine: AutoCAD Line Interface; Property values:

;   Angle (RO) = 0.371971

;   Application (RO) = #<VLA-OBJECT IAcadApplication 00adc088>;   Color = 256

;   Delta (RO) = (275.587 107.515 0.0)

;   Document (RO) = #<VLA-OBJECT IAcadDocument 00b94e14>

;   EndPoint = (503.866 538.358 0.0)

;   Handle (RO) = “958”

;   HasExtensionDictionary (RO) = 0

;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 01e84564>

;   Layer = “7”

;   Length (RO) = 295.817

;   Linetype = “BYLAYER”

;   LinetypeScale = 1.0

;   Lineweight = -1

;   Normal = (0.0 0.0 1.0)

;   ObjectID (RO) = 25187840

;   ObjectName (RO) = “AcDbLine”

;   OwnerID (RO) = 25186496

;   PlotStyleName = “ByLayer”

;   StartPoint = (228.279 430.843 0.0)

;   Thickness = 0.0

;   Visible = -1

(vlax-dump-object) fonksiyonu, belirli bir nesne için mevcut tüm özellikleri listeler. Bazı özelliklerin ardından (RO) ifadesi olduğuna dikkat edin. Bu, o özelliğin Salt Okunur “Read Only” bir özellik olduğunu söyler.

Metotlar

Şimdi bir nesne ile ilgili yöntemlere (metotlara) bir göz atalım. AutoCAD’in Yardım “Help” menüsü  altında Visual Lisp ve AutoLisp “Visual Lisp and AutoLisp” ve ardından ActiveX ve VBA Referansı “ActiveX and VBA Reference” öğesini açın. Yine, “Nesneler” alt bölümünü seçin ve listeden yöntemini (metodunu) listelemek istediğiniz nesneyi seçin. Çizgi nesnesini seçin.

Gördüğünüz gibi, Çizgi nesnesiyle ilgili tüm yöntemler (metotlar) listelenmiştir.

Taşıma “Move” yöntemini (metodunu) tıklayın.

Taşıma “Move” yöntemi (metodu) için VBA Metodu görüntülenir ve bu yöntemin (metodun)  sözdizimi aşağıdaki gibidir:

object.Move Point1, Point2

Nesne: “Object :” Tüm çizim nesneleri, öznitelik  “attribute” referansları. Bu yöntemin (metodun) uygulanacağı nesne veya nesneler.

Point1 : Varyant (üç elementli çiftler dizisi); sadece giriş mümkündür. 3 boyutlu 3B “3D” Dünya Koordinat Sistemi (DKS) “(WCS)” koordinatları , hareket vektörünün birinci noktasını belirler.

Point1 : Varyant (üç elementli çiftler dizisi); sadece giriş mümkündür. 3 boyutlu 3B “3D” Dünya Koordinat Sistemi (DKS) “(WCS)” koordinatları , hareket vektörünün ikinci noktasını belirler.

Haydi şimdi az önce çizmiş olduğumuz çizgiyi taşıyalım:

_$ (setq apt2 (getpoint “Specify Base Point: “))

(220.911 526.575 0.0)

_$ (setq pt2 (getpoint “Specify second point: ” apt2))

(383.02 617.889 0.0)

_$ (vla-move myline (vlax-3d-point apt2)(vlax-3d-point pt2))

Şimdi nesneyi listeleyeceğiz; ancak bu sefer nesnelerin yöntemlerini ve özelliklerini görüntülemek için T işaretçisini kullanacağız.

_$ (vlax-dump-object myline T)

; IAcadLine

: AutoCAD Line Interface; Property values:

;   Angle (RO) = 5.60729

;   Application (RO) = #<VLA-OBJECT IAcadApplication 00adc088>;   Color = 256

;   Delta (RO) = (246.112 -197.356 0.0)

;   Document (RO) = #<VLA-OBJECT IAcadDocument 00b94e14>

;   EndPoint = (629.133 420.533 0.0)

;   Handle (RO) = “957”

;   HasExtensionDictionary (RO) = 0

;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 01e84574>

;   Layer = “7”

;   Length (RO) = 315.469

;   Linetype = “BYLAYER”

;   LinetypeScale = 1.0

;   Lineweight = -1

;   Normal = (0.0 0.0 1.0)

;   ObjectID (RO) = 25187832

;   ObjectName (RO) = “AcDbLine”

;   OwnerID (RO) = 25186496

;   PlotStyleName = “ByLayer”

;   StartPoint = (383.02 617.889 0.0)

;   Thickness = 0.0;   Visible = -1

; Methods supported:

;   ArrayPolar (3)

;   ArrayRectangular (6)

;   Copy ();   Delete ()

;   GetBoundingBox (2)

;   GetExtensionDictionary ()

;   GetXData (3);   Highlight (1)

;   IntersectWith (2);   Mirror (2)

;   Mirror3D (3);   Move (2)

;   Offset (1);   Rotate (2)

;   Rotate3D (3)

;   ScaleEntity (2)

;   SetXData (2)

;   TransformBy (1)

;   Update ()

Ancak, Visual Lisp’te kullandığınız “Taşıma”  yönteminin sözdizimi VBA sözdiziminden farklıdır!

Fonksiyonun Visual Lisp’de nasıl çağrılacağını nasıl bilebiliriz?

Endişelenmenize hiç gerek yok. Buna br sonraki derste Kısım # 2’de göz atacağız.

Oraya gitmeden önce, aşağıda seçilen nesneler için tüm özellikleri ve yöntemleri (metotları) listeleyecek küçük bir uygulama var; Bir göz atın:

;kod başlangıcı

    (defun C:HaveaDump ( / ent)

    (vl-load-com)

    (while

        (setq ent (entsel))

        (vlax-dump-object (vlax-Ename->Vla-Object (car ent)) T)

         )         ;while fonksiyonu sonu

   (princ)

);defun

(princ)

;kod sonu

Kısım #2’de, özellik ve yöntem (metot) fonksiyonlarını nasıl çağıracağımıza göz atacağız. O derste görüşmek üzere. Şimdilik hoşça kalın…

 

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

2.1.3 – Bodrum Kat – İç Duvarlar

Bodrum katının dış ve iç duvarlarının son düzeni, aşağıdaki bodrum katının çiziminde gördüğünüz gibi olacaktır …

Bir cevap yazın

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