Aller au contenu

modification de texte


Fraid

Messages recommandés

Bonjour,

 

Je viens de recevoir une volée de point d'un geometre (10000 points)

le probleme c'est qu'il c'est trompé dans les Z de 10metre

tout est dans le meme calque

 

je souhaiterais selectionner les textes ayant une valeur comprise entre 200 et 300

leur rajouter 10

et les mettre dans un calque nommé Z

 

faut il passé par le lisp?

 

merci

Lien vers le commentaire
Partager sur d’autres sites

Je dirais oui.

 

Filter ou Qselect ne peut faire des tests logiques que sur des entiers, réels, points et vecteurs.

 

Donc à mon avis, obligé d'extraire les chaines pour les convertir en nombre et faire un test avec.

 

En lisp cela est réalisable assez facilement je pense.

 

Le point d'insertion du texte est-il concerné aussi par le Z?

 

Entre nous, la correction devrait être faite par le géomètre, il engage sa responsabilité sur le rendu de son travail.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

je suis d'accord avec toi, je n'ai pas le temps d'attendre qu'il soit dispo pour lui recoller en pleine tete mais la facturation sera en conséquance!!

 

je me prend la tete.... terrible

 

je m'en sort pas en lisp

 

au secours

 

Helppppppp!

 

sinon j'ai applati le plan a zero je n'ai pas besoin d'avoir le plan en 3D mais seulement les bonnes valeurs des altitudes

Lien vers le commentaire
Partager sur d’autres sites

(defun c:ch10()
(setq sel (ssget  '((0 . "TEXT"))))
(setq cont 0)
(repeat(sslength sel)
 (setq ent(vlax-ename->vla-object (ssname sel cont)))
 (if(and(>=(atof(vla-get-textstring ent))200)(    (progn
     (setq ed (entget (ssname sel cont)))
     (setq ed(subst(cons 1(VL-PRINC-TO-STRING(+ 10(atof(vla-get-textstring ent)))))(assoc 1 ed)ed))
     (entmod ed)))
 (setq cont(1+ cont))
 )
)

 

Mets ca dans un *.lsp, charge le et tape CH10, tu peux tout selectionner, ca ne filtrera que les textes et n'agira que sur ceux qui sont compris entre 200 et 300 compris.

 

Sauvegarde ton fichier avant quand même.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

merci tramber

 

cela marche presque

 

car les 3 chiffres apres la virgule sont remplacé par un zéro

 

en tout cas ton prog est génial

 

je ne connais pas les fonction de type VLA

 

et je ne trouve pas de doc en francais sinon je vais essayé de le debugué comeme :casstet:

Lien vers le commentaire
Partager sur d’autres sites

J'ai bien épluché. Autolisp repère que le STRING du texte est un nombre et le simplifie.

 

J'ai essayé plein de trucs, y compris multiplier par 100 pour rediviser. J'ai essayé LUPREC, j'ai essayé DISTOF, RTOS 2 8,....j'ai essayé plein de trucs.

 

N'arrive pas à maitriser. Il faudrait tout multiplier par 10, 100 ou 1000 pour régler le problème.

 

DIMZIN, c'est pour les cotations apparemment, ...ah mais que lis-je, ca influence RTOS ! mais ca ne change rien.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Justement utilise (rtos) et il n'y auras plus de problème de supression de zéro si DIMZIN est bien réglé.

 

(setq ed(subst(cons 1(VL-PRINC-TO-STRING(+ 10(atof(vla-get-textstring ent)))))(assoc 1 d)ed))

 

en:

 

(setq ed(subst(cons 1(VL-PRINC-TO-STRING(rtos (+ 10(atof(vla-get-textstring ent))) 2 3)))(assoc 1 ed)ed))

 

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Ca ne change rien, le pro c'est ATOF, j'ai essayé avec READ, mais pas mieux

 

Tu me surprends :o

 

Sur une 2002 et DIMZIN à 0 cela fonctionne très bien; les zéros inutiles sont bien affichés et transmis quand même. (sous forme de chaines, entendons nous)

 

C' est sur que (atof (rtos 45.00 2 3)) ne change rien, mais là je ne vois pas le problème que cela pose.

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

à zéro !

 

Je mettais DIMZIN à 8 ou +. J'ai pas pensé à 0.

 

 

(setq ed(subst(cons 1(VL-PRINC-TO-STRING(rtos (+ 10(atof(vla-get-textstring ent))) 2 9)))(assoc 1 ed)ed))

là, avec 9 chiffres

 

[Edité le 14/12/2005 par Tramber]

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Le code de Tramber avec un test sur la valeur (doit être un réel)

 

(defun c:ch10()

(setvar "dimzin" 0)

(setq sel (ssget '((0 . "TEXT"))))

(setq cont 0)

(repeat(sslength sel)

(setq ent(vlax-ename->vla-object (ssname sel cont)))

(if(and(>=(atof(vla-get-textstring ent))200)(<=(atof(vla-get-textstring ent))300))

(progn

(setq ed (entget (ssname sel cont)))

(if (eq (type (read (cdr (assoc 1 ed)))) 'REAL)

(progn

(setq ed(subst(cons 1(VL-PRINC-TO-STRING(rtos (+ 10(atof(vla-get-textstring ent))) 2 3)))(assoc 1 ed)ed))

(entmod ed)))))

(setq cont(1+ cont))

)

)

 

[Edité le 15/12/2005 par bonuscad]

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

je viens de m'appersevoir que cela avait changer aussi les codes de mes points compris entre 200 et 300

 

Je ne comprends plus, c'est justement le contraire que j'avais compris.

Si tu es coincé, ne pourrais-tu pas reformuler ton problème proprement ? Au cas où...

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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é