sechanbask Posté(e) le 28 octobre 2007 Posté(e) le 28 octobre 2007 oui oui, je me suis trompé c'est bien RND et par RDN ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
mdsv31 Posté(e) le 29 octobre 2007 Posté(e) le 29 octobre 2007 Bon voici un code avec tirage au sort de la carte gagnant et inscription des donner dans la polyligne en xdata Declaration des variables 'definition des variables pour les 3 cartes (le 0 compte aussi) Dim carte(2) As AcadLWPolyline 'definition des points nécesssaires à la polyligne 4 sommets avec x et y pour chacun soit 8 valeurs en double précision Dim pt(0 To 15) As Double 'definition de la variable pour la largeur Dim largeur As Double ' definition de la variable pour la hauteur Dim hauteur As Double ' definition d' une varariable entier pour une boucle Dim fois As Integer ' definition d' une varariable entier pour l 'écart séparant 2 cartes Dim dep As Double ' definition d'une variable pour le chanfrein de la carte Dim ray As Double ' definition de la carte gagnante Dim tirage As Integer ' definition des reference xdata Dim datatype(0 To 1) As Integer Dim data(0 To 1) As Variant Fonction de tirage au sort Public Function tirage_au_sort(upperbound, lowerbound) Randomize tirage_au_sort = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) End Function Fonction de convertion d'angle degre en radian Public Function DenR(angle) DenR = (angle * 3.14159265358979) / 180 End Function Et enfin le code du programme Public Sub bonneteau_1() 'valoriser les 3 paramètres de dimension et placement largeur = InputBox("Quelle est la largeur de la carte") hauteur = largeur * 2 dep = largeur * 2 ray = largeur * 0.1 tirage = tirage_au_sort(3, 1) 'création des cartes avec une boucle '3 tours For fois = 0 To 2 'point d' origine au tour suivant le placement du point d 'origine est augmenté de la variable de placement pt(0) = 0 + (dep * fois) + ray: pt(1) = 0 pt(2) = pt(0) + largeur - 2 * ray: pt(3) = pt(1) pt(4) = pt(2) + ray: pt(5) = pt(3) + ray pt(6) = pt(4): pt(7) = pt(3) + hauteur - ray pt(8) = pt(2): pt(9) = pt(3) + hauteur pt(10) = pt(0): pt(11) = pt(9) pt(12) = pt(0) - ray: pt(13) = pt(7) pt(14) = pt(12): pt(15) = pt(1) + ray 'creation de la carte proprement dit avec une polyligne 2d Set carte(fois) = ThisDrawing.ModelSpace.AddLightWeightPolyline(pt) 'propriété qui permet de fermer la polyligne sur son premier point carte(fois).Closed = True 'propriété qui permet d'avoir des coins arrondis For fois2 = 1 To 7 Step 2 carte(fois).SetBulge fois2, Tan(DenR(22.5)) Next fois2 Select Case tirage Case fois datatype(0) = 1001: data(0) = "jeu de carte" datatype(1) = 1002: data(1) = "gagner" Case Else datatype(0) = 1001: data(0) = "Jeu de carte" datatype(1) = 1002: data(1) = "Perdu" End Select carte(fois).SetXData datatype, data Next fois ThisDrawing.Application.ZoomExtents End Sub Bon je vous laisse chercher un peu pour trouver une methode pour selectionner la carte. @+MDSV31 PS: Je n'est toujours pas mis de symbole pour les cartes [Edité le 29/10/2007 par mdsv31] Dessinateur Indépendant
nazemrap Posté(e) le 29 octobre 2007 Auteur Posté(e) le 29 octobre 2007 Bonsoir, Bon,c 'est bien tout ça.J ai fait l 'as de coeur, mais je ne sais pas si je dois reposter tout le code ???Pour l 'instant il s' agit de le tracer avec les arcs et hachure "solid" rouge, je pense qu 'il faudra envisager la création d 'un bloc qui sera plus facile à réutiliser.On verra demain. A plus
mdsv31 Posté(e) le 29 octobre 2007 Posté(e) le 29 octobre 2007 Non, on n'est pas obligé de retaper tout le code, on peut faire des sous-programmes ou des fonction que l'on appelle selon le resultat. @+MDSV31 Dessinateur Indépendant
nazemrap Posté(e) le 30 octobre 2007 Auteur Posté(e) le 30 octobre 2007 Bonjour, Voici le sous-programme pour un as de coeur, qui devra être sans doute amélioré, mais il montre l 'utilisation de divers commandes de tracés de base. Il faudra le mettre en bloc.Il devra servir pour créer l 'as de pique, en le retournant et en ajoutant un "pied".Le "pied" est obtenu en inversant 2 arcs du coeur.L' as de trèfle utilisera 3 as de coeur et le même pied que l 'as de pique avec éventuellement des échelles différentes. Public Sub coeur() '----------------------- ' definition du point de centre de la carte Dim centre_carte(0 To 2) As Double 'definition de la position du symbole de la carte Dim pos_symbole(0 To 2) As Double 'definition de 4 arcs pour l 'as de coeur Dim arc(3) As AcadArc 'definition as de coeur comme région Dim as_de_coeur As AcadRegion 'definition des éléments necessaires à as de coeur 'liste d'entités qui composent le symbole coeur Dim liste_obj(3) As AcadEntity 'définition de la variable qui recevra la région Dim region As Variant 'définition des variables nécessaires à la hachure du symbole Dim hachure As AcadHatch Dim nom_motif As String Dim hachure_type As Long Dim associatif As Boolean Dim contour_hachure(0) As AcadEntity '----------------------- 'centre de la carte 'permettra les positionnements centre_carte(0) = pt(0) + (largeur / 2) - ray centre_carte(1) = hauteur / 2 centre_carte(2) = 0 'positionne le symbole par rapport au centre 'conforme aux tracés géométriques préconisés, mais à modifier suivant besoins 'cela permettra de changer le point de base si on fait tout un jeu un jour 'position en X pos_symbole(0) = centre_carte(0) - (ray / 2) 'position en Y pos_symbole(1) = centre_carte(1) + (ray) 'on reste sur le plan à 0 pos_symbole(2) = 0 'traçage de arc1 supérieur gauche en reprenant le rayon défini pour l'arrondi et économiser les variables 'ceci est complètement arbitraire, à vous d 'innover sur ce point. 'on réutilise ici la fonction de MDSV31 pour la conversion degrés vers radians Set arc(0) = ThisDrawing.ModelSpace.AddArc(pos_symbole, ray, DenR(60), DenR(180)) 'miroir pour arc1 en symétrie avec 2 points Set arc(1) = arc(0).Mirror(arc(0).StartPoint, centre_carte) 'traçage de arc3 inférieur gauche car je dispose maintenant du point final de 'arc1 qui devient le centre de arc3 Set arc(3) = ThisDrawing.ModelSpace.AddArc(arc(0).EndPoint, (3 * ray), DenR(300), DenR(360)) 'miroir pour arc2 en symétrie avec 2 points Set arc(2) = arc(3).Mirror(arc(0).StartPoint, centre_carte) 'mettre les arcs dans la liste For fois2 = 0 To 3 Set liste_obj(fois2) = arc(fois2) Next 'la region dans la variable variant region = ThisDrawing.ModelSpace.AddRegion(liste_obj) 'recupération de la région qui est la première et 'la seule créée présente dans la variable region 'NB:il peut donc éventuellement y en avoir plusieurs Set as_de_coeur = region(0) as_de_coeur.color = acRed 'suppression des arcs inutiles maintenant For fois2 = 0 To 3 arc(fois2).Delete Next ' définition de la hachure nom_motif = "SOLID" hachure_type = acHatchPatternTypePreDefined associatif = True ' création de la hachure Set hachure = ThisDrawing.ModelSpace.AddHatch(hachure_type, nom_motif, associatif) Set contour_hachure(0) = as_de_coeur ' ajouter le contour et afficher la hachure hachure.AppendOuterLoop (contour_hachure) hachure.Evaluate hachure.color = acRed ThisDrawing.Regen True End Sub Le code d 'appel à rajouter dans la procédure principale, signalé ici entre les traits. 'propriété qui permet d'avoir des coins arrondis For fois2 = 1 To 7 Step 2 carte(fois).SetBulge fois2, Tan(DenR(22.5)) Next fois2 '------------------------------------------------------------------------------------------------- 'Appel création de symbole pour l 'instant le coeur sur la première carte If fois = 0 Then coeur '------------------------------------------------------------------------------------------------- Select Case tirage Case fois datatype(0) = 1001: data(0) = "jeu de carte" datatype(1) = 1002: data(1) = "GAGNE" Juste pour signaler que la suite se trouve dans la rubrique "progammer en s' amusant" [Edité le 7/2/2008 par nazemrap]
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant