Aller au contenu

automatiser les hachures suivant valeur attribut


Messages recommandés

Posté(e)

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?

 

merci

dan

 

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

effectivement je suis vraiment vraiment debutant en programmation :( ....mais ca doit etre super utile de s'y connaitre !!!!!!!!!

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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.

  • 2 mois après...
Posté(e)

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.

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité