Cadiste Posté(e) le 10 septembre 2015 Posté(e) le 10 septembre 2015 Bonjour, Malgré mes recherches, je ne parviens pas à trouver mes réponses. Je souhaiterai renseigner automatiquement des attributs X et Y de blocs depuis les propriétés de l'objet, puisqu'Autocad le renseigne automatiquement. Par exemple, j'ai un bloc bouche à clé avec des attributs(COMMUNE, ADRESSE, DIAMETRE....X, Y..) et je souhaiterai renseigner ces champs X et Y en une manipulation sans passer par le copier coller depuis Position X et Position Y disponible dans la géométrie de l'objet. Est ce que qqn saurait comment faire svp? Je mets une illustration pour que se soit plus clair. Citer
daemge Posté(e) le 10 septembre 2015 Posté(e) le 10 septembre 2015 Bonjour, Malgré mes recherches, je ne parviens pas à trouver mes réponses. Je souhaiterai renseigner automatiquement des attributs X et Y de blocs depuis les propriétés de l'objet, puisqu'Autocad le renseigne automatiquement. Par exemple, j'ai un bloc bouche à clé avec des attributs(COMMUNE, ADRESSE, DIAMETRE....X, Y..) et je souhaiterai renseigner ces champs X et Y en une manipulation sans passer par le copier coller depuis Position X et Position Y disponible dans la géométrie de l'objet. Est ce que qqn saurait comment faire svp? Je mets une illustration pour que se soit plus clair.Bonjourd'après ce que j'ai compris,là ou tu veux le texte tu fais un clic droit insérer un champs.catégories de champs, tu choisis objet. tu cliques sur choix objet, tu sélectionnes ton bloc, puis dans propriétés tu choisis position, et à droite tu peux cocher ou décocher la position x y ou z au choix+++ si tu veux utiliser l'attribut, tu choisis toujours objet et tu cliques sur ton attribut et dans proprietés tu choisis "valeur" Citer
Cadiste Posté(e) le 10 septembre 2015 Auteur Posté(e) le 10 septembre 2015 Merci pour la réponse mais je n'ai pas 'insérer un champ' avec le clic droit, je souhaite juste remplir les champs X et Y automatiquement en fait (en bleu dans l'image) Citer
daemge Posté(e) le 10 septembre 2015 Posté(e) le 10 septembre 2015 Merci pour la réponse mais je n'ai pas 'insérer un champ' avec le clic droit, je souhaite juste remplir les champs X et Y automatiquement en fait (en bleu dans l'image)de quelle image parles tu ? Citer
Cadiste Posté(e) le 10 septembre 2015 Auteur Posté(e) le 10 septembre 2015 j'avais mis une image ...grrrr je ne parviens pas à la mettre Citer
Cadiste Posté(e) le 10 septembre 2015 Auteur Posté(e) le 10 septembre 2015 c'est pas mon image, j'espère que cela va marcher, c'est comme si j'avais des attributs sous la partie 'Avancé' et je souhaite le remplir avec le champ Position Xhttp://exchange.autodesk.com/autocadarchitecture/fra/online-help/ARCHDESK/2012/FRA/attachments/detail_components_cmu_property_palette_design_tab.png Citer
daemge Posté(e) le 10 septembre 2015 Posté(e) le 10 septembre 2015 je suis pas sur de bien comprendre, à part passer par les champs je ne vois pas. tu peux faire passer un dwg et je regarde Citer
Cadiste Posté(e) le 10 septembre 2015 Auteur Posté(e) le 10 septembre 2015 je t'ai envoyé un MP Citer
Cadiste Posté(e) le 10 septembre 2015 Auteur Posté(e) le 10 septembre 2015 ça devrait être mieux làRenseigneAttributs.zip Citer
Cadiste Posté(e) le 10 septembre 2015 Auteur Posté(e) le 10 septembre 2015 voici la première image Citer
daemge Posté(e) le 10 septembre 2015 Posté(e) le 10 septembre 2015 ça devrait être mieux làRenseigneAttributs_champs.zip Citer
bonuscad Posté(e) le 10 septembre 2015 Posté(e) le 10 septembre 2015 Bonjour, En m'appuyant sur l'extrait de dessin joint, ceci devrait faire l'affaire... ((lambda ( / js ent pt) (setq js (ssget '((0 . "INSERT") (2 . "AEP_VENTOUSE") (8 . "AEP_VENTOUSE")))) (repeat (setq n (sslength js)) (setq ent (ssname js (setq n (1- n))) pt (cdr (assoc 10 (entget ent))) ) (ade_odsetfield ent "EQUIPEMENT" "X" 0 (car pt)) (ade_odsetfield ent "EQUIPEMENT" "Y" 0 (cadr pt)) ) )) A copier-coller directement en ligne de commande de ton dessin. Citer Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Cadiste Posté(e) le 11 septembre 2015 Auteur Posté(e) le 11 septembre 2015 Super !!! Ça marche .... Merci beaucoup !! En effet ça va plus vite ... ;-) Le code est programmé pour un bloc précis, je ferais la modif pour le lancer sur les autres blocs ... Merci beaucoup pour votre aide, je vais pouvoir me lancer dedans .. ;-) Merci Citer
lili2006 Posté(e) le 12 septembre 2015 Posté(e) le 12 septembre 2015 Bonjour à toutes et tous, Dans ta palette des propriétés il ne s'agit pas de renseignement d'attributs de bloc mais de Données d'Objet (OD). Ici la clé primaire est "IDEQUIPEMENT". il te faut alors un MAP est la base de données correspondantes,.. Citer Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
CT_Ko Posté(e) le 9 janvier Posté(e) le 9 janvier Le 10/09/2015 à 23:14, bonuscad a dit : En m'appuyant sur l'extrait de dessin joint, ceci devrait faire l'affaire... ((lambda ( / js ent pt) (setq js (ssget '((0 . "INSERT") (2 . "AEP_VENTOUSE") (8 . "AEP_VENTOUSE")))) (repeat (setq n (sslength js)) (setq ent (ssname js (setq n (1- n))) pt (cdr (assoc 10 (entget ent))) ) (ade_odsetfield ent "EQUIPEMENT" "X" 0 (car pt)) (ade_odsetfield ent "EQUIPEMENT" "Y" 0 (cadr pt)) ) )) A copier-coller directement en ligne de commande de ton dessin. Hello Bonuscad J'ai réussi à appliquer ta formule sur certains de mes blocs mais pas sur d'autres... je n'arrive pas à déchiffrer tes lignes de code et à appliquer ça sur certains blocs. J'aurai aimé pouvoir en plus de mes X et Y compléter les Z également mais je ne connait pas le langage de programmation! Est ce que tu pourrais me faire une "traduction" que je remplisse ça ensuite de moi même ? J'ai réussi à remplir ma ligne OD "Z" mais pas avec les données du champs "Z" correspondant à l'alti de mon bloc dans le dessin... "car" pour "X", "cadr" pour "Y" mais je ne sais pas quoi mettre pour avoir le "Z". En espérant pouvoir rapidement avoir tes réponses! A bientôt et merci d'avance! Citer
Luna Posté(e) le 9 janvier Posté(e) le 9 janvier Coucou @CT_Ko, Le Z correspond ici à (caddr) ou bien (last). Pour l'explication (car) récupère le premier élément d'une liste et (cdr) renvoie la liste sans le premier élément. Par exemple (setq pt '(12.5 16.8 11.7)) (car pt) -> 12.5 (cdr pt) -> (16.8 11.7) On peut ensuite combiner ces deux fonctions (jusqu'à 4 combinaisons max) en utilisant le 'a' pour (car) et le 'd' pour (cdr). Les caractères 'c' et 'r' respectivement au début et la fin restent inchangés et uniques : (cadr) -> (car) + (cdr) : Donc le premier élément de la liste sans le premier élément (= le second élément) (cdar) -> (cdr) + (car) : Donc la liste sans le premier élément du premier élément de la liste (= si le premier élément est une liste, alors retourne cette liste sans le premier élément de celle-ci, sinon retourne rien) (caddr) -> (car) + (cdr) + (cdr) : Donc le premier élément de la liste sans le premier élément de la liste sans le premier élément (= le troisième élément) (cddddr) -> (cdr) + (cdr) + (cdr) + (cdr) : Donc la liste sans les 4 premiers éléments ... L'ordre des lettres est important donc. Mais pour ce qui te concerne : (car) -> Premier élément de la liste des coordonnées d'un point (= X) (cadr) -> Second élément de la liste des coordonnées d'un point (= Y) (caddr) -> Troisième élément de la liste des coordonnées d'un point (= Z) (last) -> Dernier élément de la liste des coordonnées d'un point (= Z si coordonnées 3D, Y si coordonnées 2D) Comme ta liste représente ici un point 3D, tu as 3 éléments uniquement dans la liste, c'est pourquoi (caddr) ET (last) renvoient toutes deux le même résultat En espérant que cela aura pu t'aider 🙂 Bisous, Luna 1 Citer
CT_Ko Posté(e) le 10 janvier Posté(e) le 10 janvier Hello Luna! Mille mercis c'est limpide grâce à tes explications! Je suis complètement novice dans le langage LISP mais ça a l'air d'être un langage incontournable sous Autocad (surtout quand on doit traiter des plans énormes)! As-tu des tutos ou bien des sites qui me permettraient d'accéder à cette compétence?! Encore un grand merci tu m'épargnes un copié-collé sur 5238 éléments!! Avec toute ma reconnaissance! Korentin Citer
Luna Posté(e) le 10 janvier Posté(e) le 10 janvier Coucou, Je te conseille de consulter ces 2 sites francophones qui sont très bien fait et très intéressant : • https://www.da-code.fr/ par Didier • https://programmation.developpez.com/tutoriels/autolisp/introduction-autolisp/ par Gilles Chanteau Déjà avec chat tu pourras beaucoup apprendre ! Ensuite, rien de mieux que d'ouvrir un AutoCAD, l'aide AutoCAD également et de tester les fonctions que tu apprends au fur et à mesure. Toujours y aller étape par étape, à la vitesse qui te convient et éviter de voir trop gros dès le début 😉 Bisous, Luna 1 Citer
bonuscad Posté(e) le 12 janvier Posté(e) le 12 janvier Merci @Luna, je rajouterais juste un lien (en Anglais) sur les fonctions lisp exclusives à map3D pour @CT_Ko Ça peut toujours servir... https://documentation.help/AutoCAD-Map-3D-2009-AutoLISP/ade_function_catalog.htm Citer Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
CT_Ko Posté(e) le 15 janvier Posté(e) le 15 janvier Merci pour ton aide également Bonuscad, je ne manquerai pas d'aller consulter ta doc! Citer
Messages recommandés