Aller au contenu

modification de texte


Messages recommandés

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

(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

 

./__\.
(.°=°.)
Posté(e)

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:

Posté(e)

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

 

Regarde la variable DIMZIN, tu peux aussi faire une recherche sur le forum . On en a parlé récemment.

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

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

Posté(e)

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

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

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

Posté(e)

à 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

 

./__\.
(.°=°.)
Posté(e)

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

 

j'essaye d'inclure dans le lisp un filtre pour eviter qu'il selectionne les nombres sans virgule

.......

j'y arrive pas

 

on s'improvise pas lisper

Posté(e)

Si le texte de tes codes sont sur un calque différent, isole simplement le calque de tes altitudes en texte pour ne sélectionner qu'eux.

 

Cela sera plus simple que de remanier le code ;)

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

Posté(e)

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

Posté(e)
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

 

./__\.
(.°=°.)

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é