Aller au contenu

Détecter les polylignes non fermées dans AutoCAD


Messages recommandés

Posté(e)

Bonjour le forum😀,

J’aurais besoin de vos lumières🤔.
J’ai le code VBA ci-dessous qui détecte les polylignes non fermées dans un dessin AutoCAD.
Le problème c’est qu’il le fait sur toutes les polylignes se trouvent dans tous les calques.

J’aimerais faire cette détection seulement dans un seul calque, le calque « Polygonale »

Est-possible ?

Merci d'avance

Sub PolylignesOuvertes()
 For Each ent In ThisDrawing.ModelSpace
  ent.color = acWhite
  If ent.ObjectName = "AcDbPolyline" Then
   If ent.Closed = False Then
    ent.color = acRed
   Else
    ent.color = acGreen
   End If
  End If
 Next ent
ThisDrawing.Regen (acActiveViewport)
End Sub

 

Posté(e)

Bonjour,

Je te remrcie pour ta réponse👍.

J'ai bien remplacé la ligne "If ent.ObjectName..." exemple ci-dessous.
Malheureusement dans VB la ligne est en rouge et un message avec "Erreur de syntaxe"

J'ai fait faux quelque chose ?🤔

 

Sub PolylignesOuvertes()
 For Each ent In ThisDrawing.ModelSpace
  ent.color = acWhite
  If ent.ObjectName = "AcDbPolyline" AndAlso ent.Layer = "Polygonale"
   If ent.Closed = False Then
    ent.color = acRed
   Else
    ent.color = acGreen
   End If
  End If
 Next ent
ThisDrawing.Regen (acActiveViewport)
End Sub

 

Posté(e)

Bonjour @nen

Je pense que ces lignes corrigées devraient résoudre ton souci.

Amicalement

Sub PolylignesOuvertes()
 For Each ent In ThisDrawing.ModelSpace
  ent.color = acWhite
  If ent.ObjectName = "AcDbPolyline" And ent.Layer = "Polygonale" Then
    If ent.Closed = False Then
    ent.color = acRed
   Else
    ent.color = acGreen
   End If
  End If
 Next ent
ThisDrawing.Regen (acActiveViewport)
End Sub

 

Posté(e)

Bonjour😀,

Je te remercie pour ton aide👍.
Le code fonctionne, il y a juste qu'il change la couleur (en blanc) d'autres polygonales des autres calques qu'il ne doit pas toucher.

Si c'est possible de corriger ?🤔

Meilleures salutations

Posté(e)

Bonjour @nen

Je suis content de t'avoir dépatouillé, mais pour la question que tu me poses en dernier, je ne sais pas quoi dire.
C'est dans ton code d'origine que la ligne qui change TOUTES les polylignes trouvées en couleur BLANC

ent.color = acWhite


Si tu ne veux pas de cette action, supprime-la ou mets-la en commentaire.

Amicalement

Posté(e)

Bonjour😀,

Je vous remercie pour aide, c'est exactement ça👍👌.
Je remercie à tous ceux mit leur contribution à la correction du code et à la résolution de ce poste👏

Meilleures salutations

Posté(e)

Bonjour @nen

Je me permets de te conseiller de commencer ton apprentissage avec des choses simples.
Le premier conseil n'est pas toujours agréable à entendre, mais je continue et je continuerai à le seriner.
Ne pas utiliser de copier-coller, taper les lignes de code permet de COMPRENDRE ce qu'on fait, Dans le cas présent, au moment de demander le changement des polylignes en couleur "blanc", au moment de la frappe, le souci (évident) aurait été détecté.

Amicalement

 

Posté(e)

touche F8 pour aller de pas a pas ou mettre un arret

un moment de l'erreur, il va mettre te dire le probleme et son numéro, il n'y aura qu'a corriger

et plus tard te va créer un gestionnaire d'erreur avec des logs et ca va aider ^^

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é