Marc Blancher Posté(e) le 20 octobre 2005 Posté(e) le 20 octobre 2005 Voilà, je veux me créer une macro qui permet d'importer à partir d'excel, le nombre d'éléments ( polyligne2d, cercle et lignes), le linéaire total et la surface totale par calque. http://marcblancher.site.voila.fr/met_calques.zip J'ai commencer à travailler dessus, mais le problème est que l'algorithme que j'utilise est pas terrible donc lorsque le fichier prend de la taille ça devient vite impossible à gérer. Je compter m'y prendre de cette manière : " Pour chaque élément dans le calque xxx si élément = (poly, cercle ou ligne) alors aire = aire + element.area ..... finsi malheureusement je n'arrive pas a seléctionner les objet par calque ce qui fait que j'utilise cette métode : pour le calque xxxx pour chaque élément si élément appartient à calque xxxx si element = poly, cercle, ligne aire ..... finsi finsi finpourfinpour ce qui fait que je passe en revu chaque élément autant de fois qu'il y a de calques. d'ou la lourdeur de ce système. si vous avez des propositions
Marc Blancher Posté(e) le 20 octobre 2005 Auteur Posté(e) le 20 octobre 2005 Bon, j'ai retravaillé le fichier, il y a deux macros qui font le même boulot mais pas de la même façon, la version final me semble pas mal, si quelqu'un a le temps de la tester, ça serait sympa. A+
Marc Blancher Posté(e) le 20 octobre 2005 Auteur Posté(e) le 20 octobre 2005 j'y ai ajouter les arcs de cercles et les lignes qui ne sont comptés qu'en longueur. A+
Marc Blancher Posté(e) le 21 octobre 2005 Auteur Posté(e) le 21 octobre 2005 J'y ai ajoutés une 3ème macros qui classe les éléments par type ( ligne, cercle, arc, poly ouverte, poly fermée) beaucoup plus pratique à utliser et à exploiter ça prend un peu de temps pour des fichiers volumineaux mais ça travail sans pb. A+
Marc Blancher Posté(e) le 26 octobre 2005 Auteur Posté(e) le 26 octobre 2005 Nouvelle mise à jour :exclam: maintenant que je suis lancé :o j'y ais revu la macro calques, elle buggait lorsque le nom de calque était un chiffre, un coup de cstr et c'est reparti. Sinon j'ay ait ajouté 2 autres ( enfin c'est encore des modif de l'extraction d'attributs, il en faut des bricoleurs :cool: ) la macro blocs, liste les blocs dans le dessin avec les coordonnées et les attributs éventuels la macro attributs liste les blocs contenant des attributs. Bon ben j'espère avoir un avis dessus un jour quand même :casstet: A+
Marc Blancher Posté(e) le 19 novembre 2005 Auteur Posté(e) le 19 novembre 2005 Salut,un problème soulevé par un Cadxpien : comment faire pour avoir la longueur d'un spline ? Merci
blenner Posté(e) le 23 novembre 2005 Posté(e) le 23 novembre 2005 Salut,en lisp (defun c:lgspl () (setq CalqueTraite (cdr (assoc 8 (entget (car (entsel "\nChoix du calque :")))))) ;la variable "dec", est la précision du fichier actuel (setq dec (getvar "luprec")) ;initialisation de la longueur (setq longueur 0) (setq surface 0) ;création d'un jeu de sélection des polylignes(lw) sur le calque choisi (setq jeusel (ssget "X" (list (cons 0 "SPLINE") (cons 8 CalqueTraite)) ) ) ;initialisation du compteur d'entité (setq n 0) ;combien y a t'il d'entité dans le jeu de sélection (setq lonsel (sslength jeusel)) ; à faire autant de fois qu'il y a d'entité dans le jeu de sélection (repeat lonsel (setq ent (ssname jeusel n)) (command "aire" "ob" ent) (setq longueurtempo (getvar "perimeter")) (setq airetempo (getvar "area")) (setq longueur (+ longueur longueurtempo)) (setq surface (+ surface airetempo)) (setq n (+ 1 n)) ) ;affichage d'un message annonçant le résultat (alert (strcat "Le cumul des longueurs des SPLINE du Calque : " calquetraite "\nest de : " (rtos longueur 2 dec) "\nLa surface des SPLINE du Calque : " calquetraite "\nest de : " (rtos surface 2 dec)) ) (princ) ) mais comment faire en vba?Merci
Angelik Posté(e) le 17 juillet 2007 Posté(e) le 17 juillet 2007 Serais-ce possible de le ré-héberger car le lien en fonctionne plus!!!Merci d'avance!
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