Modélisation/simulation schéma électrique

JuniorJdd Messages postés 1 Date d'inscription mardi 25 juillet 2017 Statut Membre Dernière intervention 25 juillet 2017 - 25 juil. 2017 à 17:49
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 - 8 août 2017 à 12:49
Bonjour ,

je veux réaliser un interface graphique avec VB.net pour dessiner et calculer les grandeurs électriques d'un schéma électrique représentant un réseau électrique BT. pour cela je souhaite votre aide concernant la partie programmation d'interface et connexion avec la base de données et choix et dessin des éléments du circuit...;

Merci d'avance,
A voir également:

12 réponses

Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
27 juil. 2017 à 15:12
Bonjour.

tu ne poses pas vraiment de questions, pas facile de répondre.
0
Bonjour Whismeril , ma question est : comment réaliser un code en VB.net pour pouvoir ajouter des éléments(symboles des équipements électriques: transfo, disjoncteur,...) et dessiner des circuits électriques?
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
27 juil. 2017 à 15:57
En winform ou WPF?
0
Wpf mais je crois qu'on peut le faire meme avec winforms!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
27 juil. 2017 à 16:10
WPF c'est bien.

Je te conseille de faire un contrôle perso "élément" qui combine une image et les caractéristiques communes à tous les éléments.
Ensuite tu dérives pour chaque famille : interrupteurs, disjoncteurs, etc..

Pour les câbles tu veux faire de l'unifilaire?
0
oui exactement juste le schéma unifilaire.
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
27 juil. 2017 à 16:24
alors je pense que tu peux dériver un path, en lui ajoutant un "père" et un "fils" de type "élément" qui sont les éléments reliés.
Dans ce nouveau contrôle, il faut gérer le dessin au fur et à mesure du déplacement de la souris.
0
Merci beaucoup Whismeril pour tes réponses. svp je veux des exemples car je ne suis pas très fort dans cette partie de programmation d'interface. et je veux la terminer très vite pour entamer les calculs (estimation) des grandeurs électriques...c mon domaine (je suis un électricien).
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
27 juil. 2017 à 19:04
Je ne veux pas te décourager, mais ce type d'interface n'est pas toute simple, elle nécessitera un peu de maîtrise de WPF et donc du temps.
0
JeuDuTaquin Messages postés 249 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 mai 2023 7
31 juil. 2017 à 02:16
salut JuniorJdd,

Comme Whismeril le dit si bien ... nous ne pouvons pas te décourager!
Ce forum et ce site est là pour coder, créer et expérimenter des projets.

Mais, tes messages son contradictoires.
Tu veux faire un projet graphique avec traitement d'informations rapidement ... et sans connaissance en programmation (d'interface!).

En gros, 300 heures de codes et un résultat improbable.
Je ne compte pas les heures à chercher les codes, à tester et déboguer les interconnections entre modules.

Avant de lancer une enclume en l'air, il faut chercher les solutions existantes, car tu n'es pas le seul électricien sur terre... et encore moins le seul à faire des estimations de devis!

Un programmeur efficace est un programmeur paresseux.

En partant de ce concept, tu dois chercher le rapport temps/utilisation personnelle qui tu permettras de gagner du temps pour ton travail.

Donc, recherche les éléments de base qui t'aideront à ton projet, et adapte le, de manière à gagner plus de temps que le cumul des heures de travail en programmation.

Refaire de nouveaux projets sur des bases déjà existantes te feront gagner beaucoup de temps, et c'est là le but du partage des informations, ressources et expériences des forums dédiés.

Dans ce cas, partir sur un projet de zéro est ... voué à l'échec, car ici, ce sera des problèmes de bibliothèques de dessins (schématique) et là, des soucis d'impression ou de calculs!

J'imagine que dans l'urgence, un graphiste ne se mettra pas à programmer un logiciel de dessin pour son boulot.

Il te faut donc prendre tes besoins point par point et "sous-traiter" certaines fonctions déjà programmées.

