Delphide Otomatik Çizim yaptırma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Delphide Otomatik Çizim yaptırma
S.A. Arkadaşlar
Yapacağım programda
Otomatik bir çizim yapmam gerekiyor.
Şöyle ki:
Elimizde bir 2800 mm(en) X 2000 mm(boy) ebatlarında bir sunta var diyelim.Bu suntayı ben istediğim ebatlarda parçalara ayıracağım.
Örneğin;
Ham Plaka Ebatı:2800 X 2000 mm
parça no X Y Miktar
1 200 300 5
2 400 350 4
Şeklinde parçalaraq ayıracağım.Burda 2800 X 2000 Ebatındaki plaka 5 adet 200 x 300 ve 4 adet 400x350 ebatlarında toplam 9 parça oluşturulacak.Bunu nasıl delphide çizdirebilirm.Hangi componenti nasıl kullanmalıyım bu konuda çalışmış arkadaşlar varsa her zamanki gibi geniş bilgilerinizi ve düşüncelerinizi bekliyorum...
Yardımlarınız İçin Teşekkürler....
Yapacağım programda
Otomatik bir çizim yapmam gerekiyor.
Şöyle ki:
Elimizde bir 2800 mm(en) X 2000 mm(boy) ebatlarında bir sunta var diyelim.Bu suntayı ben istediğim ebatlarda parçalara ayıracağım.
Örneğin;
Ham Plaka Ebatı:2800 X 2000 mm
parça no X Y Miktar
1 200 300 5
2 400 350 4
Şeklinde parçalaraq ayıracağım.Burda 2800 X 2000 Ebatındaki plaka 5 adet 200 x 300 ve 4 adet 400x350 ebatlarında toplam 9 parça oluşturulacak.Bunu nasıl delphide çizdirebilirm.Hangi componenti nasıl kullanmalıyım bu konuda çalışmış arkadaşlar varsa her zamanki gibi geniş bilgilerinizi ve düşüncelerinizi bekliyorum...
Yardımlarınız İçin Teşekkürler....
"Bilginin Doruğuna Hep Birlikte..."
mrb
resimlerin üzerinde işlem yaptırmak için Image Processing le ilgili araştırma yapabilirsin.
mesela ilk başta 200*300 lük kısmı pixel pixel okuyup yeni koyduğun image e pixel pixel yazdırırsın. daha sonra tüm parçaları bu şekilde halledebilrsin.
mesela her seferinde kaça böleceğin belli olmadığı için Image nesnesini create ederek kullanabilirsin.
ii çalışmalar
resimlerin üzerinde işlem yaptırmak için Image Processing le ilgili araştırma yapabilirsin.
mesela ilk başta 200*300 lük kısmı pixel pixel okuyup yeni koyduğun image e pixel pixel yazdırırsın. daha sonra tüm parçaları bu şekilde halledebilrsin.
mesela her seferinde kaça böleceğin belli olmadığı için Image nesnesini create ederek kullanabilirsin.
ii çalışmalar
Bence image nesnesi kullanın.
tarzındaki kodlar işinizi görür.
Kod: Tümünü seç
Image1.Canvas.MoveTo(X,Y);
Image1.Canvas.LineTo(x,y);
Image1.Canvas.Rectangle(x1,y1,x2,y2);
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
O zaman birden fazla image mi kullanmalıyım
yani şimdi önce 2800x2000 ebatlı parça 5 adet 200x300 ve 4 adet 400x350 ebatlarında parçalar oluşacak.Sonuç olarak bizim elimizdeki 2800x2000 lik sunta 9 parçaya ayrılacak.Bu dokuz parçayı nasıl yapacağız.Bu 9 la sınırlı değil tabi.istenilen kadar parça olacak imageste bunu tam olarak nasıl yapabiliriz?Biraz daha açarsanız sevinirim..
yani şimdi önce 2800x2000 ebatlı parça 5 adet 200x300 ve 4 adet 400x350 ebatlarında parçalar oluşacak.Sonuç olarak bizim elimizdeki 2800x2000 lik sunta 9 parçaya ayrılacak.Bu dokuz parçayı nasıl yapacağız.Bu 9 la sınırlı değil tabi.istenilen kadar parça olacak imageste bunu tam olarak nasıl yapabiliriz?Biraz daha açarsanız sevinirim..
"Bilginin Doruğuna Hep Birlikte..."
Tam olarak yapmak istediğiniz nedir? Bir suntanın en optimize bir şekilde nasıl parçalara ayrılacağını görsel olarak simule etmek mi? Eğer bu şekilde ise ve aynı 2800*2000 ebatlı anaparça kullanılarak diğer küçük parçalar oluşturulacaksa tek bir image üzerinde gösterebilirsiniz kesilecek yerleri, çizgilerle çizdirmek suretiyle.
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
hocam amacın sadece çizim değilse sen bu parçaları ana tabaka üzerine döndürerekte koyacaksan fire optimizasyonu yapmaya çalışıyorsan araştırman gereken şey çizimden çok knapsack problemi. senin örneğindeki gibi 2 boyutlu yada tel gibi birşey keseceksen tek boyutlu hacmi olan bir şey ise 3 boyutlu (kesmen gerekmiyor) problemi bir konteynıra eldeki belli ölçüdeki kolileri sığdırmak yada belli boyuttaki kutuları bir odanın zeminine dizmek gibide düşünebilirsin, kesinlikle Knapsack problemi ve nette epey birşey var bununla ilgili cutting ve packing diye aratabilirsin kolay gelsin
Evet Mucar kardeşim, bir suntanın en optimize bir şekilde nasıl parçalara ayrılacağını görsel olarak simule etmek.
Bunu nasıl yapabilirim tek images içinde?Nasıl image yi çizgilerle bölebilrim? Kısaca açıklarsan ve kod parçası gönderebilirsen çok sevineceğim.
Allah Razı Olsun
Yardımlarınız için Teşekkürler...
Bunu nasıl yapabilirim tek images içinde?Nasıl image yi çizgilerle bölebilrim? Kısaca açıklarsan ve kod parçası gönderebilirsen çok sevineceğim.
Allah Razı Olsun
Yardımlarınız için Teşekkürler...
"Bilginin Doruğuna Hep Birlikte..."
merhaba aşağıdaki kod resmin tamamını pixel pixel okuyup başka bir resme pixel pixel yazdırıyor. ama sen bunun yerine kendi resminden sadece belirli kesitler okuyup onları yeni image nesnesine yazdırırsın.mesela 9 parçaya böldürme kısmını manuel olarak mı aldırıyosun? eğer öyleyse her seferinde yeni bi image nesnesi create edersin. böylece gerçek resim değerlerini oluşturduğun resme kopyalarsın.
Umarım işini görür.
kolay gelsin
Kod: Tümünü seç
procedure Tana.GoruntudenDiziye;
var
i, j : integer;
begin
for i:=0 to Image1.Width-1 do
for j:=0 to Image1.Height-1 do
begin
Image2.Canvas.Pixels[i,j]:=RGB((GetRValue(Image1.Canvas.Pixels[i,j]) ,GetGValue(Image1.Canvas.Pixels[i,j]),GetBValue(Image1.Canvas.Pixels[i,j])));
end;
end;
Umarım işini görür.
kolay gelsin
Slm;
Bu çizim programından çok bir optimizasyon programı ki burda çizim yapmak olayın en kolay kısmı. Elindeki parçaların tabakaya en az fireyle nasıl dağılacağını hesaplatman lazım önce tabi bu da baya bi döngü mantığı yazman gerekiyor.
Bunu yaptıktan sonra @mucar arkadaşın yazdığı kodlar işine yarayacaktır.
Optimizasyon mantığı hele tabaka yerleşimi; 2 ve 3 boyutlu bazen kesim tek yöne olmak zorunda olduğunda (sunta gibi) baya bi hesap ve döngü gerektirecek bişidir. Çok da kolay olmayabilir.
Kolay gelsin. İyi çalışmalar.
.
Bu çizim programından çok bir optimizasyon programı ki burda çizim yapmak olayın en kolay kısmı. Elindeki parçaların tabakaya en az fireyle nasıl dağılacağını hesaplatman lazım önce tabi bu da baya bi döngü mantığı yazman gerekiyor.
Bunu yaptıktan sonra @mucar arkadaşın yazdığı kodlar işine yarayacaktır.
Optimizasyon mantığı hele tabaka yerleşimi; 2 ve 3 boyutlu bazen kesim tek yöne olmak zorunda olduğunda (sunta gibi) baya bi hesap ve döngü gerektirecek bişidir. Çok da kolay olmayabilir.

