Python Programlama
Python Programlama
com
PYTHON PROGRAMLAMA
(ANSYS SCRIPTING)
1. GİRİŞ
Bu notlarda Ansys içerisindeki işlemleri otomatik olarak gerçekleştirmek, değişik optimizasyon uygulamaları
yapmak için nasıl programlanacağı anlatılacaktır. Bu konuda önceliklee Ansys'nin kullandığı Phyton (IronPhyton)
anlatılacak.
Python genel amaçlı bir yorumlama tabanlı (derleme değil), interaktif, nesne tabanlı ve yüksek seviye bir
programlama dilidir. Bu dil Guido Van Rossum tarafından 1985-1990 yıllarında geliştirilmiştir. Genel halk lisansı
altında kullanılmaktadır. Okunabilirliği yüksek bir dil olarak tasarlanmıştır. Diğer dillere nazaran daha az
sözdizimsel yapılara sahiptir. Özelliklerini şu şekilde sıralayabiliriz.
* Python Yorumlanır: Python yorumlayıcısı tarafından çalışma esnasında yorumlanarak işlenir. Çalıştırmadan
önce derlemeye ihtiyaç yoktur. Bu haliyle PERL ve PHP ye benzer.
* Python etkileşimli bir dildir: Program yazım esnasında yorumlayıcı ile etkileşim halinde program yazılabilir.
* Python nesne tabanlıdır: Python nesne tabanlı stil ve teknikleri içermektedir.
* Başlangıç seviyesi dilidir: Python başlangıç seviyesindeki programcılar için büyük bir dildir. Basit metin işleme
ile çok geniş bir yelpazede uygulama sunan bir dildir.
* Kolay öğrenilen bir dildir: Python bir kaç anahtar kelimeye sahiptir, basit yapısı vardır, açıkca tanımlanmış bir
sözdizimine sahiptir. Bu öğrenene dili hızlıca kavrama imkanı sunar.
* Kolay okunan bir dildir: Kodlar açık olarak tanımlanmıştır. Gözle takibi kolaydır.
* Geniş bir standart kütüphanesi vardır: Python'nun kütüphanesi taşınabilir ve çapraz platformlar (Unix,
Windows, Macintosh) için uygundur
* Portatiftir: Python geniş bir donanım platformu üzerinde çalışır. Tüm platformlarda aynı arayüze sahiptir.
* Genişletilebilir: Python'a düşük seviyeli modüller ekleyebilirsiniz. Bu modüller programcılara kendi araçlarını
eklemeleri için imkan sağlar.
* Veritabanları: Phyton bütün büyük ticari databaseler için arayüzler sağlar.
* Kullanıcı Grafik Arayüzünden (GUI) Programlama: Python Windows, Macintosh ve Unix gibi bir çok sistemin
kütüphane ve pencere sistemlerini çağırıp kullanabilir.
* Ölçeklenebilir: Büyük programlar oluşturmak için kabuk programlamaya nazaran daha iyi yapı ve destek sunar.
Phyton işletim sistemleri üzerinde basit ve hızlı çalışan bir programdır. Dosya işlemleri ve metinsel datalar
üzerinde işlem yapmak için çok uygundur. Kullanıcı grafik arayüzlü programlar yada oyun programları için pek
uygun değildir. Phyton'nun kullanımı basittir. Gerçek bir programlama dilidir. Phyton C ye nazaran daha fazla
hata kontrolü sunar. Yüksek seviyeli data tipleri kullanımına imkan tanır. Örneğin esnek dizi ve klasör
kullanımları gibi. Temel olarak kullanabileceğiniz geniş bir standart kod kolleksiyonuna sahiptir. Bu modüllerin
bazıları I/O dosyaları, sistem çağırma, soketler, GUI (kullanıcı grafik arayüzü) araçlarıdır.
Python'nun en önemli özelliklerinden birisi Yorumlama dili olmasıdır. Bu durum program geliştirme esnasında
oldukça zaman kazandırır. Çünkü hiçbir derleme ve bağlantılara gerek duymaz. Yorumlayıcı interaktif olarak
kullanılabilir. Bu durum, yaz-at yada aşağıdan-yukarı doğru geliştirme gibi özellikleri denemeyi sağlar. Aynı
zamanda kullanışlı bir hesap makinasıdır.
1
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
Python diğer üst seviye dillere nazaran (C,C++,Java) daha kompact ve okunabilir şekilde yazılabilir. Bunun bir kaç
sebebi vardır:
* Üst seviye data tiplerini, karmaşık işlemleri tek bir satırda anlatmaya imkan tanır.
* İfadeleri gruplandırma işlemi başlangıç ve sona konulan parantezlerle değil, girinti verilerek yapılır.
* Hiç bir değişken yada argüman bildirimlerine ihtiyaç yoktur.
Python büyük-küçük harf duyarlıdır. Adsoyad ile adsoyad farklı olarak değerlendirilir. Program yazmında bloklar
için {} gibi parantezler kullanılmaz. Satır başı girinti verilerek bloklar gösterilir.
IronPython dilini Ansys Workbench (WB) içinde kullanmak için aşağıdaki menü den ("Command Window")
faydalanılır.
2
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
3
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
Küsüratlı bölme işlemlerinde Ansys komut satırı tam olarak sonuç verirken IPY ekranı alta yuvarlamaktadır. IPY
ekranında tam sonucu göstermesi için pay kısmında double değer kullanılmalıdır. örneğin (7.0/3=2.3333) gibi.
Değişkenlere atama "=" ile yapılır bunlar matematiksel işlem olarak kullanılabilir. Hesaplanan en son değer bir
sonraki işlemlerde kullanılacaksa "_" işareti ile o değer tekrar kullanılabilir. Değerleri yuvarlatmak için
round(yuvarlanacak sayi, yuvarlama miktarı) fonksiyonu kullanılabilir. Örneği inceleyin;
4
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
2. STRING İŞLEMLERİ
String ifadelerinde tek tırnak (' ') yada çift tırnak (" ") ikisi de kullanılabilir. Bu ifadeleri birleştirmek için arada +
işareti kullanılabilir. * çarpım ifadesi ile çoğaltılabilir.
>>> kelime="karabuk" + "78" #Çift tırnaklı iki stringi birleştiriyor.
>>> kelime #string kelime değişkeni içine atıldı. entera tıklayınca içindeki bilgi gösteriliyor.
'karabuk78'
>>> kelime='karabuk' + '78' # Tek tırnaklı stringlerde aynı şekilde çalışır.
>>> kelime
'karabuk78' #Çıktı
>>> kelime*5 #Bir string değişkeni çarpım işlemi ile çoğaltma
'karabuk78karabuk78karabuk78karabuk78karabuk78' #Sonuç
>>> 'karabuk''78' #Araya '+' işareti koymadanda iki string birleşik olarak gösterilebilir.
'karabuk78' # sonuç
String içerisindeki karakterler bir diz şeklinde olup bunların belli kısmını görüntülemek için aşağıdaki gibi dizi
sınırları kullanılabilir.
>>> kelime="karabuk" #kelime içerisine string ifade atılıyor.
>>> kelime[2] # baştan 3 karekter görüntüleniyor. 2 ci indisteki karekter
'r' #sonuç
>>> kelime[1:3] # 1 ile 3 karekter arası görüntüleniyor. 1. indis dahil 3 indis dahil değil.
'ar' #sonuç
>>> kelime[4:] # 4. indis ten itibaren sona kadar görüntülüyor. 4. indis dahil.
'buk'
Eğer ifadeler [],{},() şeklinde parantezler içinde ise alt satırlara yazılabilir. Örnek;
>>> gunler=['Pazt', 'Sali', 'Cars',
... 'Pers', 'Cuma']
>>> print gunler
['Pazt', 'Sali', 'Cars', 'Pers', 'Cuma']
>>>
Tırnakların kullanımı
String ifadelerde tek tırnak (' ') çift tırnak ("...") ve üçlü tırnak ("""......""") kullanılabilir. Bunlardan üçlü tırnak alt
satırada devam eden stringleri gösterirken kullanılır. Diüer durumda tek tırnak ve çift tırnak arasında bir fark
yoktur.
>>> kelime = 'Kelime'
>>> cumle = "Bu bir cumledir"
>>> paragraf="""Bu bir coklu satıra sahip
... paragraftir"""
>>> print kelime
Kelime
>>> print cumle
Bu bir cumledir
>>> print paragraf
Bu bir coklu satıra sahip
paragraftir
5
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
>>>
3. DEĞİŞKENLER
Değişkenler değerleri saklamak için hafızada ayrılmış alanlardır. Oluşturulan her değişkenin kullanım zamanı
içerisinde hafızada belli bir bölge ayrılmış demektir.
Phyton'da bir çok dilin aksine değişkenler için hafızada yer ayarmak amacıyla açık bir şekilde tanımlama
yapmaya gerek yoktur. Değişkenlerin beyanı, değer atandığı esnada otomatik olarak yapılır. Eşittir işareti (=)
değişkene değer atamak için kullanılır. İşaretin sol tarafındaki değişken, sağ tarafınadaki ise değeridir.
>>> sayac = 100 # integer atandı
mesafe = 1000.0 # Ondalık sayı atandı
isim = "Ahmet" # Bir string atandı
print (sayac)
print (mesafe)
print (isim) #Burada entera tıklandı
100
1000.0
Ahmet
>>>
Phyton bir çok değere aynı değerin atanmasına müsaade eder. Örnek;
>>> a, b, c = 1, 2, "Ahmet"
>>> print (a,b,c)
(1, 2, 'Ahmet')
>>>
Numbers (Sayılar)
Number (sayısal) veri tipi bir sayısal değer atandığında oluşturulur. del komutu ile değişken hafızadan silinebilir.
6
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
Strings (Metin)
String ifadeler tırnaklar içinde gösterilen bir dizi karekterdir. Tek ('...') ve çift ("...") tırnakların her ikiside
kullanılabilir. Stringin içerisinden bir karekteri okumak için [..] ifadesi, belli bir bölgeyi okumak içinse [.. : ..]
kullanılır. Artı (+) işareti stringleri toplamak için çarpı işareti ise (*) tekrarlama yapmak için kullanılır.
>>> str = 'Merhaba Dünya!'
Lists (Listeler)
Listeler çok yönlü veri tipleridir. Köşeli parantez ([...]) içinde araya virgül (,) koyarak oluşturulurlar. Diğer
dillerdeki dizilere benzer fakat, tek farkla. Diğer dillerde içerisindeki her data tipi aynı olmak zorundadır. Burada
ise farklı tiplerde datalar liste içinde bulunabilir.
Stringlerde olduğu gibi Listelerdede içerisinden bir elemanı okumak için [..] ifadesi, belli bir aralığı okumak içinse
[.. : ..] kullanılır. Artı (+) işareti listeye yeni eleman ekler, çarpı işareti ise (*) tekrarlama yaparak listeyi çoğaltır.
Örneği inceleyin.
7
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
Kullanımı listeler ile aynı fakat bilgi eklenemediği için aşağıdaki kullanımda hata verecektir.
>>> listA = [ 'abcd', 786 , 2.23, 'Ali', 70.2 ]
tupleB = ( 'abcd', 786 , 2.23, 'Ali', 70.2 )
listA[2] = 1000 # List diziler için geçerli bir yazım. Listeye ekleme yapılabilir
tupleB[2] = 1000 # Tuple listeler için geçersiz bir yazım. Ekleme yapılamaz.
TypeErrorException: 'tuple' object does not support item assignment
>>>
8
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
Bu birdir # Çıktılar
Bu ikidir
{2: 'Bu ikidir', 'bir': 'Bu birdir'} #dikkat, ikinci sırada eklenen elemanı birinci sırada gösterdi
{'OkulNo': 6734, 'Ad': 'Ali', 'Bolum': 'Mekatronik'}
['OkulNo', 'Ad', 'Bolum']
[6734, 'Ali', 'Mekatronik']
>>>
Function Description
int(x) x değerini integer'a dönüştürür.
float(x) x değerini ondalık sayıya dönüştürür.
str(x) x object türünü stringe dönüştür.
repr(x) x object türünü string ifadeye dönüştürür.
eval(str) string ifadeyi object türüne dönüştürür.
tuple(x) x ifadesini tuple türüne dönüştürür.
list(x) x ifadesini list türüne dönüştürür.
dict(x) x ifadesini dictionary türüne dönüştürür. x ifadesi (key, value) şeklinde olmalıdır.
chr(x) x integer sayısını bir karaktere dönüştürür.
Bunlardan başka oct(x), hex(x), ord(x), unichr(x), frozenset(s), set(s) şeklinde diğer dönüşüm fonksiyonları da
vardır.
4. TEMEL OPERATÖRLER
Operatorler, işlenen değerler üzerinde işlem yapmayı sağlar. Örneğin 4 + 5 = 9 ifadesinde 4 ve 5 işlenen, + ise
operatör olarak adlandırılır.
python aşağıdaki operatör tiplerini destekler
Aritmetik operatörler
Karşılaştırma (ilişkisel) operatörler
Atama operatörleri
Mantıksal operatörler
Bitsel operatörler
Üyelik Operatörleri
Kimlik Operatörleri
Operatörleri toplu olarak tek tabloda verelim.
Operator Description
** Üs alma
9
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
5. KARAR YAPILARI
Karar yapıları içerisinde mantıksal bir ifade bulunduran, bu ifadenin true yada false durumuna göre ilgili dal
altındaki kodları çalıştıran yapılardır. Karşılaştırma yaparken Boş-olmayan yada Sıfır-olmayan değerler True
sonuç üretir. Eğer değer Boş yada Sıfır ise False değer üretir.
if... yapısı
Yapısı şu şekildedir.
if (kosul_ifadesi):
Çalıştırılaak_komutlar
Örnek 1: İçinde değer bulunan değişkenin mantıksal olarak True değere sahip olması
>>> degisken1 = 100
if degisken1:
print "degisken1 mantiksal true degere sahiptir"
print degisken1
# Cikti-------------
degisken1 mantiksal true degere sahiptir
100
>>>
Örnek 1: İçindeki değer 0 olan değişkenin mantıksal olarak Frue değere sahip olması
>>> degisken2 = 0
if degisken2:
print "degisken2 mantiksal True degere sahiptir=", degisken2
else:
print "degisken2 mantiksal False degere sahiptir=", degisken2
# Cikti-------------
degisken2 mantiksal False degere sahiptir= 0
>>>
10
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
>>> puan=78
if (puan>=60 and puan<=100): # Eğer puan 60 dan büyük ve 100 den küçükse 'Geçti' yaz.
print("Gecti")
elif (puan>=0 and puan<60): # Yok eğer puan 0 dan büyük ve 60 dan küçükse 'Kaldı' yaz.
print("Kaldi")
else : # Yukarıdaki iki şart da false ise (gerçekleşmese) 'Yanlış değer' yaz.
print ("Yanlis değer")
Gecti : # sonuç
>>>
6. DÖNGÜLER
Döngüler bir grup komutun bir çok kez çalıştırılmasını sağlar. Döngüde kullanılan koşul true olduğu müddetçe
döner. False olursa döngüden çıkar.
Aralık belirtirken range() yada xrange() fonksiyonu kullanılır. range() fonksiyonu içerisinde sayılar bulunan list
özellikli bir dizi oluşturur. xrange() fonksiyonu ise bir sayı üretecidir. Daha çok xrange() kullanılır. Bunun
kullanımının tek sebebi hafıza kullanımını azaltmaktır. Az sayıda döngüde fark anlaşılmaz ama yüksek sayılı
döngülerde xrange() hız farkı ortaya çıkar.
11
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
print(x)
if x == 1:
break
# Cikti-------------
0
1
>>>
Örnek 7: İç içe for kullanımı ve mod almaya bir örnek. Ayrıca for'un else ile kullanımına da bir örnek.
>>> for x in range(10,20): #10 ile 20 arasinda x degeri alacak (20 dahil değil)
for y in range(2,x): #2 ile x degeri arasında donecek.
if x%y == 0: #ilk karekteri belirlemek için mod kontrolu yapiyor.
z=x/y #z degerini yi hesapliyor
print '%d * %d = %d' % (y,z,x)
break #ikinci For dan cikmak için break atiyor.
else: # else ikinci for'un bir parcasidir.
print x, 'sonraki sayi'
# Cikti-------------
2 * 5 = 10
11 sonraki sayi
2 * 6 = 12
12
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
13 sonraki sayi
2 * 7 = 14
3 * 5 = 15
2 * 8 = 16
17 sonraki sayi
2 * 9 = 18
19 sonraki sayi
>>>
Örnek 8:
>>> meyveler= ['elma', 'erik', 'uzum']
for x in range(len(meyveler)): #meyveler dizisi 3 elemanli. 0,1,2 sayilari ni sirayla alacak
print 'Suanki meyve :', meyveler[x]
While... döngüsü
While döngüsü sonsuz bir döngüdür. Şart gerçekleştiği sürece (koşul true iken çalışır, false olana kadar döner)
dönmeye devam eder. Yapısı şu şekildedir.
while (kosul_ifadesi):
calistirilacak_komutlar
Örnek 2: Döngünün sonsuz olarak dönmesini sağlamak. Programdan çıkmak için CTRL+C basın (Ansys de
çalışmaz).
>>> x = 1
while x == 1 : # x daima bir olacağı için sonsuz döngü oluşturur.
sayi = raw_input("Bir Sayi Giriniz :")
print "Girdiginiz Sayi: ", sayi
# Cikti-------------
Bir Sayi Giriniz :11
Girdiginiz Sayi: 11
Bir Sayi Giriniz :12
Girdiginiz Sayi: 12
Bir Sayi Giriniz :13
Girdiginiz Sayi: 13
Bir Sayi Giriniz :
Örnek 3: Döngünün else ifadesi ile kullanımı. Döngü bittikten sonra çalıştırılır yada döngü False durumunda ise
çalıştırılır. Diğer dillerde bu özellik yoktur. Döngü bittikten sonra zaten sıradaki komutlar çalıştırılacağı için
yapılacak işlemler oraya yazılır.
13
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
sayi = 0
while sayi < 5:
print sayi, " 5 den kucuktur"
sayi = sayi + 1
else:
print sayi, " 5 den kucuk degildir"
7. SAYILAR (NUMBERS)
Sayısal bilgileri tutan veri tipidir. Sayı nesnesi (değişkeni) ona bir değer atandığında oluşturulur. Örneğin;
deg1=1
deg2=10
int (işaretli tam sayı): İçerisinde ondalık nokta bulunmayan eksi yada artı tam sayıdır. (Örn: 10, -78)
long (uzun tam sayı): Sınırsız uzun tam sayıları tanımlamak için kullanılır. Sonuna küçük yada büyük L
harfi kullanılır. (Örn: 519L,-2343543533L)(Büyük L harfi kullanılması tavsiye edilir, çünkü 1 rakamı ile
karıştırılır).
float (ondalık noktalı gerçek sayılar): İçerisinde ondalık nokta bulunan gerçek sayılardır. Bilimsel üstlü
gösterminde E yada e harfi kullanılabilir. (0.0, 15.20, 32.3+e18, 70.2-E12)
Sayıları Dönüştürme
Python kendisi otomatik olarak bir ifadeyi bilinen yaygın bir tipe dönüştürür. Ama bazen belli bir tipe
dönüştürme zorunluluğu olabilir. Böyle bir durumda aşağıdaki dönüşüm fonksiyonları kullanılabilir.
int(x): x ifadesini düz integer'a dönüştürür.
long(x): x ifadesini long integer'a dönüştürür.
float(x): x ifadesini noktalı sayıya (ondalık) dönüştürür.
14
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
Class bir "documantaion string" sahiptir. Bu ifadeye erişmek için ClassName.__doc__. komutu kullanılır.
class_suite kelimesi ise class members (sınıf elemanlarını), data attributes (veri özelliklerini) ve functions
(fonksiyonları) tanımlayan bir ifadedir.
Örnek: Aşağıdaki kodlar basit bir Python class örneğidir.
class Personel:
'Bu kodlar tum calisanlar icin ortak bir temel siniftir'
persSayisi = 0 # class degiskenidir. Bunun degeri bu class'in tum ornekleri (instances) arasinda
paylasilir. Gerek class icerisinde, gerekse class disindan bu degere erismek icin [Link]
ifadesi kullanilir.
def __init__(self, ad, maas): #bu metod (fonksiyon) ozel bir metoddur. Class olusturan yada
baslatan metoddur. Bu sinifin yeni bir ornegi (instance) olusturuldugunda bu metod cagrilir (call).
[Link] = ad
[Link] = maas
[Link] += 1
def persSayisi(self): #Bu metod (fonksiyon) ilk metoddan farkli olarak normal bir fonksiyondur. Bu
metodlarin ilk argumani/parametresi (argument) self olmalidir. Bu metodu cagirirken bu argumani eklemeye
gerek yoktur. Python tarafindan otomatik olarak eklenir.
print "Toplam calisan %d" % [Link]
def persListeleme(self):
print "Isim : ", [Link], ", Maas: ", [Link]
15
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
ANSYS PROGRAMLAMA
Ansys ve programlama ile ilgili sorularınızı officehours@[Link] adresine gönderebilirsiniz.
Programlamanın Temelleri
Orjinal Workbench herhangi bir programlama (scripting) yada günlük tutmaya (Journaling) sahip değildir. APDL
(eski klasik Ansys) den büyük oranda farklıdır. Yeni Workbench hem Jounaling hemde programlamayı kullanır.
Herşeyi dosyaya kaydeden bir arayüzle yapabilirsiniz. Kendi dosyanızı oluşturabilir ve onu tekrar
çalıştırabilirsiniz.
16
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
Panele modülü sürekleyip malzeme özelliğini değiştirelim. Yoğunluğu önce 7000 yapalım. Ardından Journal
kayıdını durduralım. ve Journal dosyasının içeriğine bakalım.
17
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
# encoding: utf-8
# Release 16.0 #Dikkat bu kodlar yorum gibi gözüksede bulunması gerekiyor.
SetScriptVersion(Version="16.0.361")
Ansys kapatıp (journal dosyasınad değişiklik yapabilmek için, yada farklı isimle kaydedebilirsiniz) Not defterinde
açtığımız Journal kodları içindeki yoğunluk değerini 8000 yapalım. Tekrar Ansys çalıştıralım. Şimdi tüm işlemleri
Journal üzerinden gerçekleştirelim. Journal'daki komutlar çalışınca modül kendiliğinden açıldı ve malzeme
özelliklerine baktığımızda yoğunluğun 8000 olduğunu görebiliyoruz.
18
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
IronPyhton komutları Workbench düzeyinde çalışırken DesignModeller içerisinde ise geometriyi oluşturmak için
JavaScript kodları çalıştırılır. Her ikisi ile ilgili örnekler aşağıda verilmiştir.
Proje yolu aşağıdaki komutla baştan ayarlanırsa her seferinde yolu yazmaktan kurtulabiliriz.
19
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
sablon1 = GetTemplate(TemplateName="EngData")
sistem1 = [Link]()
MuhendislikVerisi = [Link](ComponentName="Engineering Data")
celik1 = [Link](Name="Structural Steel")
alfa1 = [Link](Name="Coefficient of Thermal Expansion")
20
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
projeListesi = []
for x in projeListesi:
[Link]("A=" + x)
21
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
22
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
Script kodları
# "Static Structural" sistemi olusturuluyor ve onun icindeki "Engineering Data" ya erisiliyor
sablon1 = GetTemplate(TemplateName="Static Structural",Solver="ANSYS")
sistem1 = [Link]()
muhendislikVerisi1 = [Link](ComponentName="Engineering Data")
23
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
malzeme1 =
[Link](Name="Polyethylene",Source="General_Materials.xml")
elastiklik1 = [Link](Name="Elasticity")
E1 = [Link](Variables="Young's Modulus")
#--------------------------------------------
# Sicaklik,Gerinim ve Gerilme degerlerini diziye atmak icin dosyadan okuyor.
dosyaAdi = AbsUserPathName("[Link]")
veriDosyasi = open(dosyaAdi,"r")
# Projeyi kaydediyor
Save(FilePath=AbsUserPathName("[Link]"), Overwrite=True)
24
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
[Link](Command = """
var ps1 = new Object();
[Link] = [Link]();
[Link] = [Link]();
[Link] = [Link]();
[Link] = [Link]();
ps1.Sk1 = [Link]();
[Link] = "Sketch1";
with (ps1.Sk1)
{
ps1.El7 = Ellipse( 8.0, 10.0, 9.0, 6.0, 5.0, 12.0);
}
[Link]();
""")
[Link](Command = """
function planeSketchesOnly (p)
{
//---------------------Plane1
[Link] = [Link]();
[Link] = [Link]();
[Link] = [Link]();
[Link] = [Link]();
//---------------------Sketch1
p.Sk1 = [Link]();
[Link] = "Sketch1";
//---------------------Edges1
with (p.Sk1)
{
p.Ln1 = Line(-50, 30, 50, 30);
p.Ln2 = Line(50, 30, 50, -30);
p.Ln3 = Line(50, -30, -50, -30);
p.Ln4 = Line(-50, -30, -50, 30);
}
25
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
//----------------------------Sketch2
p.Sk2 = [Link]();
[Link] = "Sketch2";
//----------------------------Edges2
with (p.Sk2)
{
p.Ln7 = Line(-150, 130, 150, 130);
p.Ln8 = Line(150, 130, 150, -130);
p.Ln9 = Line(150, -130, -150, -130);
p.Ln10 = Line(-150, -130, -150, 130);
}
[Link]();
return p;
}
[Link]();
""")
[Link]()
var x1=-5.0;
var y1=-1.0;
var x2=15.0;
var y2=-1;
var x3=-5;
var y3=19;
26
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
var x4=15;
var y4=19;
var yay= [Link](x, y, x4, y4, x3, y3); //yayin merkez noktasi, baslangic ve bitis
noktalari tanimlandi
[Link]();
var x2=14.65067138;
var y2=36.80687665;
var x3=39.84334394;
var y3=37.01004335;
27
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
with(p.Sp23)
{
SplineXYW(x1, y1, 1.00000000); //formati: SplineXYW(x,y,kalinlik)
SplineXYW(12.16642630, 20.85741538, 1.00000000);
SplineXYW(8.00167038, 44.07794833, 1.00000000);
SplineXYW(31.87815208, 39.67073448, 1.00000000);
SplineXYW(x3, y3, 1.00000000);
SplineFlexibility = [Link];
}
}
//constraints (sabitler)
with ([Link])
{
CoincidentCon([Link], x1, y1, p.Pt48, x1, y1);
CoincidentCon([Link], x3, y3, p.Pt50, x3, y3);
//son
[Link]();
[Link] = [Link]();
[Link] = [Link]();
[Link] = [Link]();
[Link] = [Link]();
28
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
//Sketch
p.Sk4 = [Link]();
[Link] = "Sketch4";
//Points
var x1=17;
var y1=16;
var x2=10;
var y2=23;
var x3=16;
var y3=45;
var x4=39;
var y4=42;
var x5=47;
var y5=39;
//Edges
with (p.Sk4)
{
p.Sp10 = SplineBegin();
with(p.Sp10)
{
SplineXYW(x1, y1, 1.00000000);
SplineXYW(x2, y2, 1.00000000);
SplineXYW(x3, y3, 1.00000000);
SplineXYW(x4, y4, 1.00000000);
SplineXYW(x5, y5, 1.00000000);
SplineKnot(0.00000000);
SplineKnot(0.00000000);
SplineKnot(0.00000000);
SplineKnot(0.00000000);
SplineKnot(0.45516103);
SplineKnot(1.00000000);
SplineKnot(1.00000000);
SplineKnot(1.00000000);
SplineKnot(1.00000000);
[Link]();
return p;
}
[Link]();
function CizimFonksiyonu(p)
{
//-----------Koordinat Sistemini Ayarliyor------------
29
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
[Link] = [Link]();
[Link] = [Link]();
[Link] = [Link]();
[Link] = [Link]();
//-----------Sketch Olusturuyor------------
with (p.Sk1)
{
//-----------Spline Olusturuyor------------
p.Sp1 = SplineBegin();
with (p.Sp1)
{
SplineFlexibility = [Link]; //Buradaki spline kapali dongu. Ucu acik olsaydi esnek
yapilabilecekti. Yani bir noktasini cekince gerisi ona göre ayarlanacaktir
SplineXY(1.0000000000,0.0000000000);
SplineXY(0.9941909457,0.0034443422);
SplineXY(0.9762644498,0.0089525701);
SplineXY(0.9468056337,0.0176798496);
SplineXY(0.9064463270,0.0290036332);
SplineXY(0.8560738767,0.0421506502);
SplineXY(0.7968252313,0.0562643111);
SplineXY(0.7300720100,0.0704606995);
SplineXY(0.6573966117,0.0838679746);
SplineXY(0.5805610801,0.0956533030);
SplineXY(0.5014701995,0.1050478667);
SplineXY(0.4221285534,0.1113815755);
SplineXY(0.3434626760,0.1136979610);
SplineXY(0.2682640305,0.1106278449);
SplineXY(0.1991460457,0.1024074256);
SplineXY(0.1381012612,0.0897548199);
SplineXY(0.0868274179,0.0737240165);
SplineXY(0.0466519884,0.0555674396);
SplineXY(0.0184988244,0.0365553796);
SplineXY(0.0028945720,0.0177828502);
SplineXY(0.0000000000,0.0000000000);
SplineXY(0.0164708748,-0.0204615910);
SplineXY(0.0419484020,-0.0307583977);
SplineXY(0.0779358751,-0.0375744924);
SplineXY(0.1234161612,-0.0411497131);
SplineXY(0.1772540651,-0.0418875255);
SplineXY(0.2382427318,-0.0403737798);
SplineXY(0.3051191235,-0.0373591222);
SplineXY(0.3765503309,-0.0336972848);
SplineXY(0.4521273682,-0.0298757348);
SplineXY(0.5295399342,-0.0254591443);
SplineXY(0.6064679100,-0.0208983254);
SplineXY(0.6810562717,-0.0165856201);
SplineXY(0.7514644539,-0.0127586173);
SplineXY(0.8159169236,-0.0095192837);
SplineXY(0.8727539388,-0.0068773511);
SplineXY(0.9204809134,-0.0047995127);
SplineXY(0.9578162855,-0.0032481123);
SplineXY(0.9837374474,-0.0022006917);
SplineXY(0.9975224016,-0.0016512322);
SplineXY(1.0000000000,0.0000000000);
SplineFitPtEnd(); //Spline dogrulamasini yapiyor
}
}
30
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
[Link]();
[Link](Command = """
function CizimFonksiyonu(p)
{
[Link] = [Link]();
[Link] = [Link]();
[Link] = [Link]();
[Link] = [Link]();
p.Sk1 = [Link]();
[Link] = "Profil";
with (p.Sk1)
{
p.Sp1 = SplineBegin();
with (p.Sp1)
{
SplineFlexibility = [Link];
SplineXY(1.0000000000,0.0000000000);
SplineXY(0.9941909457,0.0034443422);
SplineXY(0.9762644498,0.0089525701);
SplineXY(0.9468056337,0.0176798496);
SplineXY(0.9064463270,0.0290036332);
SplineXY(0.8560738767,0.0421506502);
SplineXY(0.7968252313,0.0562643111);
SplineXY(0.7300720100,0.0704606995);
SplineXY(0.6573966117,0.0838679746);
SplineXY(0.5805610801,0.0956533030);
SplineXY(0.5014701995,0.1050478667);
SplineXY(0.4221285534,0.1113815755);
SplineXY(0.3434626760,0.1136979610);
SplineXY(0.2682640305,0.1106278449);
SplineXY(0.1991460457,0.1024074256);
SplineXY(0.1381012612,0.0897548199);
SplineXY(0.0868274179,0.0737240165);
SplineXY(0.0466519884,0.0555674396);
SplineXY(0.0184988244,0.0365553796);
SplineXY(0.0028945720,0.0177828502);
SplineXY(0.0000000000,0.0000000000);
31
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
SplineXY(0.0164708748,-0.0204615910);
SplineXY(0.0419484020,-0.0307583977);
SplineXY(0.0779358751,-0.0375744924);
SplineXY(0.1234161612,-0.0411497131);
SplineXY(0.1772540651,-0.0418875255);
SplineXY(0.2382427318,-0.0403737798);
SplineXY(0.3051191235,-0.0373591222);
SplineXY(0.3765503309,-0.0336972848);
SplineXY(0.4521273682,-0.0298757348);
SplineXY(0.5295399342,-0.0254591443);
SplineXY(0.6064679100,-0.0208983254);
SplineXY(0.6810562717,-0.0165856201);
SplineXY(0.7514644539,-0.0127586173);
SplineXY(0.8159169236,-0.0095192837);
SplineXY(0.8727539388,-0.0068773511);
SplineXY(0.9204809134,-0.0047995127);
SplineXY(0.9578162855,-0.0032481123);
SplineXY(0.9837374474,-0.0022006917);
SplineXY(0.9975224016,-0.0016512322);
SplineXY(1.0000000000,0.0000000000);
SplineFitPtEnd();
}
}
[Link]();
return p;
}
[Link]();
""")
19. ÖRNEK: Aktif Koordinat sistemi yada kendi belirlediğimiz koordinat sistemi
üzerinde sketch oluşturma
Aktif plane üzerinde sketch oluşturmak için
[Link] = [Link]();
[Link] = [Link]();
[Link] = [Link]();
[Link] = [Link]();
Kendi belirlediğimiz düzlem üzerinde sketch oluşturmak için ise şu kodlar kullanılır.
var YZPlane = [Link](); //To get YZPlane object
[Link] (YZPlane); //To set Active plane
32
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
20. ÖRNEK: Ansys Mechanical'daki modelin APDL (eski ansys) scripting kodlarına
dönüştürme.
Bunun için Ansys Structural Static içerisinde bir model oluşturalım. Model ağacından Solution başlığına tıklayıp
Tools->Write Input File seçeneğini kullanarak dosyayı kaydedeceğimiz yeri belirleyelim. .dat uzantılı olarak
kaydedelim. Not defteri açmaz ise uzantısını txt ye çevirip içeriğine bakabiliriz. Bu dosya Ansys-APDL tarafından
okunabilir. Orada File->Read Input From seçeneğini kullanın.
...
...
33
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
//Select the NS "face" : Dikkat burada "face" ismi verilmis yuzeyi bulabilmesi icin oncesinde
olusturulmus olmasi gerekir.
[Link]("Named Selection");
[Link] = "face";
34
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
[Link]("Operation");
[Link]="Add Material"; //yada [Link]="Add Frozen"; komutunu kullan
[Link]("Box Type");
[Link]="From Two Points";
[Link]("Point 1 Definition");
[Link]="Coordinates";
[Link]("Point 2 Definition");
[Link]="Coordinates";
Dikkat edilirse komutlada kullanılan ifadeler, Properties penceresindeki menülerde yazan ifadelerdir.
35
Ansys Workbench Programlama (IronPython)..........................................................................[Link]
Sketch Functions
36