|
Konstruktor budowlany Forum projektantów
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
adam_47
Doświadczony Forumowicz
Dołączył: 05 Cze 2010
Posty: 1014
Przeczytał: 6 tematów
Pomógł: 23 razy Ostrzeżeń: 0/5
|
Wysłany: Śro 9:30, 02 Lut 2011 Temat postu: Python |
|
|
Do zainteresowania się nim zostałem "zmuszony" przez autora jednego z darmowych programów.
Osobiście jestem zaskoczony czytelnością uzyskiwanego kodu, między innymi dzięki strukturze "słownik", ale główna zaleta to dostęp do biblioteki numpy (m.innymi działania na macierzach). Wadą jest "ręczne" programowanie interfejsu okienkowego.
Ponieważ powoli nadchodzi czas zaktualizowania procedur z PN do EC, poważnie zaczynam się zastanawiać, czy nie robić tego w Pythonie ?!
Co Panowie myślą o tym języku ?
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
jureko
Doświadczony Forumowicz
Dołączył: 05 Paź 2007
Posty: 247
Przeczytał: 0 tematów
Pomógł: 11 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Śro 13:17, 02 Lut 2011 Temat postu: Re: Python |
|
|
adam_47 napisał: | Do zainteresowania się nim zostałem "zmuszony" przez autora jednego z darmowych programów.
Osobiście jestem zaskoczony czytelnością uzyskiwanego kodu, między innymi dzięki strukturze "słownik", ale główna zaleta to dostęp do biblioteki numpy (m.innymi działania na macierzach). Wadą jest "ręczne" programowanie interfejsu okienkowego.? |
z pythona nie korzytałem ale do interfejsu możesz spróbować PyQt czyli pożenione biblioteki Qt z pythonem.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
adbud
Doświadczony Forumowicz
Dołączył: 21 Kwi 2009
Posty: 1053
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 1/5
|
Wysłany: Śro 18:18, 02 Lut 2011 Temat postu: |
|
|
Prawda w Pythonie można programować obiektowo również Trzeba tylko sprzążyć go z jakimś interfeisem:)
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
lukaszlab
Doświadczony Forumowicz
Dołączył: 15 Maj 2006
Posty: 231
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Wto 18:41, 09 Cze 2015 Temat postu: |
|
|
Wznawiam temat użycia skryptowego języka Python w projektowaniu. Python wraz z mocą masy bibliotek w tym takich jak mathplotlib, numpy, scipy ... daje olbrzymie możliwości. Jest możliwe użycie jednostek w obliczeniach. Ponadto jest edytor Ipython notebook. Wszystko to daje funkcjonalność podobną do powiedzmy matlab, jezyka programowania i tworzenia dokumentów (wspomniany notebook). Wcześniej walczyłem z C++ oraz scilabem dopiero Python można powiedzieć był przełomem.
Aktualnie pracuje nad projektem biblioteki i oprogramowania open source do projektowania konstrukcji.
Wokół języka Python tworzą się liczne społeczności użytkowników - może wiec i na tym forum znają się chętni.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
GMBh
Administrator
Dołączył: 23 Sty 2006
Posty: 609
Przeczytał: 7 tematów
Pomógł: 27 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Wto 20:21, 09 Cze 2015 Temat postu: |
|
|
@lukaszlab
Niestety python średnio sprawdza się w zastosowaniach komercyjnych. Jego filozofia oparta na otwartości doskonale nadaje się do projektów open source, zastosowań akademickich itp. Nie rozumiem co znaczy dla Ciebie "użycie jednostek w obliczeniach". Napisałem w C# odpowiednia klasę, która jest odpowiedzialna za walidację wprowadzanych danych i wyświetlanie wyników w takich jednostkach i z taką precyzją jaka user wybrał w preferencjach. Mogą to być jednostki imperialne, metryczne (mm, cm, m itd) a jądro obliczeniowe zawsze działa na jednostkach podstawowych (np. [m]i [kN]).
Z tego co piszesz zrozumiałem, że interesuje Cię bardziej akademickie podejście. Przypomina mi to czasy robienia projektów w mathcadzie na studiach. Niestety życie zmusiło mnie żeby wszystkie swoje procedury w mathcadzie, excelu itp szybko przerobić na mniej otwarte i podatne na wprowadzanie zmian przez innych, zabezpieczone wersje programów.
Cytat: | Aktualnie pracuje nad projektem biblioteki i oprogramowania open source do projektowania konstrukcji. |
Napisz co to za projekt? Projektowanie konstrukcji obejmuje wiele aspektów np. obliczenia MES, wymiarowanie elementów żelbetowych, stalowych, rysowanie konstrukcji itp. Chętnie wymienię się doświadczeniami. Na forum jest kilka osób, które piszą programy inżynierskie, w tym również takich które je potem sprzedają . Idea tworzenia wolnego programowania inżynierskiego była już poruszana na forum kilka lat temu. Niestety temat upadł
Post został pochwalony 0 razy
Ostatnio zmieniony przez GMBh dnia Wto 20:31, 09 Cze 2015, w całości zmieniany 3 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
lukaszlab
Doświadczony Forumowicz
Dołączył: 15 Maj 2006
Posty: 231
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Wto 20:31, 09 Cze 2015 Temat postu: |
|
|
W Python nie trzeba pisać już takiej klasy - jest gotowa np. unum lub pint
[link widoczny dla zalogowanych]
[link widoczny dla zalogowanych]
Używam z powodzeniem unum.
Pakiety online [link widoczny dla zalogowanych] dostępne online.
Python jest w zasadzie nadbudową C++.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
GMBh
Administrator
Dołączył: 23 Sty 2006
Posty: 609
Przeczytał: 7 tematów
Pomógł: 27 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Wto 20:50, 09 Cze 2015 Temat postu: |
|
|
Ok. Jest wiele klas i bibliotek dostępnych również w otwartych licencjach np. LGPL w takich popularnych językach jak C++ czy C# np. dla jednostek w C# [link widoczny dla zalogowanych] lub [link widoczny dla zalogowanych].
Rózne języki stworzono do różnych celów. Python jest świetny do open source - dostępność bibliotek, otwartość itd. Ja wybrałem C# bo zależy mi na współpracy z komercyjnymi aplikacjami poprzez API, chce mieć możliwość zamknięcia kodu i zabezpieczenia go, a także odpowiada mi pisanie pod platformą .NET.
Z tym że Python jest nadbudową c++ trochę przesadziłeś ale nie jestem informatykiem więc nie będę się spierać
Inna sprawa,że podobno w pythonie pisze się programy dużo szybciej niż w innych językach. Tylko, jak już pisałem,nie dla każdego jest to odpowiednie narzędzie.
Post został pochwalony 0 razy
Ostatnio zmieniony przez GMBh dnia Wto 20:58, 09 Cze 2015, w całości zmieniany 2 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
lukaszlab
Doświadczony Forumowicz
Dołączył: 15 Maj 2006
Posty: 231
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Wto 22:18, 09 Cze 2015 Temat postu: |
|
|
C# z .NET to potężne narzędzie. Pytanie do czego i komu jest potrzebne programowanie. Jeśli ktoś jest inżynierem nie informatykiem i chciałby zacząć programować na swoje potrzeby to będę doradzał mu język Python - i o to możemy się spierać . W jeden dzień opanuje konsole a w następny pisanie skryptów - i to w zasadzie jest jak użycie w matlab-a.
Główne zalety:
- język skryptowy (interpretowany) wysokiego poziomu, dostępny za darmo,
- interaktywna konsola niezwykle przydatna,
- Ipython notebook do tworzenia interaktywnej dokumentacji,
- prosta i czytelna składnia,
- struktury danych wysokiego poziomu, dynamiczny system typów,
- przenośność - interpreter dostępny na wszystkie główne platformy m.in. Windows, Linux,
- bogata biblioteka standardowa,
- łatwość nauczenia się podstaw języka i przyjemność z programowania.
Wady:
- jako interpreter wysokiego poziomu wolniejszy od np. C co możne być zauważalne przy konieczności np. wymiarowania zbrojenia dla kilku tyś. pkt. w panelu.
Ja zakładam dystrybucję open spurce (GPL) - powiedzmy z przyczyn ideowych ale też użycie darmowe funkcjonalności takich bibliotek jak mathplotlib czy pyqt wymusza zachowanie warunków licencji tych bibliotek.
Standardowa implementacja Python (CPython) napisany jest w C.
Polecam krótki przewodnik dla zainteresowanych:
[link widoczny dla zalogowanych]
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
mz
Doświadczony Forumowicz
Dołączył: 11 Wrz 2014
Posty: 79
Przeczytał: 69 tematów
Pomógł: 4 razy Ostrzeżeń: 0/5
|
Wysłany: Śro 19:08, 10 Cze 2015 Temat postu: |
|
|
z ciekawości, jak jest w wydajnością Pythona? działa dość szybko czy wlecze się jak VBA?
Post został pochwalony 0 razy
Ostatnio zmieniony przez mz dnia Śro 19:08, 10 Cze 2015, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
lukaszlab
Doświadczony Forumowicz
Dołączył: 15 Maj 2006
Posty: 231
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Śro 22:40, 10 Cze 2015 Temat postu: |
|
|
Standardowy Python nie jest demonem prędkości i ta jego strona często jest wskazywana po jako wad. Są jednak możliwości poprawy wydajności jeśli stanie się to problemem.
[link widoczny dla zalogowanych]
Nie wiem jak ma się Python do VBA.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
lukaszlab
Doświadczony Forumowicz
Dołączył: 15 Maj 2006
Posty: 231
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Śro 23:16, 10 Cze 2015 Temat postu: |
|
|
No to mały test prędkości
Skrypt 1 - 1000-krotne wymiarowanie przekroju z bez kontroli zarysowania:
Kod: | In [12]: from unum.units import m as _m
from unum.units import mm as _mm
from unum.units import N as _N
import time
_kN=1000*_N
_kNm=_kN*_m
t1=time.time()
import strupy.concrete.ascomp as f
for i in xrange(0, 1000):
a=f.calc(0*_kN, 400*_kNm, 0.8*_m, 0.4*_m, 0.05*_m ,0.05*_m ,0.0 ,0.0 ,0.02*_m ,0.02*_m ,0.3*_mm ,0.3*_mm)
t2=time.time()
print str(t1-t2)+' sekund'
print a
-0.830000162125 sekund
{'A1': 0.0013457525398 [m2], 'ror': 0.0, 'A2': 0.0001 [m2], 'w': 0.0 [m], 'mimos': -1, 'ksieff': 0.11281777778791036, 'Ncr': 0.0 [N], 'rys': 0.0, 'sigmas': 0 [Pa], 'srm': 0 [m]} |
Skrypt 2 - 1000-krotne wymiarowanie przekroju z kontrolą zarysowania (o 0.3mm):
Kod: | In [23]: from unum.units import m as _m
from unum.units import mm as _mm
from unum.units import N as _N
import time
_kN=1000*_N
_kNm=_kN*_m
t1=time.time()
import strupy.concrete.ascomp as f
for i in xrange(0, 1000):
a=f.calc(0*_kN, 400*_kNm, 0.8*_m, 0.4*_m, 0.05*_m ,0.05*_m ,1.0 ,1.0 ,0.02*_m ,0.02*_m ,0.3*_mm ,0.3*_mm)
t2=time.time()
print str(t1-t2)+' sekund'
print a
-4.02999997139 sekund
{'A1': 0.00146687026839 [m2], 'ror': 0.0293374053677 [], 'A2': 0.0001 [m2], 'w': 0.000296312150205 [m], 'mimos': -1, 'ksieff': 0.11281777778791036, 'Ncr': 0.234666588444 [N], 'rys': 1, 'sigmas': 308256880.734 [Pa], 'srm': 0.11817235454 [m]} |
Czyli mamy
0.830000162125 sekund z zarysowaniem
4.02999997139 sekund bez zarysowania
Post został pochwalony 0 razy
Ostatnio zmieniony przez lukaszlab dnia Sob 12:52, 12 Mar 2016, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
lukaszlab
Doświadczony Forumowicz
Dołączył: 15 Maj 2006
Posty: 231
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Śro 23:33, 10 Cze 2015 Temat postu: |
|
|
W wydaniu obiektowym
Skrypt - 1000-krotne wymiarowanie przekroju bez kontroli zarysowania:
Kod: | In [19]: from unum.units import m as _m
from unum.units import mm as _mm
from unum.units import N as _N
from strupy.concrete.RcRecSect import RcRecSect
from strupy.concrete.SectLoad_new import SectLoad
from strupy.concrete.RcRecSectSolver import RcRecSectSolver
_kN=1000*_N
_kNm=_kN*_m
import time
sec=RcRecSect()
solv=RcRecSectSolver()
load=SectLoad()
sec.rysAn=0
sec.rysAp=0
t1=time.time()
for i in xrange(0, 1000):
sec=solv.reinforce(sec, load)
t2=time.time()
print str(t1-t2)+' sekund'
print sec.get_sectinfo()
-1.0759999752 sekund
{'comment': 'case calculated - [0] case for Ap -0 case for An -0', 'b': 0.4 [m], 'fyd': 42000000 [Pa], 'ap': 0.04 [m], 'h': 0.8 [m], 'fctm': 220000.0 [Pa], 'an': 0.04 [m], 'Ap': 0.0001 [m2], 'fcd': 1670000.0 [Pa], 'ksiefflim': 0.5, 'rcsteelname': 'A-IIIN', 'An': 0.0001 [m2], 'concretename': 'C20/25'} |
Czyli mamy
1.0759999752 sekund
Wyniki lepsze niż się spodziewałem.
Post został pochwalony 0 razy
Ostatnio zmieniony przez lukaszlab dnia Sob 12:51, 12 Mar 2016, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
lukaszlab
Doświadczony Forumowicz
Dołączył: 15 Maj 2006
Posty: 231
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Śro 23:38, 10 Cze 2015 Temat postu: |
|
|
Przy wklejaniu zjada wcięcie.
Powinno być:
for i in xrange(0, 1000):
_____a=f.calc(0*_kN, 400*_kNm, 0.8*_m, 0.4*_m, 0.05*_m ,0.05*_m ,0.0 ,0.0 ,0.02*_m ,0.02*_m ,0.3*_mm ,0.3*_mm)
Bo to Python - wcięcia ważne
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
lukaszlab
Doświadczony Forumowicz
Dołączył: 15 Maj 2006
Posty: 231
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Śro 23:42, 10 Cze 2015 Temat postu: |
|
|
Komputer i5-3.3 GHz
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
lukaszlab
Doświadczony Forumowicz
Dołączył: 15 Maj 2006
Posty: 231
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Czw 0:04, 11 Cze 2015 Temat postu: |
|
|
Jeszcze raz obiektowo z dodatkowym loadcase w obiekcie load
Kod: | In [1]: from unum.units import m as _m
from unum.units import mm as _mm
from unum.units import N as _N
from strupy.concrete.RcRecSect import RcRecSect
from strupy.concrete.SectLoad_new import SectLoad
from strupy.concrete.RcRecSectSolver import RcRecSectSolver
_kN=1000*_N
_kNm=_kN*_m
import time
sec=RcRecSect()
solv=RcRecSectSolver()
load=SectLoad()
load.add_loadcase({"Name": 'ULS_case1', "Msd": 1000*_kNm, "MTsd": 2*_kNm, "Nsd": -200*_kN, "Vsd": 0*_kN})
sec.rysAn=0
sec.rysAp=0
t1=time.time()
for i in xrange(0, 1000):
sec=solv.reinforce(sec, load)
t2=time.time()
print str(t1-t2)+' sekund'
print sec.get_sectinfo()
RcRecSect init
Material_concrete init
MaterialRcsteel init
RcRecSecSolver
-1.86000013351 sekund
{'comment': 'case calculated - [0, 1] case for Ap -0 case for An -1', 'b': 0.4 [m], 'fyd': 42000000 [Pa], 'ap': 0.04 [m], 'h': 0.8 [m], 'fctm': 220000.0 [Pa], 'an': 0.04 [m], 'Ap': 0.0001 [m2], 'fcd': 1670000.0 [Pa], 'ksiefflim': 0.5, 'rcsteelname': 'A-IIIN', 'An': 0.00355410199466 [m2], 'concretename': 'C20/25'} |
Czyli mamy już
1.86000013351 sekund
Post został pochwalony 0 razy
Ostatnio zmieniony przez lukaszlab dnia Sob 12:50, 12 Mar 2016, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
|