Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#26 Le 19/01/2010, à 13:38

Kanor

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

D'aprés ce que je comprend Salome utilise code_aster

Sinon pdf qui me semble intéressant
http://calcul.math.cnrs.fr/Documents/Journees/dec2006/aster.pdf
ça date un peu 2006

Hors ligne

#27 Le 19/01/2010, à 14:36

ossatureLibre

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

Bonjour tout le monde,
Effectivement pyopenshelter demande un bon ménage, voire même de le reprendre à zéro en le considérant comme une maquette (ça n'est pas forcemment un boulot enorme). ceci dit il fonctionne, je m'occupe de mettre la dernière "version" en ligne ce soir.
Pour l'instant c'est juste une API permettant de piloter le code aster et de faire un post traitement selon les eurocodes.


Pour l'installation du code aster, je trouve que le plus simple est de passer par Salome dont l'installation est assez simple et qui installe le code aster en même temps.

Le mieux est de vous brancher sur le forum du code aster pour les problèmes d'installation et de prise en main.Il y a une communauté trés active.


quelques conseils pour la prise en main du code aster:
A la base c'est un logiciel qui ne fait que le calcul: pas d'interface graphique ni de visualisation intégrée:les données sont entrées dans 2 (en général) fichiers textes:
- le fichier de maillage pour la géométrie
- le fichier de commandes pour les chargements, les options de calcul, etc
Le fichier de commande a cette particularité qu'il accepte des commandes en python, ce qui a déterminé mon choix de python pour pyopenshelter, les utilisateurs du code_aster sont en effet sensés connaitre python.

Le calcul peut ce lancer par la console avec une ligne de commande, mais il faut pour renseigner le code aster un fichier (.export) qui indique les fichiers de données, et des renseignements sur la machine de l'utilisateur, il n'y a pas de doc trés claire sur ce fichier, le mieux est d'en créer un automatiquement avec l'interface ASTK (voir plus bas)


Il existe quelques outils qui peuvent remplir le role d'interface graphique:
- Salome meca: permet de modéliser une structure par une interface graphique, et de lancer un calcul du code aster directement. C'est un logiciel adapté à l'industrie, bien pour les éléments finis, mais pas bien adapté aux structures de type poutres.
- ASTK: c'est une interface graphique qui permet de lancer les calculs:
on indique dans une fenêtre le répertoire de travail, les fichiers de données (maillage et fichier de commande) et le nom des fichiers de résultats, et le calcul est lancé en cliquant
- gmsh: logiciel libre de maillage qui peut servir à faire le modèle géométrique et à visualiser les résultats, ce logiciel à l'honneur d'être intégré dans la logithèque d'Ubuntu (logiciels d'education)

A noter qu'il existe une distribution linux ( caeLinux ) qui est livrée avec le codeaster et plein d'autres logiciels de calcul.

Quand à pyopenshelter, il permet de  modéliser des structures de poutres dans un langage "pythonique", de visualiser les résultats en 3D (avec VTK), de lancer un calcul par le code aster, il y a quelques modules d'export (dxf, pdf), un module de combinaisons ELS ELU Eurocodes (pas encore sur le site), vérification de fleches et sections par eurocode5, calcul d'assemblages (pointes et boulons) par eurocode5... bref il fait beaucoup de choses, plus tout ce qu'on peut imaginer avec les très nombreuses bibliothèques python existantes.


Mais dans l'immédiat il faut le voir comme un projet en début de développement, dans une optique plus vaste consistant à offrir au développeur python des outils de modélisation pour le  bâtiment dans son langage préféré.
Gérard

Hors ligne

#28 Le 20/01/2010, à 01:30

j1100

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

bon alors 2-3 questions juste comme ça...

1) ça sert à quoi de sortir de bazooka de la mort pour tuer une mouche? aster, c'est de la mef, non? je pense que pybar suffit largement pour des problèmes aux EC

2) est-ce que quelqu'un a les EC, même en partie. je sais que ça coûte bonbon!

3) je suis partant pour géotech, et mixte. je pense que ba/bp, il y en a pas mal qui connaisse. pareil pour cm.

Hors ligne

#29 Le 20/01/2010, à 10:44

mc@ubuntu

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

Bonjour,

Comme dit ossatureLibre, si vous avez des problèmes d'installation de Code_Aster, allez sur www.code-aster.org (problème avec l'hébergement du site ces jours-ci...).
Et pour ces problèmes d'installation, si quelqu'un veut se pencher sur la fabrication de paquets, à dispo pour en parler !

Si vous décidez d'utiliser Code_Aster dans votre nouvel outil, n'hésitez pas à vous faire connaître, demander des infos sur la meilleure manière de s'interfacer avec Code_Aster...

Bravo pour votre analyse SaloméMéca / Code_Aster / astk : c'est tout juste !
(et pour les connaisseurs et ceux qui veulent lancer un calcul aster à la main : as_run pourra se passer d'un fichier export pour les calculs simples dans la prochain livraison)

MC

Dernière modification par mc@ubuntu (Le 20/01/2010, à 10:45)

Hors ligne

#30 Le 20/01/2010, à 13:45

peterp@n

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

j1100 a écrit :

bon alors 2-3 questions juste comme ça...

1) ça sert à quoi de sortir de bazooka de la mort pour tuer une mouche? aster, c'est de la mef, non? je pense que pybar suffit largement pour des problèmes aux EC

Qu'est ce que ça veut dire "mef"?
pyBar est plus simple mais oblige à décomposer le projet.
Mais la possibilité de pouvoir créer la structure entière en une fois est intéressante aussi.
Pour l'instant je trouve bien de découvrir et tester tout ce qui existe déjà.

j1100 a écrit :

2) est-ce que quelqu'un a les EC, même en partie. je sais que ça coûte bonbon!

J'ai toutes les EC en .rtf et/ou .pdf.

j1100 a écrit :

3) je suis partant pour géotech, et mixte. je pense que ba/bp, il y en a pas mal qui connaisse. pareil pour cm.

Excusez mon ignorance mais que veut dire "géotech et mixte", "ba/bp", et "cm" ?

Hors ligne

#31 Le 20/01/2010, à 14:43

mc@ubuntu

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

j1100 a écrit :

1) ça sert à quoi de sortir de bazooka de la mort pour tuer une mouche? aster, c'est de la mef, non? je pense que pybar suffit largement pour des problèmes aux EC

Certes, Code_Aster n'est pas développé dans cet objectif, mais il le fait très bien. A vous de choisir !

Si vous développez un module python pour les eurocodes, cela peut potentiellement intéresser d'autres utilisateurs de Code_Aster. Çà pourrait être intégré.

MC


PS MEF : méthode des éléments finis

Dernière modification par mc@ubuntu (Le 20/01/2010, à 14:46)

Hors ligne

#32 Le 21/01/2010, à 17:17

ossatureLibre

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

Je n'utilise pas le code-aster et pyopenshelter pour tuer des mouches mais pour modéliser des structures dans un cadre professionnel, pour cela j'ai besoin:
- de pouvoir modéliser en 3D pour etudier le contreventement de structures assymétriques
- de pouvoir faire des calculs dynamiques ou modaux (séisme)
- de pouvoir faire des calculs non linéaires (cables, flambement)
- de  pouvoir faire des calculs par éléments finis volumiques (modélisation du sol par exemple)
- etc
Tout cela le code_aster le fait très bien et même mieux que la plupart des logiciels du commerce.