Kolay gelsin. İyi çalışmalar.
.
Evet Query ve vesper'in de dediği gibi burada asıl sorun optimize bir biçimde parçaların adetlerinin ve nasıl yerleşeceğinin hesaplanması. Çizim yaptırmak ise işin en kolay kısmı, mesela örnek için forma bir buton, bir image (boyutlarını 200x200 yapın) koyup butona basıldığında aşağıdaki kodlar çalışsın;
Asıl soruna gelince; ilk başta bir alan kontrolü yapılmalı yani sizin verdiğiniz örneğe göre 2800x2000 büyük olmalı (5x200x300)+(4x400x350) kontolü olmalı. Daha sonra parçaları değişik şekildeki kombinasyonlarda sanal olarak yerleştirerek maksimum alanı kapsayan durum baz alınıp gerekli koordinatlar gerekli değişkenlere yüklenmeli. en son bu en optimize durumun koordinatlarına göre de bu durum image nesnesinde çizdirilmeli (yukarıdaki örnekte olduğu gibi).
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Canvas.MoveTo(0,100);
image1.Canvas.LineTo(200,100);
end;
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
-
- Üye
- Mesajlar: 1
- Kayıt: 06 Oca 2009 12:37
Re: Delphide Otomatik Çizim yaptırma
ben bişey sorcaktım çok önemli benim için
canvas.pixels ne işe yarıyor
ve kullanımı nasıl
canvas.pixels ne işe yarıyor
ve kullanımı nasıl
Re: Delphide Otomatik Çizim yaptırma
@query doğru yaklaşımda bulundu.
Önerim, bu işlerle meşgul olan birisiyle diyaloğa geçerek, onların gerçek hayatta bu bölümlemeyi nasıl yaptıklarını sorgulayın. Onu program için model olarak kullanırsanız en azından hangi boyutlarda dilimleme yapacağınızı tespit etmiş olarak problemin birinci aşamasını geçmiş olursunuz. Bundan sonra çizim çok kolay. Zaten oransal çizim yapacağınızdan bu elde edeceğiniz rakamlar sizi sonuca götürecektir.
Eğer üçüncü kişilerle diyalog kuramam diyorsanız, bunu internetten araştırmanız için ingilizce karşılığını vereyim "Cutting Stock Problem" deniyormuş. Wikipedia'dan linki: http://en.wikipedia.org/wiki/Cutting_stock_problem Bu mihmalde aramalarınızı sürdürürseniz daha çok sonuca ulaşabilirsin diye İngilizce karşılığını verdim.
Başarılar.
Önerim, bu işlerle meşgul olan birisiyle diyaloğa geçerek, onların gerçek hayatta bu bölümlemeyi nasıl yaptıklarını sorgulayın. Onu program için model olarak kullanırsanız en azından hangi boyutlarda dilimleme yapacağınızı tespit etmiş olarak problemin birinci aşamasını geçmiş olursunuz. Bundan sonra çizim çok kolay. Zaten oransal çizim yapacağınızdan bu elde edeceğiniz rakamlar sizi sonuca götürecektir.
Eğer üçüncü kişilerle diyalog kuramam diyorsanız, bunu internetten araştırmanız için ingilizce karşılığını vereyim "Cutting Stock Problem" deniyormuş. Wikipedia'dan linki: http://en.wikipedia.org/wiki/Cutting_stock_problem Bu mihmalde aramalarınızı sürdürürseniz daha çok sonuca ulaşabilirsin diye İngilizce karşılığını verdim.
Başarılar.