Bu konuyu örnek kod paylaşmaktansa anlatmayı daha uygun gördüm. Bu sayede nasıl yazılacağı konusunda bir fikir edinebilirsin.
Resimde görüldüğü gibi iki çizgimiz var.
1nci nesne P1 ve P2 koordinatlarına, 2nci nesne ise P3 ve p4 koordinatlarına sahip.
İlk nesnenin seçimini yaptıralım.
Kod:
(setq ent (car (entsel "\n1.nnesne)))
İlk nesnenin başlangıç ve bitiş koordinatlarını tespit edelim.
Kod:
(setq p1 (cdr (assoc 10 (entget ent))))
(setq p2 (cdr (assoc 11 (entget ent))))
Bu çizginin açısını öğrenelim.
Kod:
(setq aci-1 (angle p1 p2))
P1 noktasına gelen dik hat için açı değerine +90 ve -90 olacak şekilde yeni açılarını ve izafi olarak a1 ve a2 noktalarını tespit edelim.
Bu tespiti Polar komutu ile yapacağız. polar komutunda açı değeri radyan cinsinden olmalı.
(Polar nokta açı mesafe) şeklinde yazılır ve yeni koordinat tespit edilir.
Pi değeri radyan cinsinden karşılığı 180derecedir.
Kod:
(setq a1 (polar p1 (+ (/ pi 2.0) aci-1) 10))
(setq a2 (polar p1 (- (/ pi 2.0) aci-1)10))
Yukarıdaki işlemleri b1 ve b2 içinde yaptığımızda ilk nesne ile ilgili koordinat tespiti tamamlanır.
Aynı işlemleri diğer nesne içinde yapmalıyız.
Sonuçta elimizde a1,a2,b1,b2,c1,c2, koordinatları olacaktır.
Kesişim koordinatlarını elde etmek için INTERS komutunu kullanacağız.
Kod:
(setq kes-01 (inters a1 a2 c1 c2 nil))
Kod sonundaki nil değeri yazılırsa, verilen argümanlarda oluşan sanal çizginin sonsuza kadar gittiği varsayılır.
Nil yazılmaz ise, iki sanal çizgi gerçekten kesişiyorsa yeni değer verilir. Kesişmiyorsa değer nil dir.