Arttırılmış Gerçeklik (AR) ve PLM

Merhabalar,

Bugünkü yazımda yakın gelecekte hayatımıza girecek olan arttırılmış gerçeklik kavramından ve birazda CAD sistemlerine nasıl entegre edilebileceği hakkında bahsedeceğim.

Amerika hava kuvvetleri için Amstrong labarotuarında 1992 yılında geliştirilen bu yapı, şimdilerde eğitim, sanayi, tıp, savunma gibi birçok alanda yakın gelecekte kendine yer edinecek. Birçok firma bu alanda şimdiden çalışmalara başlayarak teknolojide yerini ayırtmaya çoktan başladı. Mesela en çok bilinen uygulamalardan olan snapchat, bu özelliği kişilerin kamera önünde sky filter  kullarak, kullanıcıların fotoğraflarını değiştirmelerine olanak sağladı.

Farklı bir donanım kullanmadan mevcut cep telefonu ve bilgisayarlarımızın kameralarını kullanarak gördüklerimizi daha farklı deneyimleyebiliyoruz ve buna arttırılmış gerçeklik diyoruz. Peki ya gerçeği görmek istersek 😕 O zamanda AR gözlük kullanmanız gerekecektir.

Peki CAD ortamını nasıl etkileceyecek bir fikriniz var mı 😕

Tabiki çok işin içine girmeden, sosyal medyada gördüğünüz birşeyler var, ama artık durum biraz daha farklı çünkü 5 sene içerisinde artık görmeye başlıyacağımızı düşünüyorum. QualComm firmasının artırılmış gerçeklik ile ilgili firması olan Vuforia, 2014 yılında PTC (eski adıyla ProEngineer) tarafından 65 miyon dolara satın alındı…

Peki PTC bu firma ile neler yaptı buna bir bakalım. İlk başlarda genellikle eğlence sektöründe kendine yer edinen artırılmış gerçeklik ile, PTC PLM sistemini entegre eden ThingsWorx ile sektöre yeni can ve kan getirdi.

Hemen bakalım ne yapmışlar;

Elbetki izlerken sıkılabilirsiniz ancak sonlara doğru CAD sisteminde nasıl uygulanabileceğini sizlere gösteriyor. İşte dananın kuyruğunun koptuğu noktada tam burası 🙂

Kamera ile baktığınız yer, etiketi okuttuğunuzda önceden tanımlı bölgeler dijitalize oluyor. Sistem buluta bağlanıp CAD datayı indirdikten sonra cad datayı önceden tanımladığınız yere pozisyonlandırıyor ve sensör üzerindeki verileri de arayüz üzerinden kullanıcılara aktarıyor. Biraz büyülü değilmi 😕

Aslında bunların hepsini Vuforia isimli bu kütüphane sayesinde yapabiliyorsunuz. Bu kütüphane ile Unity üzerinde platform bağımsız olarak oyun geliştirir gibi yazılım yazabiliyorsunuz ancak oyun nesnelerine tanımlayacağınız scripleri C# ile yazmanız gerekiyor. Bu arada Android Studio ile Java desteğide var.

Eğer sizde biraz uğraşmak istiyorsanız, youtube üzerinde bir çok video bulabilirsiniz. Size güzel bir başlangıç yaptıracak faydalı bir video tavsiye edeceğim.

Umarım Faydalı olmuştur, sevgiyle kalın.
Gökhan

http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/google_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/myspace_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/facebook_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/twitter_48.png

Sosyal ağ analizi ile belirli bölgelerdeki değerlenebilecek arsaların tespiti -2

Merhabalar tekrar,

Bir önceki yazımızda analiz için gerekli dataların emlak sitelerinden nasıl temin edileceğini bahsetmiştik (Buradan birinci yazımıza geri dönebilirsiniz.)

