Aller au contenu

lister les polylignes d\'un calque


Messages recommandés

Posté(e)

Bonjour a tous je suis developpeur et on ma demander de faire une ptite aplly en vba dont le but est de controler sur un certain calque que toutes les polylignes soit fermer le probleme c'est que je debut dans la programmation autocad et les bibliotheque vba me sont totalement etrangeres

donc pour resumer y aurait il une fonction pour recuperer toute les polyligne d'un calque, pour le test si elle sont ouverte ou fermer sa c'est bon jai trouver

 

merci

Posté(e)

bon jai creer mon jeu de selection et jai attribuer les types et les filtres

 

Sub recupPolyligne()

Dim jeuDeSelection As AcadSelectionSet

Dim filtertype(2) As Integer

Dim filterdata(2) As Variant

filtertype(0) = 0

filterdata(0) = "LWPOLYLINE"

filtertype(1) = 0

filterdata(1) = "POLYLINE"

Set jeuDeSelection =ThisDrawing.SelectionSets.Add("RECUPPOLYLIGNE")

jeuDeSelection.Select acSelectionSetAll, , , filtertype, filterdata

MsgBox jeuDeSelection.Count

End Sub

 

il me renvoi 0 alor que jen ai un certain nombre en tous cas superrieur a 0

sans les filtre sa fonctionne donc je pense que sa vien de la mais bon jai tous

sinon

pour lire un item dans mon jeu je fait

 

jeuDeSelection.Item(0).ObjectName

mais comme je cree une liste je voudrai remplacer le 0 par un compteur chose assez facile dans les autre langages de programmation mais la un message d'erreur apparait si je fait

 

jeuDeSelection.Item(i).ObjectName ' i etant mon compteur donc un entier

 

il me dit donc "argument index incorecte dans item"

y a t il un type special de variable a metre dans item(ici)

 

 

 

[Edité le 26/5/2009 par arcuce]

Posté(e)

j'ai pas trouvé exactement le problème mais si tu utilises :

 

Sub recupPolyligne()
On Error GoTo 0
Dim jeuDeSelection As AcadSelectionSet
Dim filtertype(0) As Integer
Dim filterdata(0) As Variant
filtertype(0) = 0
filterdata(0) = "LWPOLYLINE"

Set jeuDeSelection = ThisDrawing.SelectionSets.Add("RE11C1UPPOLY1LIGNE")
jeuDeSelection.Select acSelectionSetAll, , , filtertype, filterdata
MsgBox jeuDeSelection.Count
End Sub

 

 

pour éviter les erreurs "-2145320851", je te conseille vivement d'uiliser une fonction pour te créer le nom de selection : réponse 5 :

 

http://www.cadxp.com/sujetXForum-22330.htm

 

ça marche très bien

 

bon courage pour le reste

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

 

jeuDeSelection.Item(0).ObjectName

mais comme je cree une liste je voudrai remplacer le 0 par un compteur chose assez facile dans les autre langages de programmation mais la un message d'erreur apparait si je fait

 

jeuDeSelection.Item(i).ObjectName ' i etant mon compteur donc un entier

 

il me dit donc "argument index incorecte dans item"

y a t il un type special de variable a metre dans item(ici)

 

Non il n'y a pas de type spécial.

Par contre je ne vois pas l'intérêt d'afficher le nom de l'objet.

Voici le code complété pour afficher par exemple le calque ou se trouve la polyligne.

 

 

 Sub recupPolyligne()

On Error GoTo 0

Dim jeuDeSelection As AcadSelectionSet

Dim filtertype(0) As Integer

Dim filterdata(0) As Variant

Dim i As Integer

filtertype(0) = 0

filterdata(0) = "LWPOLYLINE"



Set jeuDeSelection = ThisDrawing.SelectionSets.Add("SelectionSet")

jeuDeSelection.Select acSelectionSetAll, , , filtertype, filterdata

For i = 0 To jeuDeSelection.Count - 1

MsgBox jeuDeSelection.Item(i).Layer

Next

jeuDeSelection.Delete

End Sub

 

J'espère t'avoir aidé.

Posté(e)

merci pour vos reponces je m 'en suis sortie autrement et jai pue finir la partie la plus dure de mon logiciel

je n'ais pas appliquer de filtre sur la recuperation des items mais je les ai trié apres les avoir lister

 

[Edité le 27/5/2009 par arcuce]

Posté(e)

Dim filtertype(2) As Integer

Dim filterdata(2) As Variant

filtertype(0) = 0

filterdata(0) = "LWPOLYLINE"

filtertype(1) = 0

filterdata(1) = "POLYLINE"

[Edité le 26/5/2009 par arcuce]

 

Pas étonnant que ça ne marche pas,tu lui demande de sélectionner les élément qui sont a la fois des lwpolyline et des polyline ( implicitement il fait un ET! )...Pour que le jeu de sélection fonctionne:

 

Dim filtertype(3) As Integer
Dim filterdata(3) As Variant

filtertype(0)=-4 :filterdata(0) = "    filtertype(1) = 0: filterdata(1) = "LWPOLYLINE"
   filtertype(2) = 0: filterdata(2) = "POLYLINE"
filtertype(3)=-4 :filterdata(3) = "OR>

 

[Edité le 3/6/2009 par bazoul]

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é