lecrabe Posté(e) le 3 novembre 2020 Partager Posté(e) le 3 novembre 2020 Hello J ai cherche dans mes 3001 routines et A PRIORI je n ai pas en stock ! Donc si qq'un a la routine, SVP je suis preneur ! ---- Description de la routine ---- 1) Question "Nom de l Attribut ? (Defaut = ROTATION) "2) Selection AutoCAD classique ...3) Ne retenir que les Blocs Statiques OU Dynamiques4) On boucle sur TOUS les Blocs5) Si Attribut ROTATION present !6) ALORS Changement de la rotation du Bloc concerne en fonction de la valeur numerique de l attribut( si valeur DEBILE alors ZERO ! Tant pis !! )( La valeur peut etre en degres ou grades )( SVP Programmer comme si c etait en DEGRES ! ) Si Grade je pourrais modifier la ligne de Lisp concernee ...7) On boucle sur le (4) ... 8) A la fin si possible: signaler le nombre de blocs traites ! Je peux le faire par une requete de MAP/CIVIL !Mais tout le monde n'a pas MAP/CIVIL !! Merci d'avance, LA SANTE, Bye, lecrabe... Deja 1 mois de retraite ... Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Curlygoth Posté(e) le 3 novembre 2020 Partager Posté(e) le 3 novembre 2020 VBA interdit ? Mon site Web (en cours de construction) : Site DA-CODE de @didier Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 3 novembre 2020 Auteur Partager Posté(e) le 3 novembre 2020 Hello Desole mais je desire du Lisp ou VLisp ! Neanmoins MERCI, LA SANTE, Bye, lecrabe Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Luna Posté(e) le 3 novembre 2020 Partager Posté(e) le 3 novembre 2020 Coucou, Juste une précision, lorsque tu demandes 3) Ne retenir que les Blocs Statiques OU Dynamiques cela signifie-t-il que le programme ne doit boucler que sur des blocs statiques ou bien que sur les blocs dynamiques en fonction d'un choix utilisateur ou bien c'est uniquement pour dire que l'ensemble des références de blocs doivent être prises en compte (dynamique et statique pris en compte ensemble) ? Autrement, je pourrais te fournir une solution dans la journée :3 Bisous,Luna Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 3 novembre 2020 Auteur Partager Posté(e) le 3 novembre 2020 Hello Cela signifie que la routine doit traiter l attribut VOULU (si present bien sur !) sur TOUS les Blocs selectionnes ! ... qu ils soient statiques ou dynamiques ... En fait il s agit de modifier le assoc 50 (= Rotation du Bloc en Radian)en fonction de la valeur de l attribut choisi ... MERCI d'avance, LA SANTE, Bye, lecrabe Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Luna Posté(e) le 3 novembre 2020 Partager Posté(e) le 3 novembre 2020 (modifié) Coucou, Cela te convient-il ? (defun c:ATTROT (/ ang-conv remove-double jsel i e name tag rot n lst) ; Supprime les doublons au sein d'une liste spécifiée en argument : ;--- La fonction (Remove-Double) possède 1 argument ;--- lst1 correspond à la liste devant être évaluée pour la suppression des doublons ;--- Renvoie la liste modifiée sans ses doublons (defun Remove-Double (lst1 / lst2) (while (car lst1) (setq Lst2 (cons (car lst1) lst2) Lst1 (vl-remove (car lst1) lst1) ) ) (reverse lst2) ) ; Permet de convertir les unités angulaires : ;--- La fonction (ang-conv) possède 3 arguments ;--- a correspond à l'angle que l'on souhaite convertir ;--- from correspond à l'unité angulaire de départ ; 0 - Degree ; 3 - Radian ; 2 - Grade ;--- to correspond à l'unité angulaire d'arrivée ; 0 - Degree ; 3 - Radian ; 2 - Grade ;--- Renvoie l'angle converti sous format numérique (defun ang-conv (a from to /) (cond ((and (= from 0) (= to 0)) (/ (* a 180.0) 180.0) ) ((and (= from 0) (= to 3)) (/ (* a pi) 180.0) ) ((and (= from 0) (= to 2)) (/ (* a 200.0) 180.0) ) ((and (= from 3) (= to 0)) (/ (* a 180.0) pi) ) ((and (= from 3) (= to 3)) (/ (* a pi) pi) ) ((and (= from 3) (= to 2)) (/ (* a 200.0) pi) ) ((and (= from 2) (= to 0)) (/ (* a 180.0) 200.0) ) ((and (= from 2) (= to 3)) (/ (* a pi) 200.0) ) ((and (= from 2) (= to 2)) (/ (* a 200.0) 200.0) ) ) ) (if (or (setq jsel (ssget '((0 . "INSERT")))) ; si pré-sélection ou sélection manuelle (setq jsel (ssget "_X" '((0 . "INSERT")))) ; si pas de sélection manuelle, alors prise en compte de la totalité des blocs ) (progn (setq n 0 i (sslength jsel) e i ) (if (= (setq tag (getstring "Veuillez spécifier le nom d'attribut pour la rotation <\"ROTATION\"> : ")) "") (setq tag "ROTATION") ) (repeat i (setq name (ssname jsel (setq i (1- i)))) (if (and (null (vl-catch-all-error-p (setq rot (vl-catch-all-apply 'getpropertyvalue (list name tag))))) (setq rot (ang-conv (atof rot) (getvar "AUNITS") 3)) (entmod (subst (cons 50 rot) (assoc 50 (entget name)) (entget name))) ) (setq n (1+ n) lst (cons (getpropertyvalue name "BlockTableRecord/Name") lst) ) (ssdel name jsel) ) ) (sssetfirst nil jsel) (foreach name (setq lst (vl-sort (remove-double lst) '<)) (command "_ATTSYNC" "N" name) ) (setq lst (apply 'strcat (mapcar '(lambda (str) (strcat "\n - " str)) lst))) (alert (strcat "\nUn total de " (itoa n) " / " (itoa e) " bloc(s) ont été redéfinis." "\nVoici la liste des blocs ayant un attribut nommé \"" tag "\" : " lst ) ) (prompt (strcat "\nUn total de " (itoa n) " / " (itoa e) " bloc(s) ont été redéfinis." "\nVoici la liste des blocs ayant un attribut nommé \"" tag "\" : " lst ) ) ) (prompt (strcat "\nAucun bloc présent dans ce fichier...")) ) (princ) ) Bisous, Luna Modifié le 18 novembre 2020 par lecrabe Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 3 novembre 2020 Auteur Partager Posté(e) le 3 novembre 2020 Hello Luna MERCI cela semble Tip-Top ! OK sur Blocs classiques ... A tester sur Blocs dynamiques !? ... MAIS j ai confiance !! Que La Sante, Le Bonheur, La Volupte, La Prosperite, etc, te submergent !! LA SANTE, Bye, lecrabe Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Luna Posté(e) le 3 novembre 2020 Partager Posté(e) le 3 novembre 2020 Coucou, Petite mise à jour par rapport à ton point n°1, ce qui permet de prendre en compte la pré-sélection et la sélection manuelle (en cas de sélection vide pour la pré-sélection ou la sélection manuelle, l'effectue sur l'ensemble des blocs du dessin).Après s'il faut supprimer le (ssget "_X") c'est tout à fait possible aussi.Normalement, il ne devrait pas y avoir de soucis pour les blocs dynamiques puisqu'on ne s'intéresse qu'à leur attribut donc il n'y a pas de filtre statique/dynamique. Faudra juste faire attention à la version de l'AutoCAD en raison de la fonction (getpropertyvalue) qui a été ajoutée assez récemment :3 Bisous, Luna Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 3 novembre 2020 Auteur Partager Posté(e) le 3 novembre 2020 Hello En fait j avais deja supprime le "_X" sur le ssget ! Sinon SVP ces 2 lignes nouvelles/modifiees >>> (if (or (setq jsel (ssget '((0 . "INSERT")))) ; si pré-sélection ou sélection manuelle (setq jsel (ssget "_X" '((0 . "INSERT")))) ; si pas de sélection manuelle, alors prise en compte de la totalité des blocs (getpropertyvalue) & (setpropertyvalue) ont ete ajoutes a la version 2012 (Pour la version Mac en fait !) ENCORE MERCI, LA SANTE, Bye, lecrabe Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Luna Posté(e) le 3 novembre 2020 Partager Posté(e) le 3 novembre 2020 Hello En fait j avais deja supprime le "_X" sur le ssget ! Sinon SVP ces 2 lignes nouvelles/modifiees >>> (if (or (setq jsel (ssget '((0 . "INSERT")))) ; si pré-sélection ou sélection manuelle (setq jsel (ssget "_X" '((0 . "INSERT")))) ; si pas de sélection manuelle, alors prise en compte de la totalité des blocs<<< sont elles bien les 2 SEULES Modifs que tu as faites ?? (getpropertyvalue) & (setpropertyvalue) ont ete ajoutes a la version 2012 (Pour la version Mac en fait !) ENCORE MERCI, LA SANTE, Bye, lecrabeVouih je n'ai rien modifié d'autre :3 Bisous, Luna Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 18 novembre 2020 Auteur Partager Posté(e) le 18 novembre 2020 Hello Luna Encore MERCI pour ta routine precedente ! SVP serait il possible d avoir la MEME routine pour forcer la couleur des blocs en fonction du contenu d un attribut ! Si Valeur = ZERO (ou mauvaise valeur alpha) ---> ZERO : DuBloc1-255 --> Forcer avec la couleur 1-255Si >= 256 --> 256 : DuCalque Donc modifier le code DXF 62 (Me semble t-il) ... ou en VLisp : vla-put-color ... MERCI d'avance, LA SANTE, Bye, lecrabe... Deja 49 jours de retraite ... Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Luna Posté(e) le 18 novembre 2020 Partager Posté(e) le 18 novembre 2020 (modifié) Coucou ! Vouih pas de soucis :3 (defun c:ATTCOL (/ remove-double jsel i e name tag color n lst) ; Supprime les doublons au sein d'une liste spécifiée en argument : ;--- La fonction (Remove-Double) possède 1 argument ;--- lst1 correspond à la liste devant être évaluée pour la suppression des doublons ;--- Renvoie la liste modifiée sans ses doublons (defun Remove-Double (lst1 / lst2) (while (car lst1) (setq Lst2 (cons (car lst1) lst2) Lst1 (vl-remove (car lst1) lst1) ) ) (reverse lst2) ) (if (or (setq jsel (ssget '((0 . "INSERT")))) ; si pré-sélection ou sélection manuelle (setq jsel (ssget "_X" '((0 . "INSERT")))) ; si pas de sélection manuelle, alors prise en compte de la totalité des blocs ) (progn (setq n 0 i (sslength jsel) e i ) (if (= (setq tag (getstring "Veuillez spécifier le nom d'attribut pour la couleur <\"COLOR\"> : ")) "") (setq tag "COLOR") ) (repeat i (setq name (ssname jsel (setq i (1- i)))) (if (and (null (vl-catch-all-error-p (setq color (vl-catch-all-apply 'getpropertyvalue (list name tag))))) (cond ((assoc 62 (entget name)) (entmod (subst (cons 62 (atoi color)) (assoc 62 (entget name)) (entget name))) ) ((not (assoc 62 (entget name))) (entmod (append (entget name) (list (cons 62 (atoi color))))) ) ) ) (setq n (1+ n) lst (cons (getpropertyvalue name "BlockTableRecord/Name") lst) ) (ssdel name jsel) ) ) (sssetfirst nil jsel) (setq lst (apply 'strcat (mapcar '(lambda (str) (strcat "\n - " str)) (vl-sort (remove-double lst) '<)))) (alert (strcat "\nUn total de " (itoa n) " / " (itoa e) " bloc(s) ont été redéfinis." "\nVoici la liste des blocs ayant un attribut nommé \"" tag "\" : " lst ) ) (prompt (strcat "\nUn total de " (itoa n) " / " (itoa e) " bloc(s) ont été redéfinis." "\nVoici la liste des blocs ayant un attribut nommé \"" tag "\" : " lst ) ) ) (prompt (strcat "\nAucun bloc présent dans ce fichier...")) ) (princ) ) Non testé en revanche...Et je ne sais pas si tu possèdes un attribut particulier pour cette information (= nom d'étiquette par défaut ?) donc j'ai pris "COLOR" par défaut. Et j'ai supposé que la valeur présente dans l'attribut correspond aux valeurs comprises entre 0-256 comme précisé. Bisous,Luna Modifié le 18 novembre 2020 par Luna Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 18 novembre 2020 Auteur Partager Posté(e) le 18 novembre 2020 Hello SNIFF ca ne marche pas ! Commande: ATTCOULBLOCSélectionner des objets: Spécifiez le coin opposé: 3 trouvé(s)Sélectionner des objets:Veuillez specifier le nom d'attribut pour la couleur : TAMPON_Z; erreur: type d'argument incorrect: fixnump: "1"Commande: LA SANTE, Bye, lecrabe Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Luna Posté(e) le 18 novembre 2020 Partager Posté(e) le 18 novembre 2020 Oh pardon, petite erreur de grammaire ^^" Corrigé normalement (jusqu'au prochain problème) :3 BisousLuna Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 18 novembre 2020 Auteur Partager Posté(e) le 18 novembre 2020 Hello MERCI c Tip-Top ! Bonne Soiree, LA SANTE, Bye, lecrabe Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
MASB Posté(e) le 2 mars 2021 Partager Posté(e) le 2 mars 2021 Bonjour,Je n'arrive pas à utiliser la fonction ang-conv pouvez-vous me dire comment faire. J'ai une petite question qui va dans la fonction de ce Lisp Je souhaiterai de manière automatique pouvoir faire les modifications suivantes (voir image jointe): la valeur ECHELLE_X = 0,366 issu d’un bloc (1) alimente la valeur Echelle X = 1,00 (1’) la valeur ECHELLE_Y = 0,366 issu d’un bloc (1) alimente la valeur Echelle Y = 1,00 (1’) la valeur TYPE = 200 (2) issu d’un bloc alimente la valeur Rotation = 146,0740g (2’) Pensez-vous pouvoir m'aider. Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
Luna Posté(e) le 2 mars 2021 Partager Posté(e) le 2 mars 2021 (modifié) Coucou, Premièrement merci ! Tu as posé ton problème de manière claire et concise avec toutes les infos nécessaires du premier coup, chat fait plaisir :3 Ensuite pour ton problème on peut revoir légèrement le code de ATTROT comme ci-dessous : (defun c:ATTSCL (/ ang-conv remove-double jsel i e name tag rot n lst) ; Supprime les doublons au sein d'une liste spécifiée en argument : ;--- La fonction (Remove-Double) possède 1 argument ;--- lst1 correspond à la liste devant être évaluée pour la suppression des doublons ;--- Renvoie la liste modifiée sans ses doublons (defun Remove-Double (lst1 / lst2) (while (car lst1) (setq Lst2 (cons (car lst1) lst2) Lst1 (vl-remove (car lst1) lst1) ) ) (reverse lst2) ) ; Permet de convertir les unités angulaires : ;--- La fonction (ang-conv) possède 3 arguments ;--- a correspond à l'angle que l'on souhaite convertir ;--- from correspond à l'unité angulaire de départ ; 0 - Degree ; 3 - Radian ; 2 - Grade ;--- to correspond à l'unité angulaire d'arrivée ; 0 - Degree ; 3 - Radian ; 2 - Grade ;--- Renvoie l'angle converti sous format numérique (defun ang-conv (a from to /) (cond ((and (= from 0) (= to 0)) (/ (* a 180.0) 180.0) ) ((and (= from 0) (= to 3)) (/ (* a pi) 180.0) ) ((and (= from 0) (= to 2)) (/ (* a 200.0) 180.0) ) ((and (= from 3) (= to 0)) (/ (* a 180.0) pi) ) ((and (= from 3) (= to 3)) (/ (* a pi) pi) ) ((and (= from 3) (= to 2)) (/ (* a 200.0) pi) ) ((and (= from 2) (= to 0)) (/ (* a 180.0) 200.0) ) ((and (= from 2) (= to 3)) (/ (* a pi) 200.0) ) ((and (= from 2) (= to 2)) (/ (* a 200.0) 200.0) ) ) ) (if (or (setq jsel (ssget '((0 . "INSERT")))) ; si pré-sélection ou sélection manuelle (setq jsel (ssget "_X" '((0 . "INSERT")))) ; si pas de sélection manuelle, alors prise en compte de la totalité des blocs ) (progn (setq n 0 i (sslength jsel) e i ) (setq tag '(("ECHELLE_X" 41) ("ECHELLE_Y" 42) ("TYPE" 50))) (repeat i (setq name (ssname jsel (setq i (1- i)))) (mapcar '(lambda (x / v) (if (and (null (vl-catch-all-error-p (setq v (vl-catch-all-apply 'getpropertyvalue (list name (car x)))))) (if (= (cadr x) 50) (setq v (ang-conv (atof v) (getvar "AUNITS") 3)) (setq v (atof v))) (entmod (subst (cons (cadr x) v) (assoc (cadr x) (entget name)) (entget name))) ) (setq n (1+ n) lst (cons (getpropertyvalue name "BlockTableRecord/Name") lst) ) (ssdel name jsel) ) ) tag ) ) (sssetfirst nil jsel) (foreach name (setq lst (vl-sort (remove-double lst) '<)) (command "_ATTSYNC" "N" name) ) (setq lst (apply 'strcat (mapcar '(lambda (str) (strcat "\n - " str)) lst))) (alert (strcat "\nUn total de " (itoa n) " / " (itoa e) " bloc(s) ont été redéfinis." "\nVoici la liste des blocs ayant les attributs nommés \"" (vl-string-right-trim "\", \"" (apply 'strcat (mapcar '(lambda (x) (strcat x "\", \"")) tag))) "\" : " lst ) ) (prompt (strcat "\nUn total de " (itoa n) " / " (itoa e) " bloc(s) ont été redéfinis." "\nVoici la liste des blocs ayant les attributs nommés \"" (vl-string-right-trim "\", \"" (apply 'strcat (mapcar '(lambda (x) (strcat x "\", \"")) tag))) "\" : " lst ) ) ) (prompt (strcat "\nAucun bloc présent dans ce fichier...")) ) (princ) ) Je ne l'ai pas testé, je te laisse essayer avec tes blocs et revient vers moi en cas de soucis ! Bisous,Luna Modifié le 2 mars 2021 par Luna Lien vers le commentaire Partager sur d’autres sites More sharing options...
Luna Posté(e) le 2 mars 2021 Partager Posté(e) le 2 mars 2021 désolée, j'ai été un peu vite en besogne donc le code était incomplet mais il est corrigé :3 Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 2 mars 2021 Auteur Partager Posté(e) le 2 mars 2021 Hello MASB Au fait quand le Lisp de "Luna" sera OK pour toi, SVP tu le publieras sur le site original de ta demande : georezo.net/forum - Forum Autodesk_SIG En reponse a ton sujet : https://georezo.net/forum/viewtopic.php?pid=340675 Ainsi le sujet sera "clos / resolu" : Merci d'avance ... La Sante, Bye, lecrabe "fatigue" Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
MASB Posté(e) le 2 mars 2021 Partager Posté(e) le 2 mars 2021 Merci pour ton aide, je viens d'essayer le lisp que tu as créé mais je n'ai pas réussi (cf image jointe) à récupérer les valeurs de 0.427 issu de ECHELLE_X et ECHELLE_Y respectivement dans echelle_x et echelle_y.Je n'ai pas réussi à récupérer la valeur de 97 dans rotation valeur à 100 Quant à ang-conv je n'ai pas le message qui permet de choisir l'unité de départ en grade et l'unité d'arrivée en grade, en fait je souhaite récupérer exactement la même valeur. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Luna Posté(e) le 2 mars 2021 Partager Posté(e) le 2 mars 2021 Vouih décidément je me suis levée du pied gauche ce matin >w<Il manquait une conversion (atof) de la valeur de l'attribut vers une valeur numérique. Si le nom de tes étiquettes correspond bien (j'ai testé cette fois-ci) cela devrait fonctionner. J'ai re-modifié le code ci-dessus. Bisous,Luna Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 2 mars 2021 Auteur Partager Posté(e) le 2 mars 2021 Hello Luna MERCI pour tes contributions ! Cette routine fonctionne aussi avec les Blocs dynamiques ? La Sante, Bye, lecrabe "fatigue" Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Luna Posté(e) le 2 mars 2021 Partager Posté(e) le 2 mars 2021 Coucou pat, Vouih absolument ! Je n'ai pas vraiment pensé à mettre un gestionnaire d'erreur si un réseau parvient à se glisser dans la sélection lorsque je récupère le nom de la définition de bloc mais bon...un réseau ne possède pas d'attribut donc il se fait éjecter de la sélection illico presto xDMais comme je n'applique aucun filtre sur le nom du bloc en question, les blocs standards et dynamiques sont pris en comptes (et les réseaux aussi du coup) et après les attributs sont atteignables de la même manière dynamique ou pas. Au final je ne récupère le nom du bloc que pour le message de fin qui liste le nom des blocs ayant été modifiés, c'est de la broderie essentiellement ^^ Mais au vu de la demande sur le passage d'une information contenu dans les attributs d'un bloc pour modifier une propriété du bloc en question, je vais essayer de me pencher sur la question pour générer une BdD un peu jolie et pouvoir faire mumuse avec pour implémenter les valeurs d'attributs dans une propriété des blocs sélectionner en prenant en compte toutes les propriétés modifiables :3 Le concept devrait aller vite mais la gestion des données pour éviter les soucis va être amusante ! Bref cela m'évitera de créer une commande ATT... pour chaque propriété et nom d'attribut de chacun... la généralisation c'est plus efficace ! Bisous,Luna Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 2 mars 2021 Auteur Partager Posté(e) le 2 mars 2021 Hello YES j imagine une routine un peu plus generique ! Soit la presence eventuelle des attributs : POS_X (ou X) , POS_Y (ou Y) , Eventuellement POS_Z (ou ELEVATION ou Z) , ECHELLE (pour les 3 facteurs XYZ)ou ECHELLE_X , ECHELLE_Y , ECHELLE_Zpour modifier l echelle pour chaque facteurEventuellement ROTATION Ainsi on modifierait les proprietes d'Insertion des Blocs classiques et dynamiquesEt CE surtout sous Excel par ATTOUT / ATTINPuis execution de ta FUTURE routine ... En ayant pour les Blocs dynamiques la version amelioree par Bryce de ATTIN / ATTOUT ... Vois tu ce que je veux dire ? Neanmoins attention aux Blocs avec facteur d'echelle UNIFORME ou NON !Voir ce sujet : https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/modify-scale-of-all-types-of-block-inserts-uniformscale/td-p/10123885ET surtout le message de Kent1Cooper ! La Sante, Bye, lecrabe "fatigue" Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Luna Posté(e) le 2 mars 2021 Partager Posté(e) le 2 mars 2021 Et bien justement j'ai été étonné mais j'avais eu un soucis à la création d'un bloc (la case de l'échelle uniforme s'est cochée toute seule >n<) et j'ai juste fait un (entmod) sur l'insertion du bloc en question et je pouvais tout à fait forcer les valeurs en X, Y, Z de manière indépendante via la liste DXF donc même si depuis la palette des propriétés on ne peut pas, la liste DXF ne l'interdit absolument pas donc tant mieux !! Alors du coup j'ai déjà vu passer les routines ATTIN / ATTOUT mais sans vraiment regarder de plus près...Le principe consiste je présume de récupérer des valeurs depuis un fichier Excel / CSV avec une correspondance du genre (nom attribut . valeur) ?Pour le coup, j'avais en tête d'écrire un programme relativement basique et qui fait confiance à l'utilisateur (parce que c'est difficile de contrôler si la valeur de l'attribut ROTATION est en grade ou en degrés donc la seule solution c'est de supposer que le format des unités est le même entre le format défini dans le dessin et celui renseigné dans l'attribut) qui nécessite de sélectionner un bloc de référence. Depuis une boîte de dialogue qui aura la liste des attributs du blocs, on aura une liste déroulante pour chaque attribut afin de l'affecter à une propriété (et des radio-button pour désactiver les attributs sans relation avec les propriétés), une fois qu'on a bien tout paramétrer, on lance le programme soit sur la pré-sélection, soit une sélection manuelle, soit toutes les occurrences du bloc (dans le même espace) et je filtre pour le faire fonctionner sur blocs standards et dynamiques Comme cela, le programme s'adaptera à n'importe quel nom de bloc, au nombre d'attribut et leur nom ainsi que leur relation avec les propriétés :3La seule question que je ne maîtrise pas encore c'est si je dois conserver les paramètres définis dans la boîte de dialogue dans le cas où on sélectionne le même bloc pour ne pas avoir à re-paramétrer les liaisons attributs/propriétés mais bon, je verrais cela à la fin ^^ Chat sera sûrement utile je pense au vu des demandes sur le sujet xD Bisous,Luna Lien vers le commentaire Partager sur d’autres sites More sharing options...
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