Mais forcemment cela a un coût: la complexité (que l'on retrouve dans une certaine mesure dans pyopenshelter!)

Ce que le code_aster (et salome) fait mal ou pas:
- la modélisation de systèmes de poutres (en particulier visualisation des sections, modélisation des liaisons entre poutres ...)
pyopenshelter a été créé à l'origine dans ce but.
- la vérification des sections et assemblages selon les eurocodes
Le fait de le proposer sous forme de bibliothèque python offre de plus des possibilités de modélisation paramétrique énormes.


j'ai mis la dernière "version" de pyopenshelter en ligne:
http://www.pyopenshelter.com/doc/download/download.html

Le danger de la programmation en particulier avec python, c'est que dés qu'on a besoin d'une fonctionnalité, il suffit ... de la rajouter!

Ce qui explique qu'en un an de développement anarchique j'ai produit une bibliothèque hypertrophiée dans laquelle les visiteurs risquent de se perdre.
D'où la necessité de créer une communauté d'utilisateurs et de développeurs (en fait tout utilisateur est développeur puisqu'un modèle n'est rien d'autre qu'un script python) pour proposer une API cohérente et bien documentée

Gérard

Hors ligne

#33 Le 22/01/2010, à 21:38

j1100

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

géotech, c'est l'eurocode 7: calcul géotechnique

ba/bp: béton armé et béton précontraint, cm:construction métallique.

Hors ligne

#34 Le 25/01/2010, à 10:39

peterp@n

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

Salut à tous,

Je suis en train de tester CaeLinux2009 en live-cd.

Ca dépote ! Pas besoin de s'embéter à installer Salome ou code_aster sur Karmic ou autres.
Mais j'arrive pas à faire grand chose...
J'ai l'impression que c'est trop complet par rapport à ce que j'imaginais.

Du coup je me sens dépassé par l'ampleur de la tâche.

Je me demande si je dois persister à comprendre Salomé, code_aster etc... ou si, comme à l'air de penser j1100, il vaut mieu partir de quelque chose de plus simple comme pyBar.
Pour l'instant je me sens incapable de produire quoique ce soit avec salome et code_aster. 

Si il y en a parmis vous qui utilise CaeLinux j'ai 2 questions :
Faut il faire les MAJ ?
Comme je suis en live_cd je peux pas mettre la distrib en full french mais j'imagine que tous les logiciels sont en anglais, non ?
Existe t il des tutoriels en français pour débuter avec salome et code_aster et orientés structure ?
(c'est pas que je sois anglophobe mais pour débuter j'aime bien ma langue maternelle)

A Gérard :
Dans Salome, est ce que tu modélises les éléments d'une structure avec des noeuds et des lignes ou avec des volumes ?
Comment est ce que je peux appliquer des efforts sur ma structure directement dans salome ?
exemple :
http://www.hiboox.com/go/pictures/priva … 9.png.html

Bonne journée !

Hors ligne

#35 Le 12/02/2010, à 02:42

wwiki

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

ossatureLibre a écrit :

Je n'utilise pas le code-aster et pyopenshelter pour tuer des mouches mais pour modéliser des structures dans un cadre professionnel, pour cela j'ai besoin:
- de pouvoir modéliser en 3D pour etudier le contreventement de structures assymétriques
- de pouvoir faire des calculs dynamiques ou modaux (séisme)
- de pouvoir faire des calculs non linéaires (cables, flambement)
- de  pouvoir faire des calculs par éléments finis volumiques (modélisation du sol par exemple)
- etc
Tout cela le code_aster le fait très bien et même mieux que la plupart des logiciels du commerce.

Mais forcemment cela a un coût: la complexité (que l'on retrouve dans une certaine mesure dans pyopenshelter!)

Ce que le code_aster (et salome) fait mal ou pas:
- la modélisation de systèmes de poutres (en particulier visualisation des sections, modélisation des liaisons entre poutres ...)
pyopenshelter a été créé à l'origine dans ce but.
- la vérification des sections et assemblages selon les eurocodes
Le fait de le proposer sous forme de bibliothèque python offre de plus des possibilités de modélisation paramétrique énormes.


j'ai mis la dernière "version" de pyopenshelter en ligne:
http://www.pyopenshelter.com/doc/download/download.html

Le danger de la programmation en particulier avec python, c'est que dés qu'on a besoin d'une fonctionnalité, il suffit ... de la rajouter!

Ce qui explique qu'en un an de développement anarchique j'ai produit une bibliothèque hypertrophiée dans laquelle les visiteurs risquent de se perdre.
D'où la necessité de créer une communauté d'utilisateurs et de développeurs (en fait tout utilisateur est développeur puisqu'un modèle n'est rien d'autre qu'un script python) pour proposer une API cohérente et bien documentée

Gérard

Bonjour ,

Je trouve la proposition intéressante .

Par contre ma plus grosse difficulté est plus informative. Ou puis-je consulter les EUROCODES ?

De plus , je vous suggère de faire un poste de lancement sur le site http://caelinux.com/CMS/index.php?option=com_joomlaboard&Itemid=52

Hors ligne

#36 Le 13/02/2010, à 06:16

peterp@n

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

Salut wwiki,
Bienvenue parmis nous !
Contactes moi pour les Eurocodes.
Pour ce qui est de lancer le projet à plus grande échelle j'attends d'avoir finit quelques épreuves et projet en cours (étudiant en licence professionnelle) pour m'y replonger sérieusement.
A+

Dernière modification par Peterpan12 (Le 13/02/2010, à 14:17)

Hors ligne

#37 Le 18/02/2010, à 20:38

wwiki

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

Re - bonjour à tous,

Pour ma part , je trouve l'orientation donnée par ossatureLibre , la plus intéressante sur le long terme et la plus rapide à mettre en oeuvre par rapport à l'ensemble des Eurocodes.

En plus Peterpan12 comme tu connais python , il n'y a pas de problème.

roll

Hors ligne

#38 Le 18/02/2010, à 22:01

peterp@n

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

Oula, "connaitre" python est un bien grand mot. big_smile
Je n'y connais pas grand chose en réalité, même si je comprend vite, je n'ai eu aucune formation en programmation. Et le script que je montre au début du topic est tout simplement la transposition de codes trouvés sur Internet.

Maintenant il est vrai que l'orientation donnée par ossatureLibre répond a un besoin professionnel et ceci pour tout les corps de métiers.
Je suis aussi d'accord sur le fait que c'est la solution la plus intéressante sur le long terme mais cela va demandé une étude approfondie de code_aster (pour ma part en tous cas).

Peterpan12, pressé de finir le semestre et de partir en stage pour se pencher sur ce projet. smile

Hors ligne

#39 Le 18/02/2010, à 23:47

wwiki

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

Merci pour ta réponse Peterpan12 ,

Quand tu es disponibles , je peux te faire un topo rapide sur les outils qu'ossatureLibre a décrit .
C'est vrai qu'ils sont d'un abord rude, mais pour ma part , je trouve que l'on va vraiment beaucoup plus loin
qu'avec les logiciels commerciaux.

Allez bon fin de semestre . cool

Dernière modification par wwiki (Le 18/02/2010, à 23:47)

Hors ligne

#40 Le 23/02/2010, à 21:01

fabdark

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

salut je suis intéressé par votre projet y a t'il une première version fonctionnelle ?

Hors ligne

#41 Le 24/02/2010, à 12:05

peterp@n

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

salut fabdark,
Le projet que nous développons ici n'a aucune version pour l'instant.
Les seules choses que tu peus tester c'est : pyOpenShelter de ossatureLibre et aussi mon script dans mon premier message.
Voilà, si tu as des scripts ou des programmes dans ce domaine, faits nous en part.
smile

Hors ligne

#42 Le 24/02/2010, à 19:06

fabdark

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

malheureusement je suis en BTS SCBH mais je n'ai aucune notion de programmation donc vous donner un coup de main serai un grand plaisir mais a par le calcul aux eurocodes je m'en arrête là, mais j'imagine que vous connaissez bien tout cela.

sinon je veut bien testé le programme de Ossature libre si il veut bien m'expliquer comment faut l'installer merci d'avance a lui. car je dois avoué j'aime bien son concept de modéliseur wink

sinon je peut répondre a certaine question sur les eurocodes sur le bois et le vent si il y a besoins je suivrai ce sujet de près en m'impliquant au maximum

Hors ligne

#43 Le 24/02/2010, à 22:27

Julius

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

Un de mes prof' est assez intéressé par la démarche...

Il aimerait savoir si certains d'entre vous seraient intéressés par s'impliquer vraiment dans la programmation, en partant de ce qu'ils ont déjà fait : http://www.geuz.org/gmsh/

Apparemment le maillage fonctionne super bien et là ils sont en train d'implémenter les éléments finis dans l'idée de pouvoir communiquer avec d'autres programmes déjà existants (genre code aster j'imagine).

Bref, si ça vous tente, c'est un projet d'une grosse envergure mais il faut du temps et connaitre le c++


Les logiciels libres à Sambreville avec le SambreLUG.

Hors ligne

#44 Le 02/03/2010, à 22:25

Brain Bug

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

Bonsoir,

Je suis pas mal intéressé par ce projet que je compte suivre. De là à m'impliquer, je pense ne pas avoir le niveau. sad (et dans le cas contraire, je me manifesterai)

Sinon j'ai une question sur ces propos :

Julius a écrit :

Un de mes prof' est assez intéressé par la démarche...

Il aimerait savoir si certains d'entre vous seraient intéressés par s'impliquer vraiment dans la programmation, en partant de ce qu'ils ont déjà fait : http://www.geuz.org/gmsh/

Apparemment le maillage fonctionne super bien et là ils sont en train d'implémenter les éléments finis dans l'idée de pouvoir communiquer avec d'autres programmes déjà existants (genre code aster j'imagine).

