Reklamlar

AutoLisp Öğreticisi – İki Çizginin Orta Noktaları Arasına Çizgi Çizme

Yöntemin Özeti

Autolisp kullanarak iki çizginin orta noktası arasında bir çizgi çizmek için, aşağıdaki adımları izlemeliyiz:

  1. Önce, AutoCAD‘de her iki çizgiyi de seçmeliyiz. Bunun için Autolisp’in entsel fonksiyonunu kullanacağız.
  2. Daha sonra, her bir çizginin uç noktalarını elde edeceğiz.
  3. Sonra, iki nokta verilen bir çizginin orta noktasını hesaplayacak bir fonksiyona ihtiyacımız olacak. Bunu daha önce yayımlamış olduğum bir başka makaleden direkt aldım.
  4. Bundan sonra hesapladığımız iki orta nokta arasındaki çizgiyi çizmeliyiz.

Adım 1: AutoCAD’de Çizgileri Seçme

Çizgileri seçmek ve varlık adını aşağıdaki gibi almak için entsel Autolisp fonksiyonunu kullanın:

 

;————————————————————————

;  Command:  midpts_line ()

;

;    İki çizginin orta noktaları arasına çizgi çizme.

;-

;-         Copyright 2010 S. Türkan. Tüm hakları saklıdır.
;—————————————————————-5/3/2010

(defun c:midpts_line ()

;– Çizgileri Seçme
(setq line1 (car (entsel “\nBirinci çizgiyi seçin: “)))
(setq line2 (car (entsel “\nİkinci çizgiyi seçin: “)))

)

Adım 2: Varlık verisinden her bir çizginin uç noktalarını elde etme

Daha önceki bir makalemde, bir varlığın varlık verilerini nasıl alacağınızı size göstermiştim. Şayet o makalede anlatılanları anlamadıysanız, tekrar okuyun ve şimdiye kadar oluşturduğumuza eklenen program kodunu anlayın.

;————————————————————————

;-  Command:  midpts_line ()

;-

;-    İki çizginin orta noktaları arasına bir çizgi çizme.
;-
;-         Copyright 2010 S. Türkan. Tüm hakları saklıdır.
;—————————————————————-5/3/2010

(defun c:midpts_line ()

;– Select the lines
(setq line1 (car (entsel “\nBirinci çizgiyi seçin: “)))
(setq line2 (car (entsel “\nİkinci çizgiyi seçin: “)))

;– Birinci seçilen çizginin uç noktalarını elde etme

(setq pt1 (cdr (assoc 10 (entget line1))))

(setq pt2 (cdr (assoc 11 (entget line1))))

;– İkinci seçilen çizginin uç noktalarını elde etme

(setq pt3 (cdr (assoc 10 (entget line2))))

(setq pt4 (cdr (assoc 11 (entget line2))))

)

Adım 3: Bir çizginin orta noktasını hesaplayan ve geri döndüren bir fonksiyon yazma

;————————————————————————
;-  Function:  midpt ( p1 p2 )
;-    Arguments: p1 is the starting point of the line
;-               p2 is the ending point of the line
;-
;-    Returns the midpoint of a line given two points.
;-
;-         Copyright 2010 S. Türkan. Tüm hakları saklıdır.
;—————————————————————-5/3/2010
(defun midpt (p1 p2 / Xavg Yavg Zavg)

;-Calculate the X, Y and Z averages
(setq Xavg (/

(+ (car p1) (car p2))
2.0

))
(setq Yavg (/

(+ (cadr p1) (cadr p2))
2.0

))
(setq Zavg (/

(+ (caddr p1) (caddr p2))
2.0

))

 

;-Return the midpoint as a list
(list Xavg Yavg Zavg)

)

;————————————————————————
;-  Command:  midpts_line ()
;-
;-    Draws a line between the midpoints of two lines.
;-
;-         Copyright 2010 S. Türkan. Tüm hakları saklıdır.
;—————————————————————-5/3/2010

(defun c:midpts_line ()

;– Select the lines
(setq line1 (car (entsel “\nBirinci çizgiyi seçin: “)))

(setq line2 (car (entsel “\nİkinci çizgiyi seçin: “)))

 

;– Birinci seçilen çizginin uç noktalarını elde etme

(setq pt1 (cdr (assoc 10 (entget line1))))

(setq pt2 (cdr (assoc 11 (entget line1))))

;– İkinci seçilen çizginin uç noktalarını elde etme
(setq pt3 (cdr (assoc 10 (entget line2))))
(setq pt4 (cdr (assoc 11 (entget line2))))

;– Çizgilerin orta noktalarını bulma

(setq mid1 (midpt pt1 pt2))

(setq mid2 (midpt pt3 pt4))

;– Çizgiyi çizme
(command “line” mid1 mid2 “”)

)

Adım 4: Yeni fonksiyonu kullanarak orta noktaları bulma ve çizgiyi çizme

Midpts_line koduna geri dönersek, ilk olarak her çizgiye ilişkin iki orta noktayı yukarıdaki yeni midpt fonksiyonuna göndeririz ve her satırın orta noktasını mid1 ve mid2 olmak üzere iki yeni değişkene geri döndürür. Ardından, yalnızca command fonksiyonunu kullanarak AutoCAD‘de mid1 noktasından mid2 noktasına bir çizgi çizdiririz.

Adım 5: Son Notlar

Artık kodu yazmayı tamamladığımıza göre, midpt fonksiyon kodunu midpts_line program kodunun son satırının altına eklenmeliyiz.

Kodun üst kısmına da koyabilirsiniz; ancak fonksiyon kodunu program bloğunuzun kodununn tamamının altına koymanız iyi bir uygulamadır.

Bu makaledeki LSP dosyasını buradan indirebilirsiniz.

Reklamlar

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

Revitte Kısıtlar “Constraint” Hakkında

Revitte Kısıtlar “Constraint” Hakkında Video: Kısıtlamaları Anlama (İngilizce) Kurs Sağlayıcı: Organization Video: Kısıtlamaları Anlama (İngilizce) …

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.