Oblong circulaire

  • Auteur de la discussion Klystron
  • Date de début
K

Klystron

Compagnon
Bonjour,
je viens d'installé visual basic 2010 ,
je découvre l'usine à gaz :-D.
j'ai juste fait un essai.
mais pour entrer dans le vif du sujet là c'est autre chose ...
je vais me procurer un bouquin sur vb 2010 .

( pour mémoire le dessin vient de Jluc69.)


Yves.

Capture (2).JPG
[div=none][arrow][/arrow][/div] Voir la pièce jointe WindowsApplication1.zip [div=none][arrow][/arrow][/div]
 
Dernière édition:
D

dh42

Compagnon
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
 
D

dh42

Compagnon
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
 
B

Bricoleurdudimanche

Nouveau
Bonjour,
demande à un ingénieur en informatique de te le faire .
Pierre.
 
D

dh42

Compagnon
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
 
D

dh42

Compagnon
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
 
D

dh42

Compagnon
Salut,

Pour avoir les deux arcs , je pense qu'il faudrait ajouté et retranché la valeur de la largeur divisée par deux , du rayon axe ?...

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)


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:
D

dh42

Compagnon
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)

tu m'as parler de 180 degres ? ...

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
 
D

dh42

Compagnon
donc l'angle de depart de l'autre coté doit faire 105 +15 =120 degrés ?
et 180 degres pour l'angle a décrire ?.
le rayon du petit arc a chaque extrémité est égale à ( larg/2).

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
 
D

dh42

Compagnon

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
 
J

JLuc69

Compagnon
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:

Voir la pièce jointe 259904

++
David
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
 
D

dh42

Compagnon
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

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

angle.jpg


++
David
 
Dernière édition:
J

JLuc69

Compagnon
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...
 
Haut