Bref, si ça vous tente, c'est un projet d'une grosse envergure mais il faut du temps et connaitre le c++

Au boulot on utilise gmsh pour mailler les pièces et calculer avec code aster si j'ai bien compris. Donc il communique déjà avec Aster non ? J'ai raté quelque chose ?

Hors ligne

#45 Le 08/03/2010, à 13:27

captnfracasse

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

Salut, salut !!

Je suis aussi en SCBH sur Nantes. Ce projet m'interesse beaucoup. J'avais déjà commencé un site en php sur le calcul de charge (malheureusement, j'ai tout perdu) . Je suis en fin de deuzième année (donc bientot le projet) et ce petit programme m'avait aidé à chaque fois. Je vais rééssayer Salome et code aster. Je les avais déjà testé au debut de ma formation et cela m'avait paru très compliqué. Je voudrais lancer un site communautaire sur la construction (open). J'ai déjà mis un site nuked >> http://www.konstruction.tk/ . et un chan irc sur spidernet.org : #konstruction .

A+

Baptiste.

#46 Le 12/03/2010, à 10:45

captnfracasse

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

up

#47 Le 29/03/2010, à 19:42

stephane creativbois

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

smile bonjour a tous je de tout coeur avec vous ! c'est beau  des projets comme ceux ci
je suis dans le bois mais pas dans la programmation désolé (vous voyez l'intérêt que je porte a votre projet lol )
car les calcul a la main ....:P
bien des logiciels mais pas donné et je le comprend vu le travail dessus tongue

Hors ligne

#48 Le 10/04/2010, à 20:35

toitoinebzh

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

salut
pour ceux intéresser
scilab développe un module pour l'eurocodes
http://www.scilab.org/projects/development/eurocodes


toitoinebzh@jabber.fr
http://toitoinebzh.blog.free.fr

Hors ligne

#49 Le 19/04/2010, à 09:44

VinsS

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

Bonjour,

Une version PyQt du script de Peterpan12

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import os
from xml.dom import minidom

from PyQt4 import QtCore, QtGui

class TopWindow(object):
    c_folder = os.getcwdu()
    f_datas = os.path.join(c_folder, "materiau.xml")
    gM = 0
    kh = 0

    def setup_gui(self, MainWindow):
        MainWindow.resize(350, 500)
        MainWindow.setWindowTitle("Calcul d'ossature")
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.gridLayout_2 = QtGui.QGridLayout(self.centralwidget)
        self.verticalLayout = QtGui.QVBoxLayout()
        self.gridLayout = QtGui.QGridLayout()
        self.title_0 = QtGui.QLabel(self.centralwidget)
        self.font = QtGui.QFont()
        self.font.setFamily("AlMateen")
        self.font.setWeight(75)
        self.font.setBold(True)
        self.title_0.setFont(self.font)
        self.title_0.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing
                                    |QtCore.Qt.AlignVCenter)
        self.gridLayout.addWidget(self.title_0, 0, 0, 1, 1)
        spacerItem = QtGui.QSpacerItem(108, 20, QtGui.QSizePolicy.Expanding, 
                                    QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 0, 1, 1, 1)
        self.label_0 = QtGui.QLabel(self.centralwidget)
        self.label_0.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing
                                    |QtCore.Qt.AlignVCenter)
        self.gridLayout.addWidget(self.label_0, 1, 0, 1, 1)
        self.class_meca_cmb = QtGui.QComboBox(self.centralwidget)
        self.gridLayout.addWidget(self.class_meca_cmb, 1, 1, 1, 1)
        self.label_1 = QtGui.QLabel(self.centralwidget)
        self.label_1.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing
                                    |QtCore.Qt.AlignVCenter)
        self.gridLayout.addWidget(self.label_1, 2, 0, 1, 1)
        self.base_spb = QtGui.QSpinBox(self.centralwidget)
        self.base_spb.setMaximum(9000000)
        self.gridLayout.addWidget(self.base_spb, 2, 1, 1, 1)
        self.label_2 = QtGui.QLabel(self.centralwidget)
        self.label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing
                                    |QtCore.Qt.AlignVCenter)
        self.gridLayout.addWidget(self.label_2, 3, 0, 1, 1)
        self.height_spb = QtGui.QSpinBox(self.centralwidget)
        self.height_spb.setMaximum(9000000)
        self.gridLayout.addWidget(self.height_spb, 3, 1, 1, 1)
        self.label_3 = QtGui.QLabel(self.centralwidget)
        self.label_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing
                                    |QtCore.Qt.AlignVCenter)
        self.gridLayout.addWidget(self.label_3, 4, 0, 1, 1)
        self.ft_lbl = QtGui.QLabel(self.centralwidget)
        self.gridLayout.addWidget(self.ft_lbl, 4, 1, 1, 1)
        self.label_4 = QtGui.QLabel(self.centralwidget)
        self.label_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing
                                    |QtCore.Qt.AlignVCenter)
        self.gridLayout.addWidget(self.label_4, 5, 0, 1, 1)
        self.gm_lbl = QtGui.QLabel(self.centralwidget)
        self.gridLayout.addWidget(self.gm_lbl, 5, 1, 1, 1)
        self.label_5 = QtGui.QLabel(self.centralwidget)
        self.label_5.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing
                                    |QtCore.Qt.AlignVCenter)
        self.gridLayout.addWidget(self.label_5, 6, 0, 1, 1)
        self.kh_lbl = QtGui.QLabel(self.centralwidget)
        self.gridLayout.addWidget(self.kh_lbl, 6, 1, 1, 1)
        self.title_2 = QtGui.QLabel(self.centralwidget)
        self.title_2.setFont(self.font)
        self.title_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing
                                    |QtCore.Qt.AlignVCenter)
        self.gridLayout.addWidget(self.title_2, 7, 0, 1, 1)
        spacerItem1 = QtGui.QSpacerItem(108, 20, QtGui.QSizePolicy.Expanding, 
                                        QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem1, 7, 1, 1, 1)
        self.label_8 = QtGui.QLabel(self.centralwidget)
        self.label_8.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing
                                        |QtCore.Qt.AlignVCenter)
        self.gridLayout.addWidget(self.label_8, 8, 0, 1, 1)
        self.N_dsb = QtGui.QSpinBox(self.centralwidget)
        self.N_dsb.setMaximum(999999999)
        self.gridLayout.addWidget(self.N_dsb, 8, 1, 1, 1)
        self.label_9 = QtGui.QLabel(self.centralwidget)
        self.label_9.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing
                                        |QtCore.Qt.AlignVCenter)
        self.label_9.setObjectName("label_9")
        self.gridLayout.addWidget(self.label_9, 9, 0, 1, 1)
        self.kmod_dsb = QtGui.QDoubleSpinBox(self.centralwidget)
        self.kmod_dsb.setMaximum(999999999)
        self.gridLayout.addWidget(self.kmod_dsb, 9, 1, 1, 1)
        self.verticalLayout.addLayout(self.gridLayout)
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.kh_btn = QtGui.QToolButton(self.centralwidget)
        self.horizontalLayout.addWidget(self.kh_btn)
        self.proceed_btn = QtGui.QToolButton(self.centralwidget)
        self.horizontalLayout.addWidget(self.proceed_btn)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.label_10 = QtGui.QLabel(self.centralwidget)
        self.horizontalLayout_2.addWidget(self.label_10)
        self.lineEdit = QtGui.QLineEdit(self.centralwidget)
        self.horizontalLayout_2.addWidget(self.lineEdit)
        self.quit_btn = QtGui.QToolButton(self.centralwidget)
        self.horizontalLayout_2.addWidget(self.quit_btn)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.gridLayout_2.addLayout(self.verticalLayout, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 350, 25))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        MainWindow.setStatusBar(self.statusbar)

        self.retranslate(MainWindow)
        
        self.cal = Calcul()
        self.i_dat = DataImport(self.f_datas)
        profils = ["Profils ..."]
        for p in self.i_dat.listmeca:
            profils.append(p)
        self.class_meca_cmb.addItems(profils)

        QtCore.QObject.connect(self.class_meca_cmb, QtCore.SIGNAL
                                ("activated(int)"), self.set_profil)
        QtCore.QObject.connect(self.base_spb, QtCore.SIGNAL
                                ("valueChanged(int)"), self.change_val)
        QtCore.QObject.connect(self.height_spb, QtCore.SIGNAL
                                ("valueChanged(int)"), self.change_val)
        QtCore.QObject.connect(self.kh_btn, QtCore.SIGNAL
                                ("clicked()"), self.kh_value)
        QtCore.QObject.connect(self.proceed_btn, QtCore.SIGNAL
                                ("clicked()"), self.cal.calcul)
        QtCore.QObject.connect(self.quit_btn, QtCore.SIGNAL
                                ("clicked()"), exit)

    def retranslate(self, MainWindow):
        self.title_0.setText(QtGui.QApplication.translate
                            ("MainWindow", "Définition de l\'élément étudié :",
                            None, QtGui.QApplication.UnicodeUTF8))
        self.label_0.setText(QtGui.QApplication.translate
                            ("MainWindow", "Classe mécanique :", 
                            None, QtGui.QApplication.UnicodeUTF8))
        self.label_1.setText(QtGui.QApplication.translate
                            ("MainWindow", "Base b :", None, 
                            QtGui.QApplication.UnicodeUTF8))
        self.base_spb.setSuffix(QtGui.QApplication.translate
                            ("MainWindow", " mm", None, 
                            QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate
                            ("MainWindow", "Hauteur h :", None, 
                            QtGui.QApplication.UnicodeUTF8))
        self.height_spb.setSuffix(QtGui.QApplication.translate
                            ("MainWindow", " mm", None, 
                            QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate
                            ("MainWindow", "ft, O, k :", None, 
                            QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate
                            ("MainWindow", "gM :", None, 
                            QtGui.QApplication.UnicodeUTF8))
        self.label_5.setText(QtGui.QApplication.translate
                            ("MainWindow", "Kh :", None, 
                            QtGui.QApplication.UnicodeUTF8))
        self.title_2.setText(QtGui.QApplication.translate
                            ("MainWindow", "Définition de l\'effort :",
                             None, QtGui.QApplication.UnicodeUTF8))
        self.label_8.setText(QtGui.QApplication.translate
                            ("MainWindow", "N  :", None, 
                            QtGui.QApplication.UnicodeUTF8))
        self.N_dsb.setSuffix(QtGui.QApplication.translate
                            ("MainWindow", " N", None, 
                            QtGui.QApplication.UnicodeUTF8))
        self.label_9.setText(QtGui.QApplication.translate
                            ("MainWindow", "kmod :", None, 
                            QtGui.QApplication.UnicodeUTF8))
        self.kh_btn.setText(QtGui.QApplication.translate
                            ("MainWindow", "kh ?", None, 
                            QtGui.QApplication.UnicodeUTF8))
        self.proceed_btn.setText(QtGui.QApplication.translate
                            ("MainWindow", "Calculer", None, 
                            QtGui.QApplication.UnicodeUTF8))
        self.label_10.setText(QtGui.QApplication.translate
                            ("MainWindow", "Taux de travail :", 
                            None, QtGui.QApplication.UnicodeUTF8))
        self.quit_btn.setText(QtGui.QApplication.translate
                            ("MainWindow", "Quitter", None,
                            QtGui.QApplication.UnicodeUTF8))

    def set_profil(self, idx):
        if idx:
            self.ft0k = eval(self.i_dat.get_value(idx, "ftok"))
            self.ft_lbl.setFont(self.font)
            self.ft_lbl.setText("".join([str(self.ft0k), " Mpa"]))
            self.gM = eval(self.i_dat.get_value(idx, "gM"))
            self.gm_lbl.setFont(self.font)
            self.gm_lbl.setText(str(self.gM))
            self.kh_lbl.setText("") 

    def change_val(self, v):
        self.base = self.base_spb.value()
        self.height = self.height_spb.value()
        self.kh_lbl.setText("")

    def kh_value(self):
        if self.gM and self.height:
            if self.gM == 1.3:
                if self.height >= 150:
                    self.kh=1.0
                elif self.height > 0 :
                    kh = (150 / self.height)
                    kh = pow(kh, 0.2)
                    kh = min(1.3, kh)
                    self.kh = (int(kh * 100)) / 100.0
                else :
                    self.statusbar.showMessage(u"Entrée incorrecte : Hauteur")
                    return 
       
            elif self.gM == 1.25:
                if self.height >= 600:
                    self.kh = 1.0
                elif self.height > 0 :
                    kh = pow(600 / self.height, 0.1)
                    kh = min(1.1, kh)
                    self.kh = (int(kh * 100)) / 100.0
                else :
                    self.statusbar.showMessage(u"Entrée incorrecte : Hauteur")
                    return 
                        
            self.kh_lbl.setFont(self.font)
            self.kh_lbl.setText(str(self.kh))

                 
        

class DataImport(object):

    def __init__(self, datas):
        xmldoc = minidom.parse(datas)
        self.reflist = xmldoc.getElementsByTagName('profil')
        self.listmeca = [ligneX.attributes["id"].value for ligneX in self.reflist]

    def get_value(self, idx, d) :
        ligneX = self.reflist[idx]
        valeur_symbole = ligneX.attributes[d]
        valeur_symbole = valeur_symbole.value
        valeur_symbole = valeur_symbole.encode('utf-8')
        return valeur_symbole


class Calcul(object):
    def __init__(self):
        pass

    def calcul(self):
        effort = float(gui.N_dsb.value())
        Kmod = float(gui.kmod_dsb.value())
        if effort and Kmod and gui.base and gui.height and gui.ft0k:
            aire = gui.base * gui.height
            st0d = effort / aire
            print type(gui.ft0k), type(gui.kh), type(Kmod), type(gui.gM)
            Ft0d = gui.ft0k * gui.kh * Kmod / gui.gM
            self.travail = (st0d / Ft0d)
            gui.lineEdit.setText(str(self.travail))
        else:
            gui.statusbar.showMessage(u"Données insufisantes.")


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    gui = TopWindow()
    gui.setup_gui(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

PyQt 4.4 ou sup.

cordialement, vincent


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#50 Le 05/05/2010, à 22:35

peterp@n

Re : Idée projet Logiciel RDM Eurocodes Structures Bois, Acier, Béton...

Au top cette version ! smile

N'y aurait il pas moyen de séparer interface graphique et programme ?

Je m'attaque à un petit script pour définir la charge de neige sur la toiture.

Edit : Dans ton script VinsS il faut remplacer :
ligne 159

self.label_3.setText(QtGui.QApplication.translate
                            ("MainWindow", "ft, O, k :", None,

par

self.label_3.setText(QtGui.QApplication.translate
                            ("MainWindow", "ft, 0, k :", None,

C'est juste le "O" qu'il faut remplacer par un "0".

De plus le "g" de "gM" est en réalité la lettre grec gamma. Si tu sais comment le faire apparaître ainsi, ce serait classe. big_smile

Dernière modification par Peterpan12 (Le 05/05/2010, à 22:56)

Hors ligne

Haut de page ↑