Fraid Posté(e) le 13 décembre 2005 Posté(e) le 13 décembre 2005 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 10metretout est dans le meme calque je souhaiterais selectionner les textes ayant une valeur comprise entre 200 et 300leur rajouter 10et les mettre dans un calque nommé Z faut il passé par le lisp? merci https://github.com/Fraiddd
bonuscad Posté(e) le 13 décembre 2005 Posté(e) le 13 décembre 2005 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
Fraid Posté(e) le 13 décembre 2005 Auteur Posté(e) le 13 décembre 2005 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 https://github.com/Fraiddd
Tramber Posté(e) le 13 décembre 2005 Posté(e) le 13 décembre 2005 (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 ./__\. (.°=°.)
Fraid Posté(e) le 13 décembre 2005 Auteur Posté(e) le 13 décembre 2005 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: https://github.com/Fraiddd
Fraid Posté(e) le 13 décembre 2005 Auteur Posté(e) le 13 décembre 2005 ne serai se pas dans cette expression que cela bug?(atof(vla-get-textstring ent) ou ent designerai un entier? https://github.com/Fraiddd
bonuscad Posté(e) le 13 décembre 2005 Posté(e) le 13 décembre 2005 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
Tramber Posté(e) le 13 décembre 2005 Posté(e) le 13 décembre 2005 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 ./__\. (.°=°.)
bonuscad Posté(e) le 13 décembre 2005 Posté(e) le 13 décembre 2005 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
Tramber Posté(e) le 13 décembre 2005 Posté(e) le 13 décembre 2005 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 ./__\. (.°=°.)
Fraid Posté(e) le 14 décembre 2005 Auteur Posté(e) le 14 décembre 2005 je vous remercie les gars :D sa marche si je remplace la virgule par un pointvoila le bug j'en ai pas dormis de le nuit merci encore vous etes genial https://github.com/Fraiddd
bonuscad Posté(e) le 14 décembre 2005 Posté(e) le 14 décembre 2005 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
Tramber Posté(e) le 14 décembre 2005 Posté(e) le 14 décembre 2005 à 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 ./__\. (.°=°.)
Fraid Posté(e) le 15 décembre 2005 Auteur Posté(e) le 15 décembre 2005 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 https://github.com/Fraiddd
bonuscad Posté(e) le 15 décembre 2005 Posté(e) le 15 décembre 2005 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
Fraid Posté(e) le 15 décembre 2005 Auteur Posté(e) le 15 décembre 2005 tout est dans le meme calque et je n'arrive pas a ne selectionner que les textes d'altitude ou que les codes [Edité le 15/12/2005 par Fraid] https://github.com/Fraiddd
bonuscad Posté(e) le 15 décembre 2005 Posté(e) le 15 décembre 2005 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
Tramber Posté(e) le 15 décembre 2005 Posté(e) le 15 décembre 2005 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 ./__\. (.°=°.)
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