Communauté
AutoCAD – tous produits - Français
Bienvenue sur les forums AutoCAD d’Autodesk. Partagez vos connaissances, posez des questions, et explorez les sujets AutoCAD populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

Déplier une polyligne 3D

3 RÉPONSES 3
Répondre
Message 1 sur 4
levorace
797 Visites, 3 Réponses

Déplier une polyligne 3D

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

 

 

3 RÉPONSES 3
Message 2 sur 4
CADaSchtroumpf
en réponse à: levorace

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) )

 

 

Message 3 sur 4
levorace
en réponse à: CADaSchtroumpf

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.

Message 4 sur 4
CADaSchtroumpf
en réponse à: levorace


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.

Publier dans les forums