Il ne te restera plus qu'a coder un logiciel/script qui fera la synthèse de tes besoins.
Et cela ne passe pas forcement par la création d'un logiciel dédié.

Pour le dessin, Autocad avec des scripts LIST et les librairies déjà existantes, ou même KiCad qui propose une possibilité avantageuse avec une adaptabilité de sa librairie, et son exportation de nomenclature en mode texte... et j'en passe (scripts Excels ou Access...)
Avec cela, tu peux faire de beau dessins...

Pour le chiffrage et nomenclature, une page access avec la quantification du matériel et les créations de pages de devis automatiques.

Au pire, tu customises un programme pour importer les fichiers XML ou texte pour lier et ajouter des informations de compatibilité!

Mais, si tu souhaites TOUT créer toi-même, tu perdra beaucoup de temps et d'énergie à trouver comment en gagner!

Pour faire un projet, il faut gauger la faisabilité dans son entièreté et ne pas partir de zéro... surtout si les besoins son personnels et urgents.

Ton projet sera, selon moi, le travail de toute une vie, en réinventant le dessin vectoriel, la base de donnée et un nouveau système de feuille de calcules...
Etudie tes besoins, les solutions existants et tu n'aura "que" le reste à imaginer.

C'est à partir de cette synthèse du "C'est ça qui n'a pas été inventé!", que tu pourra gagner un temps non négligeable dans l'utilisation finale de ton programme.

Donc, si ça existe, pas la peine de perdre son temps à le refaire en moins bien!

Coder, c'est ajouter une plus-value... et non refaire.
Tel un Sisyphe insatisfait.

Télécharge KiCad, fait une librairie électrique, puis regarde le fichier de nomenclatures en sauvegarde.

à partir de là, réalise un script sous Access/Excel pour importer les éléments, puis, réalise ta base de donnée à partir des éléments dans Kicad.

Tu en as pour quelques heures de travail... et non plus ta vie entière!

Amuse-toi bien...
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
31 juil. 2017 à 08:04
Bonjour

Le travail d'un enfant vie entière, p'tet pas quand même, ni réinventer le dessin vectoriel.
Pour les éléments, si on imagine une interface du type proposée par visual studio: un entier liste d'items, quand on clique sur un, on peut en déposer une nouvelle instantce sur la feuille. Et la ligne qui vie au rythme de la souris, c'est pas insurmontable non plus.

Cependant, c'est un peu plus complexe à gérer qu'une liste de contacts.
Et WPF ne s'apprivoise pas "comme ça".

Le truc c'est que Junior demande des exemples, sur des grandes lignes pourquoi pas, mais là je suis en vacances et n'ai pas la possibilité de coder.
Les trucs simples ou je sais répondre de tête, oui, mais ça non.
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656 > Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024
1 août 2017 à 07:42
Bonjour, je viens de m'apercevoir que le correcteur d'orthographe de ma tablette (qui a parfois de corrections surprenantes) a transformé
"d'une vie entière" en "d'un enfant vie entière"...
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
7 août 2017 à 19:12
Bonsoir

un petit exemple vite fait.

La page présente 3 boutons:
  • 2 contiennent un contrôle
  • le dernier est écrit "Cable"


Si tu cliques sur un bouton de contrôle, et que tu cliques ensuite sur la page blanche tu poses ce contrôle.
Si tu cliques le Cable, le premier click sur la page blanche est le début du câble, le second click est un sommet et ainsi de suite jusqu'au double-click final. De façon à savoir que l'édition est en cours, un segment temporaire suit les mouvements de la souris.
Comme c'est un exemple vite fait, on ne peut pas démarrer un câble sur un contrôle, faut le faire un peu à coté.