Şimdi kaldığımız yerden devam edelim. Siteden analiz için gerekli verileri çektik ama veriler özel bilgi içerebileceğinden dolayı satıcı isimlerine numara vererek filtrelememiz gerekiyor. Maalesef bunun için de biraz java yazmamız gerekiyor 🙁 aslında ilk yazdığımız programa entegre edebiliriz ancak ileride belki kendi başına bir programa dönüşme ihtimalinden dolayı ayrı olarak yazma karar verdim.


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
public class main {

public static void main(String[] args) {
File saveFilePath=new File("D:/MaskedResult.csv");

try {
List lines= Files.readAllLines(Paths.get("D://result.csv"));
lines.forEach(k->{
System.out.println(k);
});
int counter=1;
HashMap<String, Integer> mask= new HashMap<>();

for (String string : lines) {
String[] seperate=string.split(",");
if(seperate[0]=="locations")
continue;
mask.put(seperate[1], counter++);
}

BufferedWriter writer = new BufferedWriter(new FileWriter(saveFilePath.getAbsolutePath()));
writer.write("locations,owner,weight\n");

for (String string : lines) {
String[] seperate=string.split(",");
if(seperate[0]=="locations")
continue;
writer.write(seperate[0]+","+mask.get(seperate[1])+","+seperate[2]+"\n");
}

writer.flush();
writer.close();

saveFilePath=new File("D:/MaskedValues.csv");
writer = new BufferedWriter(new FileWriter(saveFilePath.getAbsolutePath()));
writer.write("owner,maskedValue\n");
Set ownerList=mask.keySet();
for (String string : ownerList) {

writer.write(string+","+mask.get(string)+"\n");
}
writer.flush();
writer.close();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

bir önceki programın çıktısı olan result.csv dosyası, bu programın girdisi olacak. Şöyle ki CSV dosyasında üç adet kolonun olduğunu daha öncesinde bahsetmiştim

  1. İlan yeri (location)
  2. İlan sahibinin ismi (owner)
  3. Belirli bir bölgede aynı ilan sahibinin kaç defa ilan verdiği (weight)

Şimdi 2. kolonu filtreleyeceğiz. Bu program çalışma sonunda 2 adet dosya üretecek;

  • MaskedResult.csv – bir önceki program ile aynı sonuç sadece ilan sahipleri rakam ile filtrelenmiş hali
  • MaskedValues.csv – Filtre numarası ve hangi kişiye denk geldiği gösteren dosya olacaktır. Biz tabii ki sadece filtrelenmiş numaralar üzerinden konuşacağız 🙂

Bütün bu süreç sonunda uğraşmak istemiyorsanız, analizde kullanacağımız dosyayı direk olarak buradan indirebilirsiniz.

Açıkçası asıl niyetim analizin cytoscape üzerinde nasıl yapıldığı değilde daha çok analiz sonucunun nasıl yorumlamamız gerektiği üzerine olacaktır. Eğer nasıl yapıldığına dair bir talep gelirse belki nasıl yapıldığına dair de bir yazı hazırlayabilirim. Ancak bu tarz yazılar sadece belirli bir grubun dikkatini çekeceğinden dolayı çokta fazla bir talep geleceğini açıkçası düşünmüyorum.

Analiz dataları cytoscape programından export ederek aldıktan sonra cytoscape.js kütüphanesini kullanarak javascript ile web sitesi için uygun halde entegre edebilirsiniz. Bu kütüphane ile node ve edge’ler arasında gezinmek için basit viewer ekleyebilirsiniz. Node ve edge’leri seçebilir, mouse scroll ileri geri hareketleri ile yakınlaşabilir veya uzaklaşabilirsiniz. Viewerın programlaması zamanında node style’ları ile oynayarak degree centrality ve closeness centrality gibi kavramları daha görsel hale getirebilirsiniz. Sadece bir noktaya değinmek istiyorum, mouse ile yakınlaştıktan sonra viewer da gezinmek için mouse’u biraz basılı tuttun ve pointer üzerinde yarı saydam bir daire oluşacaktır. Ondan sonra viewerda istediğiniz yere doğru çekerek gezinebilirsiniz. Evet şimdi gelelim sonuçları yorumlamaya…

Name Degree BetweennessCentrality ClosenessCentrality
Akse Mahallesi 20 0.30614335 0.09303808
Duraçalı Köyü 13 0.10503012 0.08034117
Çınarlı Mahallesi. 11 1.0 1.0
Kocakaymaz Köyü 11 0.28222401 0.10247412
Tahtalı Köyü 11 0.27100653 0.09702608
Geredeli Köyü 10 0.16886388 0.08947449
Alihocalar Köyü 10 0.03061045 0.07764925
Özgürlük Mahallesi 10 0.0416084 0.08313167
Mollafeneri Köyü 9 0.11682678 0.08418625
Duraklı Köyü 9 0.1233357 0.0816669
Piri Reis Mahallesi 9 0.10205832 0.05831253
Pelitli Köyü 9 0.07028195 0.08346434
Emek Mah. 8 0.02384924 0.08676274
Terziler Köyü 8 0.02384924 0.07673105
Karagöllü Köyü 8 0.10176805 0.09218627
Cami Mahallesi 8 0.14436429 0.07344988
Ahmethacılar Köyü 8 0.04636779 0.08879428
Balçık Köyü 7 0.02045983 0.07517055
Sevindikli Köyü 7 0.16931992 0.0855427
Cumaköy Köyü 7 0.04253262 0.07942336
Topluca Köyü 7 0.06382316 0.08882129
Yeşilkent Mahallesi 7 0.10560633 0.06119669
Seyitaliler Köyü 7 0.0354108 0.07892959
Orhan Mahallesi 7 0.08421794 0.07933705
Yavuz Sultan Selim Mahallesi 7 0.02045983 0.0671033
Sarımeşe Hürriyet Mahallesi 7 0.04063183 0.04781007
İhsaniye Merkez Mahallesi 7 0.06049837 0.06085235
Bulduk Köyü 7 0.34822431 0.09991446
Denizli Köyü 6 0.19123394 0.08809775

Şimdi çıkan ilk 30 sonucu inceleyelim. Degree değerine göre listeyi sıralattığımızda Gebze’ye bağlı Akse mahallesinin en ipi göğüslediğini görüyoruz.

Genel olarak çevresine baktığımızda bu bölgedeki arsa fiyatlarının ortalama 200 bin TL civarında olduğunu görüyoruz. Çevresini incelediğinizde Gebze organize sanayi bölgesine yakın olması da bu bölgedeki arsa hareketliliğinin sebebini aslında açıklıyor. Ancak yatırım yapılabilmesi için daha stratejik bölgeleri bulmaya devam 🙂

Network’ü giant komponentten ayırdığımızda, ilan sahiplerinin adedini node kalınlıklarından anlayabiliyorsunuz. yani 707, 570, 286 ve 472 numaralı ilan sahipleri Akse mahallesini en iyi tanıyan kişiler olduğu yorumunu da yapabiliriz. Bu bölgedeki en çok arsa ilanı sahibi kişilerde bunlardır. Büyük ihtimal bu kişiler birer emlakçı ve birbirlerini tanıma ihtimali çok yüksektir. Bunların dışındaki numaralar büyük ihtimal bireysel satıcıları gösteriyor.

Şimdi akse mahallesinde degree değeri en yüksek olan 707 numaralı ilan sahibinin başka hangi yerlere ilan verdiği yerleri inceleyelim. İlan yerlerini incelediğinizde aralarında direk olarak herhangi bir bağ bulunmuyor. Ancak bu iki arsada ilk otuzun içinde.

Burada dikkatimi çeken başka bir nokta ise 570 ile 707 numaralı kişilerin Gebze’nin dışında ortak eleman olarak Derince’de de ilanları var. 570 numaralı kişide Derince karagöllü köyünde satılık arsası ve 707 numaralı kişininde Derince Tahtalı Köyünde satılık ilanı gözüküyor. Genel satış portföyünü incelediğinizde, Gebze bölgesinde alım satım işleri yapmalarına rağmen derince köyleriyle de ilgilenmişler.

286 numaralı kişi genel olarak Gebze bölgesi ile ilgileniyor. Bu kişi üzerinden başka bir bağlantı inceleyemiyoruz. Şimdi Degree değeri yüksek Duraçalı köyünü inceleyelim.

Akse mahallesinden sonra en yüksek degree değerine sahip olan duraçalı köyü, öne çıkan 795 ve 855 numaralı kişilerin bağlantılarını inceleyeceğiz. Ancak ondan önce aşağıdaki haritaya baktığımızda;

Köyün Kandıra merkez ile tatil yöresi olan Kefken arasında kaldığını görüyoruz. Çevre köylerdeki arsa fiyatlarını incelediğinizde ise yatırımlık için en uygun yerin burası olduğunu görüyorsunuz. Genel olarak fiyatlandırma yol kenarına yakın arsa fiyatları 100 bin TL ve civarında, uzak yerlerin ise 50 bin TL civarında konumlandırıldığını görebiliyorsunuz. Yolun üzerinden geçtiği Duraçalı’ya en yakın köyün Kıncıllı Köyünde Arsa fiyatlarının özellikle yola yakın yerlerin ortalama 200 bin TL olduğunu görebilirsiniz. Şimdide Duracalı köyünde ilan veren sahiplerin bunla beraber hangi bölgeler ile ilgilendiklerine de bakalım.

Köylere baktığımızda tamamı Kandıra’nın köyleri olduğunu görüyoruz. Duraçalı haricinde ki diğer tüm köyler Kandıra’nın altında kalan kalan bölgededir.

855 numaralı kişinin ilan listesine baktığınızda degree si en yüksek olan Balcı köyü, Kandıra’ya yakın ama ilgiden uzak  ancak fiyat olarak uygun gözüküyor. Bu bölgede yatırım yapılması düşünülüyorsa 795 numaralı kişi ile iletişime geçilmesinin daha uygun olacağı gözüküyor.

Degree sırasına göre 3. olan Derince – Çınarlı mah. incelediğimizde giant komponente bağlı olmadığını görüyoruz. Büyük ihtimal ilan sahipleri aynı zamanda arsa sahipleri olabilir. Çünkü hepsinin sadece 1 adet ilanı var ve hiç bir şekilde bir emlakçı ile bağlantıları yok.

Kocakaymaz köyünü incelediğimizde  köyün İzmitin kuzeyi ile kandıranın güneyinde konumlandığını görüyorsunuz

Genel olarak incelediğinizde D605 numaralı karayolu bu bölgedeki arsa fiyatlarını belirlemede önemli bir rol oynamış. Köyün yol düzergahında ve İzmite yakın olması bu bölgeyi tercih sebebi yapmış olduğunu düşünüyorum. Ancak arsa fiyatları ortalama olarak 150 bin TL üzerinde bu sebeple yatırım yapmaktan benim için uzak 🙂 Bu arada aslında ben kendim için değerlendiriyorum. Belki bu değerler sizin için uygun olabilir.

540 numaralı kişiyi incelediğimizde 1 ilan Karaabdülbaki köyünde bir kaç ilanda Bağlıca köyünden çıkıyor. Her ikisininde degree değerleri düşük olduğundan fazla değerlendirmeye katmıyorum.

Buraya kadar incelediğimiz alan içerisinde yatırım yapmaya en uygun yer Duraçalı olarak gözüküyor. Ancak listedeki ilk 10 bölge incelenip ileride yapılması muhtemel projelerle beraber değerlendirmesi en uygun olacaktır. Genel olarak emlakçıların elinde, degree değeri yüksek olmasa da Derince köylerinden satılık arsa var. Bu durum aslında gelecekte bu bölgelerin değerlenme ihtimalinin olduğunu gösteriyor.

Evet, beraber bir social network incelemesi yaptık. Eksik gördüğünüz veya konuşmak istediğiniz bir konu olursa, hiç çekinmeyin konuşabiliriz.

Umarım faydalı olmuştur.
Gökhan

http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/google_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/myspace_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/facebook_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/twitter_48.png

Best of Ludovico Einaudi

Modern çağın en ünlü piyanistlerinden olan Ludovico Einaudi’nin bana göre olan en iyi parça listesini paylaşıyorum. İyi dinlemeler 🙂

  • L’origine nascosta
  • I giorni
  • Divenire
  • Una Mattina
  • Andare
  • Nuvole Bianche
  • Le onde
  • Giorni dispari
  • Oltremare
  • Elegy for the Arctic
  • Fly
  • Fuori Dalla notte
http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/google_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/myspace_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/facebook_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/twitter_48.png

Sosyal ağ analizi ile belirli bölgelerdeki değerlenebilecek arsaların tespiti -1

Merhabalar,

Yüksek lisansta aldığım sosyal network dersinde gördüklerimi özetleyebileceğim bir çalışma yaptım. Peki neydi bu derste öğrendiklerimiz? Kısa bir özet bilgi sonrasında tekrar konumuza girelim: Tam türkçesi çizge teorisi olan graph theory, Leonhard Euler tarafından 1736 yılında ilk temelleri atılıyor. Genel olarak iki farklı kümenin arasında ilişkileri inceliyor. Kümenin her bir elemanına node(Düğüm) ve bunlar arasındaki ilişkilere de edge olarak tanımlanıyor. Yapılan network analizi sonucunda küme elemanlarının konumunu belirleyen bazı olgular var mesela bunlardan birkaçı degree, closeness ve betwenness vb. dır. Bunların herbirini açıklamak bu yazı için gerçekten uzun olur ama en basitinden bir tanesini açıklamakta fayda var. Açıklaması en kolayı olan degree, küme içinde bir düğüme gelen edge sayısıdır.  İncelemede degree centrality’i kullanacağız. Buna ek olarak closenness’ı analizi anlattığım esnada açıklayacağım.

Şimdide biraz kullanıldığı alanlardan bahsedersem iyi olacak. 🙂 Çok ilginç alanlarda kullanıldığını ve gerçekten yorumlandığında ilginç bilgilerin çıktığını görüyorsunuz. Örneğin CIA tarafından kırmızı bültenle aranan isimleri aktif olarak kullanıldığının hakkında yayınlanan makaleler var (Saddam Hüseyinin yakalanışında kullanılan sosyal network analizini buradan okuyabilirsiniz.) veya Mısırda Arap baharı zamanında sosyal medyadan atılan facebook mesajları ve twitter twitlerini inceleyerek olayları başlatan kişi, kişileri veya ülkeleri ortaya çıkarmaya çalışan network analiz çalışmaları var. (Buradan okuyabilirsiniz) veya bu bahsettiklerimin dışında, gıda sektöründe ürün çıkaran firmaların yeni ürün çıkaracakları zaman farklı ülkelerde kullanılan gıda ürünlerinin içeriklerini sosyal network analizi ile belirleyerek farklı kültürlere göre ürünlerinin insanların damak tadına uygun ürünler çıkarmaya çalışılan makaleler var ve bunun gibi bir çok alan… Bilgi orada duruyor, yeter ki  o yığının içinden istediğimiz veriyi çıkarabilin..

Çok çok kısa bilgilendirmeden sonra konumuza geri dönersek;

Amacımız herhangi bir emlak sitesinden arsa ilanları ve ilan sahiplerinin bilgilerinden oluşan bir model kurmak olacaktır. Model ile ilgili varsayımlarım şunlardır;

  • Bir bölgede ne kadar çok ilan varsa o bölge o kadar popülerdir.
  • Bir satıcı birden fazla bölgelerde satış ilanı verebilir. Eğer bu farklılıklar ne kadar fazla olup ve bir bölgede yoğunlaşırsa bu bölge popüler olmaya adaydır.

Bölgedeki ilan sayısı graph teorisinde degree centrality’e işaret ediyor. Ne kadar çok ilan varsa o kadar edge sayısı olacaktır. Bu demek oluyor ki ilk olarak bakmamız gereken yer degree değerinin yüksek olmasıdır. Bu durum da ilk grup içerisinden eleme yapabilmemizi sağlayacaktır. Gelelim ikinci varsayıma… Bir satıcı birden fazla ilan verip ve birden fazla bölgeyle ilgileniyorsa bu kişinin emlakçı olduğunu gösterir 🙂 birden fazla emlakçının benzer bölgeyle ilgilendikleri bölgelerin kesişim kümesi de popülerliğin başka bir göstergesi olabilir. Ama dediğim gibi aslında bunlar modeli kurmak için varsayımlardır.

İlk olarak herhangi bir emlak sitesinden verilerin çekilebilmesi için gerekli olan Jsoup’un kullanımına;

Siteden verilerin çekilmesi için Java dilinde yazdığım program ile Cytoscape programıyla yapılan analiz, herhalde en az 2 hafta uğraşmışımdır. Lütfen okurken de unutmayın altında yatan emeği 🙂 Site ismini direk olarak vermeyeceğim onun yerine XYZ.com gibi bir notasyon kullanacağim. Hadi bakalım, ilk olarak XYZ.com emlak sitesinden Jsoup kütüphanesini kullanarak nasıl web scraper yapacağınızı anlatacağım. Başlayalım…

Maven projesi kullanıyorsanız aşağıdaki kodları POM’a eklemeniz gerekmektedir. Maven sizin yerinize kütüphaneyi indirecektir.


<dependency>
<!-- jsoup HTML parser library @ http://jsoup.org/ -->
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>

eğer maven projesi başlatmıyorsanız Jsoup’un sitesine gidip buradan kütüphaneyi bilgisayarınıza indirebilirsiniz. Daha sonrada indirdiğiniz bu kütüphaneyi projenize eklemeniz gerekiyor.

İndirilen tüm bilgileri arraylistte tutabilmek için küçük bir sınıf yazmanız gerekiyor. Ben indirdiğim sitenin adında bir sınıf oluşturmuştum. Bu yazı dizisindeki emlak sitesinin isim notasyonu olarak XYZ olacak tekrar hatırlatmakta fayda var.


import java.text.SimpleDateFormat;
import java.util.Date;

public class XYZ{
private String sahip;
private String mKare;
private String fiyat;
private Date ilanTarihi;
private String ilçe;
private String tamYer;
private int weight;
public XYZ(String sahip, String mKare, String fiyat, Date ilanTarihi, String ilçe, String tamYer) {
super();
this.sahip=sahip;
this.mKare = mKare;
this.fiyat = fiyat;
this.ilanTarihi = ilanTarihi;
this.ilçe = ilçe;
this.tamYer=tamYer;
}

public String getmKare() {
return mKare;
}
public void setmKare(String mKare) {
this.mKare = mKare;
}
public String getFiyat() {
return fiyat;
}
public void setFiyat(String fiyat) {
this.fiyat = fiyat;
}
public Date getIlanTarihi() {
return ilanTarihi;
}
public void setIlanTarihi(Date ilanTarihi) {
this.ilanTarihi = ilanTarihi;
}
public String getIlçe() {
return ilçe;
}
public void setIlçe(String ilçe) {
this.ilçe = ilçe;
}

public String getSahip() {
return sahip;
}

public void setSahip(String sahip) {
this.sahip = sahip;
}

public String getTamYer() {
return tamYer;
}

public void setTamYer(String tamYer) {
this.tamYer = tamYer;
}

@Override
public String toString() {
return "XYZ [Sahibi= "+sahip+" mKare=" + mKare + ", fiyat=" + fiyat + ",
ilanTarihi=" + ilanTarihi.toLocaleString()
+ ", ilçe=" + ilçe + "]";
}

public int getDayThrough(){
SimpleDateFormat format= new SimpleDateFormat("dd.MM.yyyy");
Date now=new Date();

long d1=now.getTime();
long d2=ilanTarihi.getTime();

return (int)Math.abs((d1-d2)/(1000*60*60*24));
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((sahip == null) ? 0 : sahip.hashCode());
result = prime * result + ((tamYer == null) ? 0 : tamYer.hashCode());
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
XYZ other = (XYZ) obj;
if (sahip == null) {
if (other.sahip != null)
return false;
} else if (!sahip.equals(other.sahip))
return false;
if (tamYer == null) {
if (other.tamYer != null)
return false;
} else if (!tamYer.equals(other.tamYer))
return false;
return true;
}

public int getWeight() {
return weight;
}

public void setWeight(int weight) {
this.weight = weight;
}
}

şimdi de asıl koda gelelim. Aşağıdaki kodu çalıştırdığınızda, kod istenilen sayfalardan verileri çekerek “D:\” diskine Result.csv olarak dosyayı kayıt edecek.


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import org.jsoup.Connection.Response;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

import domain.XYZ;

public class main {
private static int say=0;

public static void main(String[] args) {
File saveFilePath=new File("D:/result.csv");
ArrayList sahip=new ArrayList<>();
ArrayList sahipWeight=new ArrayList<>();

/*
*Verilen url isimli string parse edilecek adresi
*gösteriyor. Arama parametreleri ise;
*pagingSize gösterilen sayfadaki ilan adetini gösteriyor.
*pagingOffset ise hangi sayfada olduğunuzu gösteriyor.
*/
String url="https://www.XYZ.com/satilik-arsa/kocaeli?pagingOffset=50&amp;amp;amp;pagingSize=50";
try {
for (int a=0;a<951;a=a+50){ if(a>=1)
url="https://www.XYZ.com/satilik-arsa/kocaeli?pagingOffset="+a+"&amp;amp;amp;pagingSize=50";
Response response= (Response) Jsoup.connect(url).timeout(300000).execute();

//Bağlantı sağlanıp döküman parse ediliyor.
Document doc=response.parse();

// a[class='classifiedTitle'] ile DOM elemanı seçilip ilgilideğeri alınıyor.
//Diğer verilerde bu mantıkla yazılmıştır.
Elements detays=doc.select("a[class='classifiedTitle']");
Elements ids=doc.select("tr.searchResultsItem");
Elements mkares=doc.select("td.searchResultsAttributeValue");
Elements fiyat=doc.select("td.searchResultsPriceValue");
Elements dates=doc.select("td.searchResultsDateValue");
Elements locations=doc.select("td.searchResultsLocationValue");
//Herbir ilanın içine girilerek arsanın tam konumu ve ilan sahibinin verileri alınıyor.
for(int i=0;i<dates.size();i++){ String urlDetay="https://www.XYZ.com"+detays.get(i).attr("href"); Response responseDetay= (Response) Jsoup.connect(urlDetay).timeout(300000).execute(); Document docDetay=responseDetay.parse(); Elements sahips=docDetay.select("div[class='username-info-area']"); Elements tamYers=docDetay.select("h2 a"); sahip.add(new XYZ(sahips.get(0).text(), mkares.get(i).text(), fiyat.get(i).text(), fixDate(dates.get(i).text()), locations.get(i).text(), tamYers.get(2).text()) ); } } BufferedWriter writer = new BufferedWriter(new FileWriter(saveFilePath.getAbsolutePath())); writer.write("locations,owner,weight\n"); for (XYZ element : sahip) { sahip.stream().forEach( k->{

if(element.equals(k)){
say++;
}
});;
element.setWeight(say);
if(!sahipWeight.contains(element))
sahipWeight.add(element);
say=0;
}

//Tüm veriler alındıktan sonra yazma işlemine geçiliyor.
for (XYZ element : sahipWeight) {
//writer.write(element.getIlçe()+","+element.getSahip()+","+element.getDayThrough()+"\n");
writer.write(element.getTamYer()+","+element.getSahip()+","+element.getWeight()+"\n");
System.out.println(element.toString());
}

writer.flush();
writer.close();

} catch (IOException | ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

// Ayı rakam olarak ifade edebilmek için bir metot.
private static Date fixDate(String date) throws ParseException{
String[] parseDate=date.split(" ");
String mounth="";
SimpleDateFormat format= new SimpleDateFormat("dd.M.yyyy");
switch (parseDate[1]) {
case "Ocak":
mounth="01";
break;
case "Şubat":
mounth="02";
break;
case "Mart":
mounth="03";
break;
case "Nisan":
mounth="04";
break;
case "Mayıs":
mounth="05";
break;
case "Haziran":
mounth="06";
break;
case "Temmuz":
mounth="07";
break;
case "Ağustos":
mounth="08";
break;
case "Eylül":
mounth="09";
break;
case "Ekim":
mounth="10";
break;
case "Kasım":
mounth="11";
break;
case "Aralık":
mounth="12";
break;

default:
break;
}

return format.parse(parseDate[0]+"."+mounth+"."+parseDate[2]);
}

}

Aslında kodu biraz inceleye bilirseniz, şunu fark edeceksiniz ki aslında arka planda gereksiz çok fazla hesaplanan veri var. Bu veriler hesaplanıyor ancak en son programın çıktısı olan Result.csv dosyasına yazılmıyor. Bunun en büyük sebebi ise ilk başta tam olarak modeli oturtamamdan kaynaklanıyor. Aslında csv dosyasında analizde kullanılan kümeler kocaeli bölgesindeki arsa isimleri, ilan sahiplerinin isimleri ve ilan sahipleri aynı bölgeden kaç kez ilan verdiğidir.

Bu Jsoup hakkında yazdıklarıma ek olarak, hangi DOM elemanını nasıl bulunacağına dair kafanızda soru işaretleri varsa Jsoup sitesindeki Try Jsoup butonuna tıklayarak hangi DOM elemanını seçmeniz gerektiği konusunda sizi yönlendirecektir. (Buradan ulaşabilirsiniz.)

Bir sonraki yazımda kurduğumuz modelin yapısını ve cytoscape’te yapılan analizini inceleyeceğiz. Belki 3. bir yazı olarak da gephi ile bakabiliriz.

Görüşmek üzere
Gökhan

http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/google_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/myspace_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/facebook_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/twitter_48.png

Using Jlink in Eclipse

Hello again,

Today, I’m going to show you how to use Creo jlink in Ecilipse. First of all, you have to install Ecilipse enterprise edition (called Eclipse-EE and you can download it from here.)

After install it, creating a new java project.

then create Creo configuration file in project folder.

First file is config.pro. it must contain following statement.

jlink_java_command C:\Program Files\Java\jdk1.8.0_121\bin\java.exe -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

Please take consider that jdk folder can be different in your computer. please check version of the java from your computer.

other file is protk.dat.

name updatewithxml
startup java
java_app_class updatewithxml
java_app_start startApp
java_app_stop stopApp
allow_stop true
delay_start false
text_dir C:/Users/frost_tiger/workspaceEE/ZFxmlUpdater/text
java_app_classpath C:/Users/frost_tiger/workspaceEE/ZFxmlUpdater/bin/
end

you can see following picture files of folder.

Now I’m supposing you know all details configuration of creo jlink. Just I want to give you a couple of tricks.

for compiling the project, as you already know that run and debug button don’t work. we have to built project. You can see clearly where the button locates in eclipse.

then we can see class files in bin folder.

however, If I want to debug my program simultaneously with Creo. We have to use Remote Java Application.

before click remote java application. Creo must be opened.

with clicking debug button. Eclipse is listening what you are doing in creo until catch your breakpoint.

I hope that it is useful for all of you.
BestRegards,
Gökhan

http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/google_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/myspace_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/facebook_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/twitter_48.png

KAI vs Global Yoshikin

Evet, bugün başka bir bıçak yazısı ile karşınızdayım. Daha öncesinde KAI ile bir Türk firması olan Sürbısa’yı karşılaştırmıştım.(Yazımı buradan okuyabilirsiniz.) Şimdide, o zamanın kazananı olan KAI ile Global Yoshikin mutfak bıçağını karşılaştıran bir yazı yazmaya çalışacağım.

Başlıyoruz…

Bir önceki yazımda KAI ile yazdıklarımı kısa bir özetlersem, bicakcim.com sitesinden satın almıştım. Bıçak ile ilgili tüm bilgilere gerekse site üzerinden gerekse de bıçakla gelen kılavuz üzerinden ulaşabiliyorsunuz(sertlik, bileme açısı gibi…) paketleme tasarımı ve ambalajlama rakibine göre gerçekten kaliteli ve ucuz hissiyatı vermiyor. İlk bileme keskinliği yaklaşık 2 ay gidiyor ve 2000 grit bileme taşı ile biledikten sonra keskinliği yaklaşık 1 ay kadar taşıyabiliyor. Daha sonra 1000 grite düşmeden tekrar 2000 grit bileme taşı ile bileme yaptığınızda ustura seviyesine tekrar çıkarabiliyorsunuz. Neyse hatırlamak için bu kadar bilgi yeter. Birazda Global hakkında bilgi verelim…

Bıçağı crate&barrel sitesinden Global® Soyma Bıçağı 8cm  kargo ile beraber 196 TL ye satın aldım. Satın alma sürecinde herhangi bir problemle karşılaşmadım. Dört gün içerisinde elime ulaştı. Paketi açtığımda global, ilk sürprizini yaptı 🙁 Öncelikle kargo paketlemesinden bahsetmiyorum, crate&barrel güzel bir şekilde paketlemişti. Ancak ürünün kendi ambalaj paketi tam bir faciaydı. Fotoğrafını çekmedim ama keşke çekseydim. Dikdörtgen olarak kesilmiş karton üzerinde iki adet amerikan kelepçesiyle tutturulmuştu. Üzerinde hiç bir bilgilendirme kağıdı yoktu ve bıçağın keskin tarafı açıktaydı ve üst tarafında da ufak bir deformasyon vardı. İlk olarak bu manzarayı görünce gerçekten aldığıma pişman oldum. Ancak daha sonra yinede kullanmaya karar verdim.

Ürün öncelikle hafif, tutması ve kavraması kolay ancak bıçağın sap kısmı yekpare ve ince olduğundan dolayı avuç içini tam doldurmuyor ilk başlarda biraz garipsiyorsunuz ancak alışınca sıkıntı ortadan kalkıyor. Eşimin ilk başlarda sevmediğini hissettim genelde ilk zamanları pek kullanmıyordu, şimdilerde elinden düşürmüyor 🙂 satın almamdan itibaren 3 ay gibi bir süre geçti ve geçen akşam bıçağın keskinliğini kontrol ettim. Hala hatırı sayılır bir keskinliği vardı KAI’ye göre keskinliği daha uzun kalıyor. Çünkü KAI bu süre zarfından çoktan bileylenmek istiyordu. Akşam 1000 gritlik  yağlı taşımla biraz bileyledikten sonra 2000 gritlik seramik taşımla devam ettim. Yaklaşık 10 dk. bileyleme sonunda sonuç mükemmel. Süper bir keskinliğe ulaştı. Kesinlikle keskinlik alma konusunda KAI’nin de üstünde diyebilirim.

şimdi yazdıklarımı toparlarsam, aslında yukarıda keskinlik tutma biley alma açısından Global’in KAI’den üstün bunu gönül rahatlığı ile söylerim. Ama ambalajı benim için tam bir hayal kırıklığıydı. Satın alma kolaylığına gelirsek Global piyasada pek bulunmuyor. KAI’yi bicakcim.com üzerinden temin edebilirsiniz. Belki yurt dışından temin edebilirsiniz. Benim açımdan kazanan Global Yoshikin oldu. Şimdi sıra bir adet Global Yoshikin şef bıçağı almaya geldi 🙂

Bu yazı kesmediyse aşağıdaki linkte 11 adet bıçağı karşılaştırmalı olarak açıklıyorlar. Bilin bakalım kazanan kim 🙂

Chefs Knives Rated

İyi günler dilerim.
Gökhan

http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/google_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/myspace_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/facebook_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/twitter_48.png

Set System Environment Variables for J-link

Hello again,

I’m standing front of you about setting system environment variables for jlink today. I have expressed lots of things about setup Jlink connection in the time that before but I have to reformat my operating system and lost everything that I had. 🙁 I have installed PTC Creo and faced some problems about setting variables that creo need. Meanwhile I figure out how to solve this solution again.

We have two variables that we have to set:

PRO_COMM_MSG_EXE =C:\Program Files\PTC\Creo 3.0\M090\Common Files\x86e_win64\obj\pro_comm_msg.exe

PRO_DIRECTORY = C:\Program Files\PTC\Creo 3.0\M090\Parametric

Regards,
Gökhan

http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/google_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/myspace_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/facebook_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/twitter_48.png

Java – Jaro Winkler algoritması ile String karşılaştırma

Merhabalar,

Bir text mining konusu ile karşınızdayım. Kardeşim, iki kelimeyi karşılaştırıp benzerlik oranını yüzde olarak ifade edebilecek bir program yazmamı istemişti. Kısa bir araştırma sonrası  bu konu ile ilgili bir çok araştırma ve makaleye rastladım. Bugünkü blog yazımda bu araştırmalardan biri olan Jaro-winkler algoritmasından bahsedeceğim. tabiki arkasındaki çalışan matemetik algoritmasından değilde daha çok programınıza nasıl yerleştireceğinizden bahsedeceğim.

https://github.com/tdebatty/java-string-similarity

yukarıda verdiğim github adresinden tüm karşılaştırma sınıflarını indirebilirsiniz. indirdiğiniz dosyayı herhangi bir sıkıştırma programı ile açıp ecilipse’ın src klasörünün altına info.debatty.java.stringsimilarity şeklinde klasör oluşturun. Jaro-Winkler ile ilgili dosyaları bu klasörün altına koyun.

basit bir main sınıfı koyarak aşağıdaki gibi bir test simülasyonu yapabilirsiniz.

http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/google_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/myspace_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/facebook_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/twitter_48.png

Hyundai Accent Era şanzıman yağı değişimi hakkında

Merhabalar tekrar,

Bugün aracım ile ilgili bir bilgi paylaşmak istiyorum. Belki internette arama yapan insanlar için benim tecrübelerim de onlara yol gösterir. 2009 model Hyundai Accent Era marka bir aracım var. Aracı yeni aldığımda motorun tüm sıvılarını değiştirmek istedim. Bu değişim listesinin içerisine şanzıman yağınıda dahil ettim. Uzun bir süre araştırma yaptıktan sonra, kullanma kitapçığında tavsiye edilen 75W-85 numaralı yağı piyasada bulamadım. Formlarda birkaç kişinin aynı model araca 75W90 numaralı yağı koyduklarını ve hiçbir sıkıntı yaşamadıklarını okudum. Biraz daha araştırma yaparak, mobil markasının 75W-90 numaralı yağını almaya karar verdim. Internet üzerinden litresi 48 TL den 3 litre olarak toplam 144 TL vererek satın aldım.

Özel bir serviste, aracın bakımları esnasında yağıda değiştirtdim. Özellikle ne kadar işçilik parası aldıklarını bilmiyorum. Çünkü o gün araç üzerinde düşündüğüm herşeyi değiştirdim. Şimdi gelelim araçta neler oldu…

Şanzıman gerçektende kötüleşti. İlk çalıştırma zamanından beri takılmalar, geçişlerde sertlik ve kemikli geçme gibi. Özellikle havanın çok soğuk olduğu günlerde 1. vitesten 2. vitese geçmek için aracı durdurmanız gerekiyor, o derece yani… ancak araç ısınmaya başladığında vites gayet güzel bir şekilde yumuşuyordu. Bizde tekrar değiştirmeye karar verdik ve Hyundai yetkili servisinden şanzıman yağı değişimi için gün aldık.

Servis yağ değişimi için 115 TL aldı ve aracın temizliğinide yaparak aynı gün teslim etti. Peki Sonuç ??

Gerçek istediğim hale geldi, geçişler fevkalade bir şekilde yumuşamış  o eski yağ halinde kullandığımız halinden eser kalmamıştı.

Peki, ben birşey olmaz diyerek farklı yağ koymam aslında neye sebep olmuştu?

İlk önce tablolarla bir karşılaştıralım:

Hyundai’nin tavsiye ettiği yağın özellikleri

SHELL Hyundai Gear Oil 75W-85
Adı Metot Birimler 75W-85
Yoğunluk @ 15°C DIN EN ISO 12185 g/ml 0.893
Viskozite @ 100°C ASTM D445 mm²/s 12
Viskozite @ 40°C ASTM D445 mm²/s 66
Brookfield Viskozitesi@ -40C(75W) DIN 51398 mPa.s (cP) N/A
Akma Noktası DIN-ISO 3016 °C -40

Aşağıdaki tabloda benim internet sitesinden aldığım mobil 75W-90 özellikleri:

Mobilube 1 SHC 75W-90
Adı Metot Birimler 75W-90
Yoğunluk @ 15°C DIN EN ISO 12185 g/ml 0.868
Viskozite @ 100°C ASTM D445 mm²/s 15,1
Viskozite @ 40°C ASTM D445 mm²/s 102
Brookfield Viskozitesi@ -40C(75W) DIN 51398 mPa.s (cP) 66000
Akma Noktası DIN-ISO 3016 °C -54

Aşğıdaki tablolarda castrol markasının ürünlerinin özellikleri:

CASTROL SYNTRANS AT 75W-90
Adı Metot Birimler 75W-90
Yoğunluk @ 15°C DIN EN ISO 12185 g/ml 0.844
Viskozite @ 100°C ASTM D445 mm²/s 14.1
Viskozite @ 40°C ASTM D445 mm²/s 99
Brookfield Viskozitesi@ -40C(75W) DIN 51398 mPa.s (cP) 49000
Akma Noktası DIN-ISO 3016 °C -42

2. ürün:

CASTROL SYNTRANS MULTIVEHICLE 75W-90
Adı Metot Birimler 75W-90
Yoğunluk @ 15°C DIN EN ISO 12185 g/ml 0.873
Viskozite @ 100°C ASTM D445 mm²/s 15.09
Viskozite @ 40°C ASTM D445 mm²/s 76
Brookfield Viskozitesi@ -40C(75W) DIN 51398 mPa.s (cP) 20000
Akma Noktası DIN-ISO 3016 °C -51

3. ürün:

CASTROL SYNTRANS 75W-85
Adı Metot Birimler 75W-85
Yoğunluk @ 15°C DIN EN ISO 12185 g/ml 0.837
Viskozite @ 100°C ASTM D445 mm²/s 11.9
Viskozite @ 40°C ASTM D445 mm²/s 64.6
Brookfield Viskozitesi@ -40C(75W) DIN 51398 mPa.s (cP) 18000
Akma Noktası DIN-ISO 3016 °C -60

Neyse artık yavaş yavaş sonuçlandıralım 🙂 …

Sadece 40°C deki viskozite değerlerine baksanız bile farkedersinizki aradaki fark neredeyse 2 katı. Yani aslında koyduğum mobil yağı Shell yağından daha yoğun(Kalın) bir yağ imiş. 3-5 farketmez diyerek, kullanma klavuzundan farklı yağ koymamanızı tavsiye ediyorum. Bu arada sıcaklık değerleri yüksek seyreden bölgelerde 75W-90 da kullanırsanız, belki herhangi bir sıkıntıyla karşılaşmayabilirsiniz. Çünkü okuduğum formda birisi İzmirde oturduğunu ve bu yağı koduğunu ve herhangi bir sıkıntıyla karşılaşmadığını belirtiyor. Karar sizin…

Sevgi ve Saygılarımla,
Gökhan

http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/google_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/myspace_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/facebook_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/twitter_48.png

Changing Creo Parameter with J-link

Hello again,
I will stay another topic in front of you today and explain changing parameter in PTC Creo with using j-link.
J-link give more flexibility to customize design but it’s limited version of J-toolkit. You can find lots of document to explain what is differences between J-link and J-toolkit. Due to the lack of toolkit license, I keep working on going projects with J-link.

Let start;

Before starting to explain, I have to warn readers for using swing library. I had tried many times working with swing library and j-link together. At the beginning time. everything is working out all right however after clicking buttons or whatever, the GUI hags. In order to avoid this situation, I will use JDialog frames.


public class JLHW_Btn1_CmdListener extends DefaultUICommandActionListener {

// Handler for button push
//
@Override
public void OnCommand () {
try {
//Btn1_callback();
session.SetConfigOption("regen_failure_handling", "resolve_mode");
JDialog f = new JDialog();
JButton jb = new JButton("Değiştir");
JLabel jl1=new JLabel("İç Çap:");
JLabel jl2=new JLabel("Dış Çap:");
jtIc=new JTextField(String.valueOf(getDiameter(DiameterType.INNER)));
jtDis=new JTextField(String.valueOf(getDiameter(DiameterType.OUTER)));
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
changeDiameter(Integer.valueOf(jtDis.getText()), DiameterType.OUTER);
changeDiameter(Integer.valueOf(jtIc.getText()), DiameterType.INNER);
} catch (Exception ex) {
try {
DisplayMessage(ex.getMessage());
} catch (Exception ex1) {
Logger.getLogger(jlinkhelloworld.class.getName()).log(Level.SEVERE, null, ex1);
}
}

}
});
f.setAlwaysOnTop(true);
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
f.setLayout(new FlowLayout(FlowLayout.LEFT));
f.add(jl1);
f.add(jtIc);
f.add(jl2);
f.add(jtDis);
f.add(jb);
f.pack();
f.setModal(true);
f.setVisible(true);
}
catch (Exception e) {
writeLog("Exception thrown by Btn1_callback method: " + e.toString());
}
}

In order to enable to regenerate the model, we have to set “regen_failure_handling” mode to “resolve_mode”. Please look at the line 9 above codes. Otherwise program will throw exception. As my experience, previously, unfortunately I couldn’t find any solutions for these exceptions.

Above picture also shows how program looks like. When the button is pressed. code calls following codes;


public void changeDiameter(int cap,DiameterType diameterType) {
Parameter param=null;
try {
model = App.session.GetCurrentModel();
switch(diameterType){
case OUTER:
{
param=this.model.GetParam("DISCAP");
ParamValue paramVal= pfcModelItem.CreateIntParamValue(cap);
param.SetValue(paramVal);
}
case INNER:
{
param=this.model.GetParam("ICCAP");
ParamValue paramVal= pfcModelItem.CreateIntParamValue(cap);
param.SetValue(paramVal);
}
}
} catch (jxthrowable ex) {
ex.printStackTrace();
}
finally{
try {

((Solid) model).Regenerate(null);
model.Display();
} catch (jxthrowable ex) {
try {
DisplayMessage(ex.getMessage());
} catch (Exception ex1) {
Logger.getLogger(jlinkhelloworld.class.getName()).log(Level.SEVERE, null, ex1);
}
}
}
}

there are two different parameters to controlling diameter of outer and inner of ring. Outer diameter is controlled by “DISCAP” and inner diameter is called “ICCAP” in parameter table.

However, before the Jdialog comes to screen, these parameters are read by following code in advance. User can see easily what the parameters values are, on Jdialog form.


public int getDiameter(DiameterType diameterType) throws Exception {
model = App.session.GetCurrentModel();
switch (diameterType) {
case OUTER:
{
Parameter param=model.GetParam("DISCAP");
ParamValue paramVal=param.GetValue();
model=null;
return paramVal.GetIntValue();
}
case INNER:
{
Parameter param=model.GetParam("ICCAP");
ParamValue paramVal=param.GetValue();
model=null;
return paramVal.GetIntValue();
}
default:
return 0;
}

}

I have already uploaded all this algorithm files in my GitHub account. You can find download following link.

https://github.com/FrostTiger/changingCreoParameter

But for using this codes you must adjust some following details:

  • C:\Users\[User folder]\Documents\NetBeansProjects\jlinkhelloworld – folder address must be the same.
  • must be checked config.pro, protk.dat and run.bat files. File paths of content of these files must be checked according to user computer.

Regards,
Gökhan

http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/google_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/myspace_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/facebook_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.gokhansaman.com/wp-content/plugins/sociofluid/images/twitter_48.png