RhymOne Posté(e) le 8 juin 2010 Posté(e) le 8 juin 2010 Bonjour,Voila je pense que qqchose de ce genre à deja était reflechit:Jai une serie d'attribut et je voudrais soustraire à ces attributs un nombre saisie au clavier.Fonctionnant par calque je pense qu'on peut faire qqchose de pas mal... Une idée??Merci d'avance DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
(gile) Posté(e) le 8 juin 2010 Posté(e) le 8 juin 2010 Salut, Pseudo code :- Saisie de la valeur- Sélection avec un filtre sur le nom du bloc et le calque - Pour chaque bloc, recherche de l'attribut par son étiquette et modification de la valeur de l'attribut Poste ce que tu as déjà fait, on t'aidera. PS : ce forum est celui dans lequel on poste des routines abouties :Postez ici vos routines LISP. Une routine est du code court destiné à être réutilisé. Par exemple, un programme mettant à jour la valeur d'un attribut de bloc est une routine. Ne postez pas d'applications ici! Si tu veux de l'aide poste dans "Débuter en LISP", "Pour aller plus loin en LISP" ou "Visual LISP" suivant ton niveau et le type d'aide que tu souhaites. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
RhymOne Posté(e) le 8 juin 2010 Auteur Posté(e) le 8 juin 2010 (re)Merci de repondre le truc c'est que ce ne sont pas des blocs avec un nom séparé ce sont des définition d'attributs venant surrement de covadis.Je pensais à ca mais sa ne marche pas sur atrtribut:(defun c:add ()(setvar "cmdecho" 0)(setq add (getreal "\nEntrer la valeur a additionner : ")) (setq v1 (ssget)) (setq v2 0) (if (/= v1 nil) (while ( (setq ed (entget (ssname v1 v2))) (setq pt1 (cdr(assoc 1 ed))) (setq pt2 (atof pt1)) (setq pt2 (+ pt2 add)) (setq pt1 (rtos pt2 2 0)) (setq ed (subst (cons 1 pt1) (assoc 1 ed) ed ) ) (entmod ed) (setq v2 (+ v2 1)) ) ) ); DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
(gile) Posté(e) le 8 juin 2010 Posté(e) le 8 juin 2010 Je ne comprends pas.Si ce sont des définitions d'attribut le texte qui apparait est celui de l'étiquette de l'attribut pas celui de sa valeur. As tu essayé (entget (car (entsel)) pour voir la liste DXF de l'objet et quel groupe dans cette liste tu veux modifier ? PS : Je vais déplacer ce sujet dans "Débuter en LISP". Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
RhymOne Posté(e) le 8 juin 2010 Auteur Posté(e) le 8 juin 2010 Oui gile ok pour le deplacement et jai verifié tu a raison c'st l'etiquette qui est informé et que je veut changé en faisant une soustraction ou addition... DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
RhymOne Posté(e) le 8 juin 2010 Auteur Posté(e) le 8 juin 2010 Pour répondre à ta question:Liste DXF de l'objet: http://img413.imageshack.us/img413/5512/77691126.png DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
(gile) Posté(e) le 8 juin 2010 Posté(e) le 8 juin 2010 C'est donc le groupe 2 (et pas 1) qu'il faut modifier. Je trouve quand même curieux d'utiliser des définitions d'attribut dans l'espace objet.En tout cas je ne vois pas l'avantage par rapport à des textes simples. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
RhymOne Posté(e) le 8 juin 2010 Auteur Posté(e) le 8 juin 2010 oh c'est pas moi c'est un plan que j'ai recu... DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
RhymOne Posté(e) le 8 juin 2010 Auteur Posté(e) le 8 juin 2010 Tu me conseille donc de modifié le code dwf par quel moyen .Merci encore gile DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
(gile) Posté(e) le 8 juin 2010 Posté(e) le 8 juin 2010 oh c'est pas moi c'est un plan que j'ai recu... Je n'ai jamais dit que c'était toi.Je trouve seulement ça très bizarre comme façon de faire. Tu me conseille donc de modifié le code dwf par quel moyen Dans le code que tu as donné, tu traite le groupe DXF 2 (étiquette) au lieu du groupe 1 (valeur)tu peux aussi utiliser un filtre de sélection pour ne sélectionner que les définitions d'attibuts :(ssget '((0 . "ATTDEF"))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
RhymOne Posté(e) le 8 juin 2010 Auteur Posté(e) le 8 juin 2010 (Re)Je voit pas ce que tu trouve de bizzare mais bon,J'ai recu un plan ou les profil en long ont des ecriture avec des définition d'attributs.Comme ci c'etait des blocs avec attributs et qu'on a explosé sa.Moi la dessus (75 profils) je doit modifié l'altitude des profil en long. Merci comme même DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
(gile) Posté(e) le 8 juin 2010 Posté(e) le 8 juin 2010 Je voit pas ce que tu trouve de bizzare Utiliser des définitions d'attribut à la place de textes et mettre une valeur comme étiquette.Si ça avait été des blocs explosés, c'est l'étiquette de l'attribut qui apparaitrait, pas sa valeur. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
RhymOne Posté(e) le 8 juin 2010 Auteur Posté(e) le 8 juin 2010 Ba oui c'est bien ça, c'est l'etiquette qui apparait.Sur l'ecriture du lisp que j'ai posté il m'est impossible de selectionné les définitions d'attribut.Ca marche que sur les textes...Peut tu stp regardé pour changer le mode de séléction. DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
RhymOne Posté(e) le 8 juin 2010 Auteur Posté(e) le 8 juin 2010 Bon cet histoire d'attribut m'enerve.. Gile ou qq'un d'autre, auriez vous un lisp transformant les attributs en texte qqchose comme sa.J'ai essayé celui de l'express mais sa ne marche que si les attributs sont blocés et dan smon cas il ne le sont pas... Merci d'avance les gars et surtout gile... DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
(gile) Posté(e) le 8 juin 2010 Posté(e) le 8 juin 2010 Peut tu stp regardé pour changer le mode de séléction. As tu essayé avec ce que je donne Réponse 9 ? Avec ce filtre et en traitant le code 2 au lieu du code1 le LISP que tu as donné devrait fonctionner. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
RhymOne Posté(e) le 9 juin 2010 Auteur Posté(e) le 9 juin 2010 J'ai adapté ce que tu ma dit à ce que j'avais fait:Mais oups la définition d'attribut est remplacé par la valeur v1;******************************************(defun c:add ()(setvar "cmdecho" 0)(setq add (getreal "\nEntrer la valeur a additionner : ")) (setq v1 (ssget '((0 . "ATTDEF")))) (setq v2 0) (if (/= v1 nil) (while ( (setq ed (entget (ssname v1 v2))) (setq pt1 (cdr(assoc 1 ed))) (setq pt2 (atof pt1)) (setq pt2 (+ pt2 add)) (setq pt1 (rtos pt2 2 0)) (setq ed (subst (cons 2 pt1) (assoc 2 ed) ed ) ) (entmod ed) (setq v2 (+ v2 1)) ) ) ); ************* DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
(gile) Posté(e) le 9 juin 2010 Posté(e) le 9 juin 2010 As tu essayé avec ce que je donne Réponse 9 ? Avec ce filtre et en traitant le code 2 au lieu du code1 le LISP que tu as donné devrait fonctionner. code 2 = étiquette de la définition d'attributcode 1 = valeur par défaut de la définition d'attribut Si le code 1 est une chaîne vide (""), (atof "") retourne 0, et tu ajoutes 'add' à 0... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
RhymOne Posté(e) le 10 juin 2010 Auteur Posté(e) le 10 juin 2010 Merci gile,Mais pour tes dernières remarques je recule dans mon idée.Par hasard est il possible de mettre dans la valeur une espèce de maccro genre \P pour ecrire l'etiquette...Merci d'avance peut tu me dire stp pour ta dernière reponse ou je doit 'add' à0 DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
(gile) Posté(e) le 10 juin 2010 Posté(e) le 10 juin 2010 Par hasard est il possible de mettre dans la valeur une espèce de maccro genre \P pour ecrire l'etiquette... Je ne comprends pas... peut tu me dire stp pour ta dernière reponse ou je doit 'add' à0 C'est ce que tu fais avec le code que tu a posté qui traite la valeur (qui est une chaîne vide) au lieu de l'étiquette (qui contient le nombre que tu veux modifier). Et c'est justement ce qu'il faut corriger en traitant le groupe 2 au lieu du groupe 1. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
RhymOne Posté(e) le 10 juin 2010 Auteur Posté(e) le 10 juin 2010 Ah oui daccord mais je pensais l'avoir fait dans mon dernier post de lisp.A la ligne cons 2 DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
(gile) Posté(e) le 10 juin 2010 Posté(e) le 10 juin 2010 Oui, mais la chaîne que tu récupères est celle de la valeur :(setq pt1 (cdr(assoc [b]1[/b] ed))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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