le xml
<Window x:Class="TestJuniorDD.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" MouseLeftButtonUp="Window_MouseLeftButtonUp" MouseDoubleClick="Window_MouseDoubleClick" MouseMove="Window_MouseMove">
    <Grid Name="grid">
        <StackPanel Width="50" HorizontalAlignment="Left">
            <Button Click="Button_Click">
                <TextBox/>
            </Button>
            <Button Click="Button_Click">
                <RadioButton/>
            </Button>
            <Button Content="Cable" Click="Button_Click"/>
        </StackPanel>
    </Grid>
</Window>


le code behind
Imports System.Text
Imports System.Threading.Tasks

Namespace TestJuniorDD
    ''' <summary>
    ''' Logique d'interaction pour MainWindow.xaml
    ''' </summary>
    Partial Public Class MainWindow
        Inherits Window
        Public Sub New()
            InitializeComponent()
        End Sub

        Private bouton As Button
        Private Sub Button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
            bouton = TryCast(sender, Button) 'caste sender en bouton
        End Sub

        Private Sub Window_MouseLeftButtonUp(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
            If bouton Is Nothing Then
                Return
            End If

            If bouton.Content.ToString() = "Cable" Then
                DessinCable(e)
            Else
                DessinControl(e)
            End If

        End Sub

        #Region "Cable"
        Private cable As Path
        Private figure As PathFigure
        Private Sub DessinCable(ByVal e As MouseButtonEventArgs)
            If cable Is Nothing Then
                cable = New Path() 'on crée un nouveau path

                figure = New PathFigure() 'on crée une figure
                figure.StartPoint = e.GetPosition(grid) 'le point de départ

                Dim ligne As New LineSegment(e.GetPosition(grid), True) 'un segment temporaire

                figure.Segments = New PathSegmentCollection() 'on initialise la collection de segment
                figure.Segments.Add(ligne) 'on ajoute le segment temporaire

                cable.Stroke = New SolidColorBrush(Color.FromRgb(255, 0, 0)) 'on lui donne une couleur au câble

                cable.Data = New PathGeometry( { figure }) ' on met la figure dans le câble

                grid.Children.Add(cable) 'on ajoute le câble à la page
            Else
                figure.Segments.RemoveAt(figure.Segments.Count - 1) 'on enleve le dernier segment temporaire
                figure.Segments.Add(New LineSegment(e.GetPosition(grid), True)) 'on met le vrai segment
                figure.Segments.Add(New LineSegment(e.GetPosition(grid), True)) 'on remet le nouveau segment temporaire
            End If

        End Sub

        Private Sub Window_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
            TraceSegment(e) 'il s'agit d'un segment temporaire
        End Sub

        Private Sub Window_MouseDoubleClick(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
            TraceSegment(e) 'il s'agit du dernier segment

            cable = Nothing 'on stope le dessin du cable
            figure = Nothing
            bouton = Nothing
        End Sub

        Private Sub TraceSegment(ByVal e As MouseEventArgs)
            If cable Is Nothing Then
                Return
            End If

            figure.Segments.RemoveAt(figure.Segments.Count - 1) 'on enleve le dernier segment temporaire
            figure.Segments.Add(New LineSegment(e.GetPosition(grid), True)) 'on remet le nouveau segment
        End Sub
        #End Region

        Private Sub DessinControl(ByVal e As MouseButtonEventArgs)
            Dim control As Control

            If TypeOf bouton.Content Is TextBox Then 'on initialise le bon contrôle
                control = New TextBox()
            Else
                control = New RadioButton()
            End If

            control.Width = 100'on lui mets une taille
            control.Height = 15
            control.Margin = New Thickness(e.GetPosition(grid).X, e.GetPosition(grid).Y, 0, 0)'on le positionne sur la page
            control.HorizontalAlignment = HorizontalAlignment.Left 'on précise la référence de position
            control.VerticalAlignment = VerticalAlignment.Top
            grid.Children.Add(control) 'on l'ajoute

            bouton = Nothing 'on stoppe l'ajout d'un contrôle
        End Sub

    End Class
End Namespace



0
Merci beaucoup Whismeril.
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
8 août 2017 à 12:49
de rien
0
Rejoignez-nous