1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

Oblong circulaire

Discussion dans 'CamBam' créé par Klystron, 9 Janvier 2016.

  1. Klystron

    Klystron Compagnon

    Messages:
    586
    Inscrit:
    29 Mai 2014
    Localité:
    Val d'Oise ( 95 )
    Dernière édition: 10 Janvier 2016
  2. dh42

    dh42 Compagnon

    Messages:
    3 975
    Inscrit:
    4 Septembre 2009
    Localité:
    Près de St Etienne (42)
    Oblong circulaire
    Salut,

    Ah quand même, tu t'y met :jesors23: ..

    Par contre tu te casse bien la tête pour faire des choses très simples à faire avec les outils de CB :wink:

    http://screencast.com/t/Hjxb0ObW

    PS toutes les infos de l'arc (position,angles) sont également éditables dans sa liste de propriétés. Il suffit de mettre la moitié de la largeur de l'oblong dans le décalage sur ligne ouverte

    ++
    David
     
  3. dh42

    dh42 Compagnon

    Messages:
    3 975
    Inscrit:
    4 Septembre 2009
    Localité:
    Près de St Etienne (42)
    Oblong circulaire
    Salut,

    Je pense surtout que tu commence par des trucs trop compliqués ; il faudrait que tu essai d'abord de faire des choses simples uniquement en VB (appli indépendante de CB) et non pas un plugin, qui est difficile à tester vu que tu ne peux pas utiliser les fonctions pas à pas et débogage intégrées de visual studio.

    L'autre soucis c'est que les fonctions de cambam ne sont pas documentées, ou très peu ..

    Si tu veux tenter la prog cambam, commence par des scripts ; ça te permet de tester immédiatement ton code sans passer par: compilation/fermeture de CB/copie de la dll/relancement de CB etc ... c'est ce que je fais pour trouver comment utiliser les fonctions de CB, ensuite je peux arriver à intégrer le code dans un plugin (peu de différences enttre le VB script parlé par CB et le VB .net)

    Fais les exercice du Coach VB 2008, ça devrait déjà dégrossir un certain nombres de choses.(il faut peut être s'inscrire sur MSDN, je ne sais plus)
    https://msdn.microsoft.com/fr-fr/vstudio/bb265238.aspx

    la doc VB
    https://msdn.microsoft.com/fr-fr/library/sh9ywfdk(v=vs.100).aspx

    ++
    David
     
  4. Bricoleurdudimanche

    Bricoleurdudimanche Nouveau

    Messages:
    1
    Inscrit:
    14 Janvier 2016
  5. dh42

    dh42 Compagnon

    Messages:
    3 975
    Inscrit:
    4 Septembre 2009
    Localité:
    Près de St Etienne (42)
    Oblong circulaire
    Salut,

    Tu n'a pas compris !, le but c'est d'apprendre à programmer :wink:

    Sinon, pour Yves, quand on programme, la première chose à faire est de se concentrer sur "les œuvres vives", autrement dit ce qui fait effectivement le travail ; l'interface graphique et les enjolivures, ça viens après.

    Dans le cas présent, tu a 2 "chalenges" à résoudre ( à faire en VB script dans un 1ier temps pour éviter la lourdeur de la programmation d'un plugin et pouvoir tester "en live")

    - 1) tracer un arc de cercle sur l'écran avec la même fonction arc que l'on utilise en manuel, mais par programmation.

    tes valeurs de centre etc .. peuvent parfaitement être définies en début de code par des variables pour remplacer la saisie via une fenêtre, ce qui suffit pour tester la "logique" du programme.

    -2) une fois cet arc tracé, comme en manuel, tu crée une nouvelle polyligne en utilisant la fonction de décalage sur ligne ouverte via programmation, ce qui te donnera ta polyligne finale (l'oblong donc)

    Une fois que tu aura réussi à faire ces 2 simples opérations via un script VB, tu aura résolu 80% du problème et tu pourra te soucier de la manière de présenter l'interface et de faire parvenir les entrées des champs de la fenêtre à la "partie active" de ton programme.

    PS quand tu crée un nouveau script visualbasic dans Cambam, (Script/nouveau/VBscript) n'oublie pas de lui donner une extension .vbs à la fin de son nom lors de la première sauvegarde, cambam ne met pas l'extension tous seul, et si tu l'oublie tu ne pourra pas voir ni utiliser le script.

    ++
    David
     
  6. dh42

    dh42 Compagnon

    Messages:
    3 975
    Inscrit:
    4 Septembre 2009
    Localité:
    Près de St Etienne (42)
    Oblong circulaire
    salut,

    Apparemment ça sert juste à faire tourner le carré d'un quart de tour ; remplace (2*pi*.125) par (2*pi) et tu verra qu'on a tj un carré, mais avec les cotés à 45° (n'hésite pas à expérimenter, tu ne peux rien "casser" :wink:

    Bon apprès test, si il est facile de tracer un arc, c'est un peu plus difficile d'en faire le contour ; la fonction décalage sur ligne ouverte peut être appelée facilement par programmation, par contre elle ouvre systématiquement une demande pour entrer le décalage, donc pas utilisable dans ce cas.

    Voila pour dessiner un arc.

    ++
    David

    sub main

    Dim CentreX as long = 0 'position XY du centre
    Dim CentreY as long = 0

    Dim StartAng as long = 15 'angle de départ
    Dim Ang as long = 105 'angle à décrire

    Dim radius as long = 35 'rayon de l'arc

    Dim Larg as long = 10 'largeur de la rainure

    'créer une nouvelle primitive Arc qui sera accessible via MyArc
    'en lui passant directement les valeurs souhaitée qui se trouve dans les variables ci dessus
    'dans un plugin avec fenetre, c'est les valeurs des champs de la fenetre que l'on passerait à la fonction

    Dim MyArc as Arc = New Arc(CentreX,CentreY,radius,StartAng,Ang)


    'afficher l'arc à l'écran (en fait, l'ajouter au document)

    doc.Add(MyArc)

    end sub
     
  7. dh42

    dh42 Compagnon

    Messages:
    3 975
    Inscrit:
    4 Septembre 2009
    Localité:
    Près de St Etienne (42)
    Oblong circulaire
    Salut,

    Oui, c'est ça

    Tes déclarations de variables ne sont pas bonnes, mauvaise syntaxe (message d'erreur dans la fenêtre de message de CB)

    Dim grand_radius = long .... FAUX, c'est ... Dim grand_radius as long

    D'autre part, la fonction New Arc() a des paramètres bien définis, et ne prends pas 2 valeur de rayon.

    New Arc(CentreX,CentreY,radius,StartAng,Ang)
    les paramètres doivent être dans le bon ordre, à savoir X et Y du centre, rayon, angle de départ, angle à décrire, rien de plus, rien de moins :wink:

    Dans le cas présent, il n'est pas nécessaire de créer des variables supplémentaires pour calculer les 2 rayons, le calcul peut directement être transmis à la fonction. ... radius-(larg/2)

    Code:
    sub main
    
        Dim CentreX as Double= 0 'position XY du centre
        Dim CentreY as Double= 0
        Dim StartAng as Double= 15 'angle de depart
        Dim Ang as Double= 105 'angle decrire
        Dim radius as Double= 35 'rayon de l'arc
        Dim Larg as Double= 10 'largeur de la rainure
    
    
        Dim MyArc as Arc = New Arc(CentreX,CentreY,radius-(larg/2),StartAng,Ang)
        Dim MyArc2 as Arc = New Arc(CentreX,CentreY,radius+(larg/2),StartAng,Ang)
    
    
        'afficher l'arc a l'ecran (en fait, l'ajouter au document)
    
        doc.Add(MyArc)
        doc.Add(MyArc2)
    
    end sub

    Maintenant il suffit de faire les 2 arcs manquants en bout ; la trigo devrait te permettre de trouver les coord du point XY de centre (le bout du cercle médian, qui n'est pas tracé ici), de l'angle de départ de l'arc (ça doit être 180 + angle de départ du petit arc, au moins pour l'un des 2) et angle à décrire = 180.

    Quand tu aura trouvé pour faire ces 2 derniers arcs, je te montrerais ensuite comment "joindre" tout ça pour n'avoir qu'une seule polyligne.

    Edit, ah oui, et une erreur de ma part, toutes les variables long doivent être remplacées par des double :wink:

    Une vue des paramètres et des fonctions de Arc vue dans Reflector.
    Tu peux voir les différente syntaxe possibles pour New Arc, celle que j'ai utilisée est entourée en rouge.

    Sans titre-1.jpg

    ++
    David
     
    Dernière édition: 18 Janvier 2016
  8. dh42

    dh42 Compagnon

    Messages:
    3 975
    Inscrit:
    4 Septembre 2009
    Localité:
    Près de St Etienne (42)
  9. dh42

    dh42 Compagnon

    Messages:
    3 975
    Inscrit:
    4 Septembre 2009
    Localité:
    Près de St Etienne (42)
    Oblong circulaire
    Re

    Ok il y a un problème, un arc est défini par son centre, l'angle de départ (et non pas une coordonnée de départ) et l'angle à décrire (et non une coordonnée de fin) ; donc tes points P1,P2,P3 et P4 ne servent à rien ; fait une construction sur CB en utilisant un arc, et regarde les valeurs dans ses propriétés, tu comprendra mieux.

    Sur CB, l'angle 0, c'est aligné sur l'axe X, à droite (3h00) ; on tourne en sens trigo (inverse horaire), donc 90° est à la vertical (12h00)

    Oui, pour l'angle à décrire des bouts, il est tj de 180° pour avoir 1/4 de cercle ; ce que tu dois calculer, c'est les coord XY du centre, et l'angle de départ ; l'angle de départ d'un des bout est forcément à 180° de l'angle de départ d'un des autres arcs.

    Il te faut donc l'angle inverse de l'angle de départ des grands arcs ; par exemple, pour un grand segment avec angle de départ = 25°, l'angle inverse sera -155° soit -(180-25) .... plus simple, tu met le même angle de 25°, mais une valeur négative pour le rayon. (arc en violet)

    pour l'autre bout ; angle de départ = angle de départ d'un des grand arc + angle a décrire d'un des grand arcs.

    Regarde le dessin sur CB, sélectionne chaque arc et tu comprendra mieux ; ceux en violet en particulier.

    ++
    David Voir la pièce jointe arc.zip
     
  10. JLuc69

    JLuc69 Compagnon

    Messages:
    1 151
    Inscrit:
    19 Juin 2008
    Localité:
    Genas (69)
  11. dh42

    dh42 Compagnon

    Messages:
    3 975
    Inscrit:
    4 Septembre 2009
    Localité:
    Près de St Etienne (42)
    Oblong circulaire
    normalement oui (pour le bout de gauche) ça devrait être ça, pour le bout de droite, l'angle de départ est l'inverse de l'angle de départ des grand arcs ou comme je te l'ai expliqué plus haut, tu prend le même (15°) mais tu met le rayon en négatif :wink:

    Sans titre-1.jpg

    ++
    David
     
  12. dh42

    dh42 Compagnon

    Messages:
    3 975
    Inscrit:
    4 Septembre 2009
    Localité:
    Près de St Etienne (42)
    Oblong circulaire
    Lol, et bien si ça fait ce qui est prévu c'est que c'est bon ! .. a toi de le tester ton code :wink: il te suffit de le lancer et de voir ce qui se passe.

    Mais ce qui est sur c'est que ça ne peut pas marcher tel quel

    1) ton code est en dehors de la sub ; il doit se trouver entre sub main et end sub.

    2) une instruction If doit se terminer par un End if

    If .. condition then
    ...
    End if


    ou, si tu a 2 options possibles

    If .. condition then
    ...
    Else ' (sinon)
    ...
    End if


    Tu devrais réviser la syntaxe des mots clef du VB :wink:
    https://msdn.microsoft.com/fr-fr/library/dd409611.aspx

    et des fonctions internes à VB, tu en aura besoin bientôt (en plus des fonctions de windows et de celles de cb)
    https://msdn.microsoft.com/fr-fr/library/c157t28f.aspx

    Je ne sais plus ? .. tu n'a jamais programmé ou tu connais déjà un autre langage ? (même ancien)

    Si tu n'a jamais programmé, alors je pense que l'on prend le train en marche ; il vas falloir partir de 0 et commencer par apprendre les mots clef et les fonctions de bases de la programmation, ainsi que certaines notions incontournables comme les types de données (type de variables), les structures de données, et la manière de les mettre tout ça en œuvre et de les utiliser, sinon ça risque d'être incompréhensible pour toi dès que l'on vas commencer les choses un peu plus compliquées et tu vas de retrouver avec des messages d'erreur que tu ne comprendra pas non plus.

    ++
    David
     
  13. JLuc69

    JLuc69 Compagnon

    Messages:
    1 151
    Inscrit:
    19 Juin 2008
    Localité:
    Genas (69)
    Oblong circulaire
    Je m'inscris en faut :mrgreen:
    les deux rayons du bout conserves un angle de 180 degrés, quel que soit l'angle de départ ou l'angle d'ouverture :axe:
    :smt033
     
  14. dh42

    dh42 Compagnon

    Messages:
    3 975
    Inscrit:
    4 Septembre 2009
    Localité:
    Près de St Etienne (42)
    Oblong circulaire
    Non, regarde le fichier CB (message #18), sélectionne le petit arc (de droite) et regarde les valeurs pour Angle de départ. C'est l'angle à décrire qui est tj de 180°

    L'angle de départ n'est pas relatif à l'angle de fin du grand arc, c'est un angle en absolu (00 à 3h00) sur l'image il démarre à 195° et tourne de 180°

    les angles sous CB

    [​IMG]


    ++
    David
     
    Dernière édition: 19 Janvier 2016
  15. JLuc69

    JLuc69 Compagnon

    Messages:
    1 151
    Inscrit:
    19 Juin 2008
    Localité:
    Genas (69)
    Oblong circulaire
    Je disais ça par rapport au dessin où tu as mis un angle de 195°....
    Ah oui, maintenant que je reregarde, je comprends mieux ce que tu as voulu dire :p
    Ca m'apprendra, à lire en diagonale...
     
Chargement...
Articles en relation
  1. elieheloua
    Réponses:
    4
    Affichages:
    830

Partager cette page