bonuscad Posté(e) le 6 avril 2011 Posté(e) le 6 avril 2011 Salut fabcad Citation Ta demande m'interroge vraiment, d'habitude on cherche plutôt à supprimer les sommets alignés ('inutiles') pour alléger le dessin. Je suis comme (gile), pourquoi alourdir ton dessin avec des sommets inutiles? Si tu as juste besoin des points dans un fichier, pourquoi pas plutôt un truc du genre... (vl-load-com) (defun c:discretise2CSV ( / js file_name cle f_open key_sep str_sep oldim nb delta obj_vlax pt_start pt_end perim_obj d_x lst_pt bg_vtx) (princ "\nSélectionner les polylignes3D à discretiser: ") (while (not (setq js (ssget '((0 . "POLYLINE") (-4 . "&=") (70 . 8))))) (princ "\nPas d'objets valable ou sélection vide!") ) (setq file_name (getfiled "Nom du fichier a créer ?: " (strcat (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 3)) "csv") "csv" 37)) (if (null file_name) (exit)) (if (findfile file_name) (progn (prompt "\nFichier éxiste déjà!") (initget "Ajoute Remplace annUler _Add Replace Undo") (setq cle (getkword "\nDonnées dans fichier? [Ajouter/Remplacer/annUler] : ") ) (cond ((eq cle "Add") (setq cle "a") ) ((or (eq cle "Replace") (eq cle ())) (setq cle "w") ) (T (exit)) ) (setq f_open (open file_name cle)) ) (setq f_open (open file_name "w")) ) (initget "Espace Virgule Point-virgule Tabulation _SPace Comma SEmicolon Tabulation") (setq key_sep (getkword "\nSéparateur [Espace/Virgule/Point-virgule/Tabulation]? : ")) (cond ((eq key_sep "SPpace") (setq str_sep " ")) ((eq key_sep "Comma") (setq str_sep ",")) ((eq key_sep "Tabulation") (setq str_sep "\t")) (T (setq str_sep ";")) ) (setq oldim (getvar "dimzin")) (setvar "dimzin" 0) (setq nb -1) (initget 91) (setq delta (getdist "\nLongueur de discretisation: ")) (repeat (sslength js) (setq obj_vlax (vlax-ename->vla-object (ssname js (setq nb (1+ nb)))) pt_start (vlax-curve-getStartPoint obj_vlax) pt_end (vlax-curve-getEndPoint obj_vlax) perim_obj (vlax-curve-getDistAtParam obj_vlax (vlax-curve-getEndParam obj_vlax)) ) (setq d_x delta lst_pt (list pt_start) bg_vtx 1 ) (while (< d_x perim_obj) (if (eq (fix (vlax-curve-getParamAtDist obj_vlax d_x)) bg_vtx) (setq lst_pt (cons (vlax-curve-getPointAtParam obj_vlax bg_vtx) lst_pt) bg_vtx (1+ bg_vtx) ) ) (setq lst_pt (cons (vlax-curve-getPointAtDist obj_vlax d_x) lst_pt) d_x (+ d_x delta) ) ) (setq lst_pt (cons pt_end lst_pt)) (foreach n lst_pt (write-line ((lambda (x) (strcat (rtos (car x) 2 3) str_sep (rtos (cadr x) 2 3) str_sep (rtos (caddr x) 2 3))) n) f_open) ) ) (close f_open) (setvar "dimzin" oldim) (prin1) ) [Edité le 7/4/2011 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 6 avril 2011 Posté(e) le 6 avril 2011 bonuscad, On peut récupérer le séparateur de données spécifié dans les options régionales et linguistiques avec cette expression :(setq sep (vl-registry-read "HKEY_CURRENT_USER\\Control Panel\\International" "sList") Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 6 avril 2011 Posté(e) le 6 avril 2011 (gile), Citation bonuscad,On peut récupérer le séparateur de données spécifié dans les options régionales et linguistiques avec cette expression : (setq sep (vl-registry-read "HKEY_CURRENT_USER\\Control Panel\\International" "sList") Oui, on m'avais déjà donné cette solution, mais je ne sais pourquoi, pour moi ça ne fonctionne pas ! Il faut dire que ce soi chez moi, ou au boulot on utilise que des anciennes licences, c'est peut être lié a cela ! (97 et 2000) J'ai donc gardé cette solution, en plus de cette manière, je n'ai pas de problème non plus avec open office. Mais si tu as une explication, ou une autre astuce, je suis preneur. ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
fabbcad Posté(e) le 7 avril 2011 Posté(e) le 7 avril 2011 Waouh! Merci bonuscad! C'est exactement ce que je cherchais et vu comme ça je suis d'accord sur le fait que c'est inutile d'alourdir le dessin en sommets...Je pensais qu'on ne pouvait récupérer les x,y,z que des sommets... Un grand merci pour cette routine qui va bien me servir! @fabcad : désolé pour l'homonymie comme tu dis mais j'ai tellement l'habitude de mettre 2 "b" dans mes pseudos que je n'ai pas fait attention lors de l'inscription... [Edité le 7/4/2011 par fabbcad]
bonuscad Posté(e) le 7 avril 2011 Posté(e) le 7 avril 2011 Citation Un grand merci pour cette routine qui va bien me servir! De rien ;) J'apprécie le merci. J' édite bon précédent code car un oubli de ma part, les sommets originaux n'étaient pas exportés dans le CSV. (ceci pour des 3Dpoly non splinées) J'avais même pas fait attention à BB du pseudo :P Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
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