Aller au contenu

Soustraire un nombre a une série d\'attribut


Messages recommandés

Posté(e)

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), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

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

Posté(e)

(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), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

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

Posté(e)

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), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

Pour répondre à ta question:

Liste DXF de l'objet:

http://img413.imageshack.us/img413/5512/77691126.png

DAO: AutoCAD(2D & 3D), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

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

Posté(e)

oh c'est pas moi c'est un plan que j'ai recu...

DAO: AutoCAD(2D & 3D), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

Tu me conseille donc de modifié le code dwf par quel moyen .

Merci encore gile

DAO: AutoCAD(2D & 3D), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

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

Posté(e)

(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), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

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

Posté(e)

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), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

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), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

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

Posté(e)

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), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

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'attribut

code 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

Posté(e)

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), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

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

Posté(e)

Ah oui daccord mais je pensais l'avoir fait dans mon dernier post de lisp.

A la ligne cons 2

DAO: AutoCAD(2D & 3D), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité