danb Posté(e) le 23 juin 2006 Posté(e) le 23 juin 2006 Bonjour J'ai une polyligne qui represente un bureau.pour chaque polyligne j'insere un bloc "Donnees" constitué uniquement d'attributs tel que: "N° de bureau, superficie, service occupant.....)Les hachures ne font pas parties du blocs.Dans ce cas la superficie est lié a la polyligne (insertion d'un champ) .qd je modifie ma polyligne la superficie s'actualise automatiquement. Mon but:Creer automatiquement des hachures d'une certaine couleur en fonction de la valeur de l'attribut SERVICE_OCCUPANT ou changer la couleur si la hachure existe par exemple:si SERVICE_OCCUPANT= DRH alors il se creer automatiquement des hachure rouge qd les hachure n'existe pas ET si elle existe il n'y a qu'a changer la couleur. qq'un peut il m'aider? mercidan
Tramber Posté(e) le 23 juin 2006 Posté(e) le 23 juin 2006 Tu as déjà posé la question dans un forum. Ta demande est de trop haut niveau car je pense qu'il faut utiliser les réactuers et il te faut une base en programmation d'AutoCAD. Est-ce le cas ? Maintenant, je peux me tromper... Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
danb Posté(e) le 23 juin 2006 Auteur Posté(e) le 23 juin 2006 effectivement je suis vraiment vraiment debutant en programmation :( ....mais ca doit etre super utile de s'y connaitre !!!!!!!!!
Patrick_35 Posté(e) le 23 juin 2006 Posté(e) le 23 juin 2006 La preuve ;)Mais rien n'interdit à ce que tu commences et de poser des questions avec pour objectif ce que tu veux faire. Et je pense que tu auras sur ce site plus de réponse en vlisp et autolisp qu'en vba, d'autant qu'à ma connaissance, les réacteurs son manipulable en vlisp et non en vba @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
winfield Posté(e) le 23 juin 2006 Posté(e) le 23 juin 2006 J'ai beaucoup cherché à manipuler les reactors en vba sans trouver. les réacteurs son manipulable en vlisp et non en vba effectivement, c'est vrai.par contre VBA possède un truc du genre qui sont " les évènements"...je suis loin de maitriser ces derniers mais j'y travaille.Je pense qu'on peux dire que les évènements du vb/vba sont l'équivalance des reactors du VLisp.En espérant de ne pas avoir dit trop de bêtises : bonne soirée Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.
phil_vsd Posté(e) le 29 août 2006 Posté(e) le 29 août 2006 Bonjour, Une première partie de ta réponse serai d'hachurer la polyligne "en fonction" d'une propriété AVEC DES "IF" et des "THEN" mais cela incluerai de montrer par clik l'objet déterminant à savoir ta valeur d'attribut. Si tes polyligne sont sur un calque précis, DRH ou COMPTA, tu peux hachurer en fonction du calque. Je te propose une routine pour insérer des hachure dans un objet sélectionné : Public Sub HachurePicking() start: On Error GoTo scape Dim returnObjH As AcadObject 'C'est l'objet piqué par sélection ' Tableau d'entité qui sera passé à la méthode AppendOuterLoop ' de l'objet hachures Dim Frontiere(0 To 0) As AcadEntity ' Objet hachures Dim ObjetHachures As AcadHatch ' Pour piquer l'objet **** ThisDrawing.Utility.GetEntity returnObjH, basePnt, "Sélectionnez un objet SVP" ' On place la polyligne dans le tableau d'entités AutoCAD Dim ObjetFrontiere(0 To 0) As AcadEntity Set ObjetFrontiere(0) = returnObjH ' On crée la hachure dans le calque précis, mais avant on sauvegarde le calque courant Dim currLayer As AcadLayer Dim newLayer As AcadLayer Set currLayer = ThisDrawing.ActiveLayer 'sauvegarde le calque courant Set newLayer = ThisDrawing.Layers.Add("Hachures Jardin") 'Ajoute ou passe dans le calque concernant la hachure ThisDrawing.ActiveLayer = newLayer Set ObjetHachures = ThisDrawing.ModelSpace.AddHatch(acHatchPatternTypePreDefined, "texture", False) 'La valeur false fait que la hachure n'est pas associative ' On défini la frontière de l'objet hachures ObjetHachures.AppendOuterLoop (ObjetFrontiere) ' On change l'échelle d'hachurage ObjetHachures.PatternScale = 1 ' On demande à AutoCAD de calculer les intersections des hachures ' et de la frontière ObjetHachures.Evaluate ' Retourne sur le calque d'avant l'insertion ThisDrawing.ActiveLayer = currLayer ' Zoom étendu (méthode de l'objet Application) ZoomExtents GoTo start scape: End Sub Cette routine doit être mixée avec celle-là : ' Récupère le nom du calque de l'objet choisi Calqueobjet = returnObj.Layer If Calqueobjet = "SHAB" Then GoTo alpha Else MsgBox "Ce n'est pas une Surface SHAB !", vbInformation, "Attention..." Dans ce cas, la petite routine indique que l'objet choisi ne fait pas partie des calques "SHAB" et déclenche un message d'erreur. Là où j'ai mis les 4* il y aura un embranchement, il faut bidouiller le tout pour dire un truc du style : If objetsélectionné appartient au calque COMPTA alors hachure = ANSI 131 If objetsélectionné appartient au calque DRH alors hachure = ANSI 132 etc... C'est peut être pas le meilleur moyen mais fait moi signe si t'arrive pas. phil_vsd@yahoo.fr "La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.
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