Visual LISP Dersleri Visual LISP’e Giriş – Ders-3

 

AutoCAD içinde nesneler veya Nesneler oluşturmadan önce, çizmek istediğimiz “Nereye çizeceğimize “, (Model Alana veya Kağıt Alana) karar vermemiz gerekir. Bunu yapmak için, çizmek istediğimiz alana bir referans oluşturmamız gerekiyor.

Dosyalama dolabımızı hatırlıyor musunuz? Uygulama Nesnesi “Application Object“ bizim çekmecemizdi, Doküman Nesnesi “Document Object“ bizim klasörümüzdü ve şimdi Model Alanı Nesnesi “Model Space Object“ kağıt parçası olacak. Model Alanı Nesnesine “Model Space Object“ bir göz atalım:

_$ (setq modelSpace (vla-get-ModelSpace (vla-get-ActiveDocument  (vlax-get-Acad-Object))))

#<VLA-OBJECT IAcadModelSpace 018ade24>

Şimdi Model Alanı Nesnesinde “Model Space Object“nesnenin (model alan) özelliklerini görüntületin:

_$ (vlax-dump-object modelSpace T)

; IAcadModelSpace: A special Block object containing all model space 

entities; Property values:; Application (RO) = #<VLA-OBJECT IAcadApplication 00adc088>

; Count (RO) = 0

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

; Handle (RO) = “18”

; HasExtensionDictionary (RO) = 0

; IsLayout (RO) = -1

; IsXRef (RO) = 0

; Layout (RO) = #<VLA-OBJECT IAcadLayout 018ad934>

; Name = “*MODEL_SPACE”

; ObjectID (RO) = 21871808

; ObjectName (RO) = “AcDbBlockTableRecord”

; Origin = (0.0 0.0 0.0)

; OwnerID (RO) = 21871624

; XRefDatabase (RO) = AutoCAD.Application: No database

; Methods supported:; Add3DFace (4); Add3DMesh (3)

; Add3DPoly (1); AddArc (4)

; AddAttribute (6); AddBox (4)

; AddCircle (2)

; AddCone (3); AddCustomObject (1)

; AddCylinder (3)

; AddDim3PointAngular (4)

; AddDimAligned (3)

; AddDimAngular (4)

; AddDimDiametric (3)

; AddDimOrdinate (3)

; AddDimRadial (3)

; AddDimRotated (4)

; AddEllipse (3)

; AddEllipticalCone (4)

; AddEllipticalCylinder (4)

; AddExtrudedSolid (3)

; AddExtrudedSolidAlongPath (2)

; AddHatch (3)

; AddLeader (3)

; AddLightWeightPolyline (1)

; AddLine (2)

; AddMInsertBlock (10)

; AddMLine (1)

; AddMText (3)

; AddPoint (1)

; AddPolyfaceMesh (2)

; AddPolyline (1)

; AddRaster (4)

; AddRay (2)

; AddRegion (1)

; AddRevolvedSolid (4)

; AddShape (4)

; AddSolid (4); AddSphere (2)

; AddSpline (3); AddText (3)

; AddTolerance (3); AddTorus (3)

; AddTrace (1); AddWedge (4); AddXline (2)

; AttachExternalReference (8); Bind (1)

; Delete (); Detach ()

; GetExtensionDictionary ()

; GetXData (3); InsertBlock (6)

; Item (1)

; Reload ()

; SetXData (2)

; Unload ()T

İlginç değil mi? Şimdi birşeyler çizelim. Aşağıdaki kodu girin:

(setq pt1 (getpoint “\nSpecify First Point : “))

(while (setq pt2 (getpoint “\nSpecify next point : ” pt1))

(vla-addline modelSpace (vlax-3d-point pt1) (vlax-3d-point pt2))

(setq pt1 pt2)

)

(428.748 578.851 0.0)

(524.783 509.712 0.0)

Nihayet, sonunda bir şeyler çizdik. Şimdi şunu yazın:

_$ (setq pt1 (getpoint “\nSpecify First Point : “))

(setq pt2(getpoint “\nSpecify next point : ” pt1))

(setq ourLine (vla-addline modelSpace (vlax-3d-point pt1) 

(vlax-3d-point pt2)))

(922.321 585.542 0.0)(1016.12 300.064 0.0)#<VLA-OBJECT IAcadLine 018ab094>

(setq ourLine ifadesine dikkat ettiniz mi? Bu, Çizgi nesnemize bir referans belirliyor: Şimdi bu konuda bir döküm çalıştıralım:

_$ (vlax-dump-object ourLine T)

; IAcadLine: AutoCAD Line Interface

; Property values:

; Angle (RO) = 5.02985

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

; Color = 256

; Delta (RO) = (93.8012 -285.479 0.0)

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

; EndPoint = (1016.12 300.064 0.0);

Handle (RO) = “95D”; HasExtensionDictionary (RO) = 0

; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 018aa2b4>

; Layer = “7”

; Length (RO) = 300.494

; Linetype = “BYLAYER”

; LinetypeScale = 1.0

; Lineweight = -1; Normal = (0.0 0.0 1.0)

; ObjectID (RO) = 21873192

; ObjectName (RO) = “AcDbLine”

; OwnerID (RO) = 21871808

; PlotStyleName = “ByLayer”

; StartPoint = (922.321 585.542 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 ()T

Şimdi, Çizgi “Line” nesnemizin Tüm Özellikleri ve Yöntemlerinin bir listesine sahibiz. Bazılarının özelliklerini değiştirelim:

Haydi tabakasını “layer” değiştirelim:

_$ (vla-put-layer ourLine 2)nil

Şimdi de rengini “color” değiştirelim:

_$ (vla-put-color ourLine 6)nil

Haydi çizgimizi “line” silelim:

_$ (entdel (vlax-vla-object->ename ourLine))

<Entity name: 14dc1f8>

Çizgiyi silmek için standart AutoLisp komutunu (entel) kullandığımızı fark ettiniz mi? Fakat bunu yapmadan önce, VLisp Nesnesi Başvurusunu “Object Reference” AutoLisp Varlık Adına “Entity Name“ dönüştürmek zorunda kaldık.

Muhtemelen, varlıkları çizmek veya değiştirmek için AutoLisp (command) fonksiyonunu neden kullanmadığımızı merak ediyorsunuzdur. Şayet geri arama fonksiyonlarını kullanırsanız, (command) fonksiyonunu kullanmanıza izin verilmez.

NeUmarım bu derste de Visual Lisp’in kullanımına dair bilgileriniz biraz daha artmıştır. Endişelenmeyin, ilerideki derslerde Visual Lisp’i tüm yönleriyle daha yakından inceleyeceğiz. Bu giriş dersleri size Visual Lisp konusuna başlamanıza ve neler öğreneceğinize dair bir özet geçmekiçindir.

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

Revitte Tek Bir Çizim Çizgisi Kullanarak Eğimli Bir Yüzey Yaratma

Çizim modunda, eğimli bir yüzey oluşturmak için tek bir çizim çizgisinin özelliklerini düzenleyin. Bu yöntemi, …

Bir cevap yazın

Yardıma mı ihtiyacınız var? Chat with us
Bir görüşme başlatmak için lütfen önce gizlilik politikamızı kabul edin.