arcuce Posté(e) le 26 mai 2009 Posté(e) le 26 mai 2009 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 etrangeresdonc 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
Zeks Posté(e) le 26 mai 2009 Posté(e) le 26 mai 2009 Utilise les jeux de sélections.Dans l'aide il y a un exemple.Si tu veux plus d'explication n'hésite pas.
arcuce Posté(e) le 26 mai 2009 Auteur Posté(e) le 26 mai 2009 merci je vais essayer ca sur le champ [Edité le 26/5/2009 par arcuce]
arcuce Posté(e) le 26 mai 2009 Auteur Posté(e) le 26 mai 2009 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.CountEnd Sub il me renvoi 0 alor que jen ai un certain nombre en tous cas superrieur a 0sans les filtre sa fonctionne donc je pense que sa vien de la mais bon jai toussinonpour lire un item dans mon jeu je fait jeuDeSelection.Item(0).ObjectNamemais 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]
sechanbask Posté(e) le 26 mai 2009 Posté(e) le 26 mai 2009 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 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
Zeks Posté(e) le 27 mai 2009 Posté(e) le 27 mai 2009 jeuDeSelection.Item(0).ObjectNamemais 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é.
arcuce Posté(e) le 27 mai 2009 Auteur Posté(e) le 27 mai 2009 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]
bazoul Posté(e) le 3 juin 2009 Posté(e) le 3 juin 2009 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]
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