CNC'de Takım yolu algoritması - Nasıl bir algoritma olmalı?

Başlatan z, 30 Nisan 2016, 21:00:40

z



Resimde siyah renkli L1...L7 doğrularının her birinin x0,y0,x1,y1 başlangıç ve bitiş koordinatları bellidir.

Amacım bu doğruların dışına kırmızı doğruları çizmektir. Kırmızı doğruların her birinin başlangıç ve bitiş koordinatlarını hesaplayacak algoritmayı oluşturmam gerekiyor.

Konu: CNC ile bir çizimi belli bir takım çapı ile işlemek için toolpath hesabı. Herhangi bir kırmızı doğru, ilgili olduğu siyah doğruya d kadar mesafede paralel olacaktır.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Cemre.

http://stackoverflow.com/questions/1109536/an-algorithm-for-inflating-deflating-offsetting-buffering-polygons

Delphi ile çalışıyordunuz galiba hocam. İşinizi görür mü?
İyi akşamlar.

LG-H735 cihazımdan Tapatalk kullanılarak gönderildi


z

Link için teşekkürler fakat işin felsefesini anlayamadım.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

seyityildirim

mesela L1 çubuğunun baş ve uç noktası belli. İki noktası bilinen doğru denkleminden bir denklem elde edilir. Daha sonra istediğiniz d uzunluğunda denklemi d birim kaydırırsınız. Aklıma bu şekilde geldi ama kaçırdığım bir yer olabilir

z

Alıntı Yap..... Daha sonra istediğiniz d uzunluğunda denklemi d birim kaydırırsınız. Aklıma bu şekilde geldi ama kaçırdığım bir yer olabilir

Önüne mi arkasına mı kaydırılacağına nasıl karar vereceksin?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

rree

Benim önerim şekilde orta nokta bulunur. Diyelim üst çizgi hem alta hem üste  parelel çizgi çizme hesaplaması esnasında orta noktaya yakın olmayan çizgi işleme tabi tutulur. Yakın olan iptal edilir.

z

Burada amaç siyah doğru parçalarının oluşturduğu geometrik yüzeyin içine hiç bir kırmızı noktanın girmemesi.

BMP formata geçip çalışmayı asla ve asla düşünmüyorum.



Örneğin L1 den çıkıp L3 e giden L2 doğrusuna paralel kırmızı doğru L2 doğrusunun solundadır. Bu tüm kırmızı doğrular için geçerlidir. Yüzey üzerinde hareket yönü seçersek

Örneğin saat yönünde giderken kırmızı çizgiler siyah çizgilerin solunda kalmaktadır. Tersine saat yönünün tersi yönde giderken bu kez kırmızı çizgiler siyah çizgilerin sağında kalmaktadır.

Bu durumda seçilen yöne göre sağda kalmak yada solda kalmak tanımlamasının matematiksel ifadesine ihtiyaç var.

mesaj birleştirme:: 01 Mayıs 2016, 01:51:27



Orjinal siyah doğrulara d uzaklıkta paralel doğrular resimdeki gibi çizilebilir.

Bu durumda bunlardan işimize yarayanları alacağız diğerlerini kaldıracağız. Daha sonrada eğrileri bir kuralara göre birleştireceğiz.




mesaj birleştirme:: 01 Mayıs 2016, 02:07:40

Alıntı yapılan: rree - 01 Mayıs 2016, 00:58:43
Benim önerim şekilde orta nokta bulunur. Diyelim üst çizgi hem alta hem üste  parelel çizgi çizme hesaplaması esnasında orta noktaya yakın olmayan çizgi işleme tabi tutulur. Yakın olan iptal edilir.



Bu şekil için orta noktaya yakınlık ? ile gösterdiğim kırmızı çizginin elenmesine neden olmakta.

mesaj birleştirme:: 01 Mayıs 2016, 04:58:04

İlerleme yönü x0,y0 dan x1,y1 e doğru ise

solda kalmak demek (kırmızı yol)
x0-dsin(teta)
y0+dcos(teta)

dan

x1-dsin(teta)
y1+dcos(teta)

e gitmek demek.

Burada teta=Atan((y1-y0)/(x1-x0))

Bu durumda Saat yönünde giderken orjinal siyah çizgileri d kadar dışa ötelemenin matematiği belli  oldu.

Bu sorunun cavabı için büyük bir ilerleme. Fakat sonuca ulaşmak için henüz erken.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

rree

Sizin dediğinize göre şu şekildede olabilir. Çizginin X1Y1  ve X2Y2  başlangıç ve bitiş koordinatları var. Birinci çizgi X1Y1   Y1 değeri alt tabana ve üst tabana oranı sonara Y2 alt tabana va üst tabana oranı bir tabloda tutulur. Diğer çizgilerinde hesaplanır. Oranlarına bakılarak Alt tabana en yakın çizgi tespit edilir. Tespit edilen çizgi En altta ve sağa doğru ilerlersek dış kenar sağdadır.

iyildirim

Aynı işi PCB kazımak için gerberden g-code oluştururken yapmıştım.
Doğrular kapalı bir poligon oluşturuyordu ve  sağ-sol, aşağı yukarı seçimi  doğrunun yönüne, poligonun saat yönünde CW veya CCW olduğuna göre yapılıyordu.
Poligon üyesi her bir doğru için takım yarıçapı kadar mesafede paralel doğrular hesaplanıp, paralel doğrularında  kesişme noktaları hesaplanıp buna göre takım yolu hesaplanıyordu.

Eğer kesişme noktaları hep 90 derece ise yukarıda verdiğiniz gibi trigonometrik ifadelerle kesişme noktaları hesaplanabilir.
Ama bu şart sürekli sağlanamıyorsa iki doğrunun kesişme noktası line-intersection algoritmaları ile hesaplanmalı.

İşime yarar derseniz gerberden takım yolu oluşturan bir VB6 projesi verebilirim. Yaptığı iş gerberde tanımlı aparture ve polgonları ları sizin yapmak istediğiniz gibi takım yarıçapına göre genişletiyordu.

Bu özel amaçlı bir iş değilse ve G-code yorumlayıcınız G40-41-42 destekliyorsa, orijinal takım yolunı verip  G41-42  kullanmak aynı işi yapar.