Morgul Posté(e) le 9 janvier 2008 Posté(e) le 9 janvier 2008 Bonjour à tous, Voilà mon client m'impose une liste de calques à utiliser avec : Noms de calques, couleurs, types de traits Mais, mon client me donne des fichiers d'archives à remettre en conformité et là c'est galère car les sous-traitants ont fait n'importe quoi en changeant les couleurs des calques, ou en créant des calques qui ne sont pas prévus dans la liste ou en changeant le type de ligne. Je souhaite donc créer un lisp qui remettrait les couleurs et les types de lignes correctement suivant la liste imposée.Et lorsque le lisp rencontrerait un calque qui n'est pas de la liste il le renommerait en ajoutant le préfixe A_Purger_ au nom du calque en question. Ce qui serait top c'est que le lisp puisse lire la liste de calques depuis un fichier txt ou encore mieux depuis un fichier excel. Pouvez-vous me donner une piste pour démarrer ? Merci. Il n'y a pas d'homme cultivé, il n'y a que des hommes qui se cultivent. Maréchal Foch
bseb67 Posté(e) le 9 janvier 2008 Posté(e) le 9 janvier 2008 Salut morgul! Pour un fichier texte, voici un exemple simple:(setq VAR_LISTE_CALQUES '(("POPO" couleur geler activer ep_ligne ....) ("PAPA" couleur ....) )) Après tu fait simplement un load du fichier txt.Puis dans la suite de ton lisp tu fait une boucle sur la liste des calques du dessin. si (assoc nom_du_calque VAR_LISTE_CALQUES) te renvoie quelque chose tu traite le calque avec les paramètres, sinon, tu renommes le calque. Et voilà. a+ Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
(gile) Posté(e) le 9 janvier 2008 Posté(e) le 9 janvier 2008 Salut, Comme ton soucis est plutôt spécifique, je ne suis pas sûr qu'il soit intéressant de faire la liste de référence dans un fichier extérieur. Une liste dont les éléments seraient des listes d'association semblables à celle retournées par tblsearch, définie à l'intérieur du LISP permettrait un code pus léger et une exécution plus rapide. Ensuite récupérer la liste des noms de calques du dessin.Pour chaque calque, faire la liste entget du calque avec (entget (tblobjnme ...)) et, si le nom du calque est présent dans la liste de référence comparer les propriétés et les modifier au besoin avec entmod. Si le nom du calque n'est pas présent dans la liste de référence, si des caractéristiques permettent de l'associer à un calque de la liste de référence, modifier le calque s'il n'existe pas, sinon transférer les entités et purger.Mais dans ce cas il est probable qu'il ne soit pas possible de faire de modification sans l'intervention de l'utilisateur. [Edité le 9/1/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Morgul Posté(e) le 9 janvier 2008 Auteur Posté(e) le 9 janvier 2008 Merci à vous deux, Effectivement le but est de faire un truc assez simple et efficace.Donc, je vais peut-être oublier le fichier externe. Mais, le problème n'est pas de savoir si le calque est présent dans la liste, cela devrait être assez simple, mais c'est pour le reste faut-il que je fasse des cond ? Je sais pas trop ...Car la liste est longue, et il y a donc beaucoup de nom et beaucoup de couleurs associées, par contre pour les types de traits ça va il n'y en a pas trop. Merci encore. Il n'y a pas d'homme cultivé, il n'y a que des hommes qui se cultivent. Maréchal Foch
capde06 Posté(e) le 10 janvier 2008 Posté(e) le 10 janvier 2008 as tu essayé les commandesnorme CAOetconvertisseur de calquesmoi j'utilise ça Vous fîtes ce que vous pûtes et vous m'épatâtes !!!!
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