Bonjour,
je suis nouveau sur le forum mais utilise autocad depuis 2ans.
voilà ma question : je bosses sur un pont et ai une levée Topo avec un nuage de points 3d, j'ai lié avec une polyligne ces points et ai sorti l'axe du tablier. Je cherche à réaliser un profil et long du pont qui est réalisé en courbe, il n'est pas constitué d'un arc mais de plusieurs droites qui forment à peu prés un demi cercle vu du dessus.
Comment puis je faire pour "déplier" ou developper la polyligne dans le plan xy pour qu''elle ne soit qu'une droite ? tout en gardant sa longueur développée, ses sommets et ses altitudes (dans le plan xz)?
Je suis sous autocad 2010 natif (sans covadis ou autre).
Merci,
BG
Bonjour,
J'ai écrit rapidement un code en lisp, en espérant que cela fera l'affaire!
(vl-load-com)
(defun l-coor2l-pt (lst flag / ) (if lst (cons (list (car lst) (cadr lst) (if flag (+ (if (vlax-property-available-p obj 'Elevation) (vlax-get obj 'Elevation) 0.0) (caddr lst)) (if (vlax-property-available-p obj 'Elevation) (vlax-get obj 'Elevation) 0.0) ) ) (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag) ) ) ) (defun c:deplie ( / js ent obj AcDoc Space lst_pt lst_2d lst_lg tmp pt_start nw_lst) (princ "\nSélectionner la polylignes 3D: ") (while (not (setq js (ssget "_+.:E:S" '((0 . "*POLYLINE") (-4 . "<AND") (-4 . "&") (70 . 8) (-4 . "AND>"))))) (princ "\nPas d'objets valable ou sélection vide!") ) (setq ent (ssname js 0) obj (vlax-ename->vla-object ent) AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (eq (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (setq lst_pt (l-coor2l-pt (vlax-get obj 'Coordinates) T)) (setq lst_2d (mapcar 'list (mapcar 'car lst_pt) (mapcar 'cadr lst_pt))) (setq lst_lg (mapcar 'distance lst_2d (cdr lst_2d))) (setq tmp '(0.0)) (foreach n lst_lg (setq tmp (cons (+ n (car tmp)) tmp))) (initget 1) (setq pt_start (getpoint "\nPoint d'insertion du profil en long: ")) (setq nw_lst (mapcar '(lambda (x y) (list (+ (car pt_start) x) (+ (cadr pt_start) (caddr y)))) (reverse tmp) lst_pt)) (vlax-invoke Space 'AddLightWeightPolyline (apply 'append nw_lst)) (prin1) )
Bonjour,
desolé pour la lenteur de réponse, dans l'idée c'est exactement ce qu'il me fallait mais ca ne marche pas sur la polyligne3d sur laquelle je travaille. J'ai éssayé dans un nouveau fichier ca fonctionnait mais pas dans le bon.
Merci quand même pour ta réponse rapide et pour ta programmation.
levorace a écrit :
ca ne marche pas sur la polyligne3d sur laquelle je travaille
Il est possible que je n'ai pas envisagé certain cas de figure, je l'ai fais rapidement...
Si tu souhaite donner suite, fais un (entget (car (entsel))) en ligne de commande, sélectionne ta polyligne 3D qui te pose problème et colle le retour ici.
Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.