IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

DXF, Ellipse et Start parameter


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 13
    Points
    13
    Par défaut DXF, Ellipse et Start parameter
    Hello,

    Je lis dans un fichier DXF, dans la section "Entities", les informations pour "ELLIPSE" ( 10 : x, 20 : y,... 41 : start parameter , 42 :End parameter)

    Ensuite j'aimerai dessiner l'ellipse correspondante. Si le start parameter = 0 et le end parameter = 360, c'est bon !

    Mais ou ça ce complique, c'est si l'ellipse n'est pas complète,
    en d'autre terme si c'est un elliptical arc.

    Qqun pourrait-il me dire comment calculer les angles (StartAngle, SweepAngle), correspondant aux Start parameter et end Parameter, afin de dessiner un arc avec le drawArc(...)

    MErci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Salut jules_11,

    J'avais travaillé sur un projet créant des DXF il y a quelques temps.
    J'avais travaillé avec seulement des demis arcs de cercle mais ça pourra quand même peut-être t'aider.

    Considère la classe FinalArc comme un objet représentant un demi arc de cercle dans un fichier DXF, même si c'est plus que ça) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    FinalArc a = fo as FinalArc;
     
    double x, y, diam, startAngle, sweepAngle;
     
    // Utiliser les données originelles
    x = a.X;
    y = a.Y;
    diam = a.Radius * 2.0;
    startAngle = a.StartAngle;
    sweepAngle = 180.0; // sweepAngle dépend de l'autre angle
     
    // Ajuster le point d'orgine
    // selon moi il se trouve au centre du cercle
    // selon la fonction de dessin, en haut à gauche du rectangle contenant le cercle
    x -= a.Radius;
    y -= a.Radius;
     
    // Corriger en fonction de l'offset
    x -= dim.xMin;
    y -= dim.yMin;
     
    // Ajuster les coordonnées en fonction du zoom
    x *= zoomFactor;
    y *= zoomFactor;
    diam *= zoomFactor;
     
    // Prendre en compte les bordures et l'offset de la zone de dessin
    x += this.BorderSize;
    y += this.BorderSize;
     
    if (diam > 0)
    	g.DrawArc(new Pen(fo.IsSelectedObject ? this.SelectedLineColor : this.LineColor), (float)x, (float)y, (float)diam, (float)diam, (float)startAngle, (float)sweepAngle);
    En espérant que ça t'aide.

    Bien à toi,
    Nicolas

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Non, pas tout a fait
    Merci, mais c'est pas exactement ça qui m'embète.
    C'est plutôt de savoir comment utiliser le start parameter (DXF>Ellipse>code 41), et le end parameter (DXF>Ellipse>code 42), pour en ressortir des angles de start et de sweep !

    J'ai déjà essayé, par exemple, de les transformer en radians, mais ça ne marche pas tout le temps, c'est bon quand j'ai certains angles seulement !

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Salut,

    Pour autant que je m'en rappelle, dans ton fichier DXF, les valeurs des angles indiquées sont absolues, tandis que la fonction DrawArc attend une valeur SweepAngle relative à l'angle indiqué en StartAngle.

    Si par exemple tu as dans ton fichier DXF :
    StartAngle 10 (a)
    EndAngle 100 (b)

    tu donneras à la fonction DrawArc :
    StartAngle 10 (a)
    SweepAngle 100(b) - 10(a) => 90


    Sinon concernant les valeurs dans le fichier DXF, il me semble que c'est en degré mais c'est peut-être un paramètre spécifié dans les headers ou autres. Si ton problème vient de là, je ne peux pas t'aider, moi je n'ai jamais rencontré que des angles en degrés, d'autant plus que je ne lisais pas les fichiers mais les créais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Equivalent linux de "start" et *.bat
    Par Pill_S dans le forum Linux
    Réponses: 5
    Dernier message: 13/04/2004, 19h34
  2. Ellipse d'un tube pivotant
    Par clovis dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 18/03/2004, 21h49
  3. Syntaxe PARAMETERS pour requête sous VBA
    Par GAGNON dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/11/2003, 11h39
  4. [JNDI] Equivalent avec Java Web Start ?
    Par cameleon2002 dans le forum Java EE
    Réponses: 8
    Dernier message: 18/09/2003, 18h55
  5. Treeview : Erreur "Reference to variable or parameter..
    Par Tirlibibi dans le forum XMLRAD
    Réponses: 4
    Dernier message: 06/05/2003, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo