kohen.g Posté(e) le 31 mai 2007 Posté(e) le 31 mai 2007 Bonjour, est -il possible de convertir une spline en polyligne si oui comment, Car j'essay de faire un escalier en colimaçon mais le probleme est lorsque je veux extruder ma piece et de suivre chemin (spline) ceci ne fonctionne pas merci
Bred Posté(e) le 31 mai 2007 Posté(e) le 31 mai 2007 Salut,Tu es sous 2005, tu ne pourras donc pas faire de véritable surface "gauche".Mais tu peux chercher dans les lisps et messages de (gile) tu trouveras plus que ton bonheur !!!! Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
lecrabe Posté(e) le 31 mai 2007 Posté(e) le 31 mai 2007 Hello Tu peux utiliser cette routine par exemple ... ;; Conversion d'une SPLINE en une POLYLIGNE;; Lancement de la fonction: S2P;;;; CADALYST 12/03 AutoLISP Solutions SPLINE-TO-PLINE.LSP;; © 2003 Tony Hotchkiss (defun spline-to-pline (/ i) (vl-load-com) (setq *thisdrawing* (vla-get-activedocument (vlax-get-acad-object) ) ;_ end of vla-get-activedocument *modelspace* (vla-get-ModelSpace *thisdrawing*) ) ;_ end of setq (setq spline-list (get-spline)) (setq i (- 1)) (if spline-list (progn (setq msg "\nNumber of segments : ") (initget 6) (setq num (getint msg)) (if (or (= num 100) (= num nil)) (setq num 100) ) ;_ end of if (repeat (length spline-list) (setq splobj (nth (setq i (1+ i)) spline-list)) (convert-spline splobj num) ) ;_ end of repeat ) ;_ end of progn ) ;_ end of if) ;_ end of spline-to-pline (defun get-spline (/ spl-list obj spline no-ent i) (setq spl-list nil obj nil spline "AcDbSpline" selsets (vla-get-selectionsets *thisdrawing*) ss1 (vlax-make-variant "ss1") ) ;_ end of setq (if (= (vla-get-count selsets) 0) (setq ssobj (vla-add selsets ss1)) ) ;_ end of if (vla-clear ssobj) (setq no-ent 1) (while no-ent (prompt "\nSelect splines: ") (vla-Selectonscreen ssobj) (if (> (vla-get-count ssobj) 0) (progn (setq no-ent nil) (setq i (- 1)) (repeat (vla-get-count ssobj) (setq obj (vla-item ssobj (vlax-make-variant (setq i (1+ i))) ) ;_ end of vla-item ) ;_ end of setq (cond ((= (vlax-get-property obj "ObjectName") spline) (setq spl-list (append spl-list (list obj)) ) ;_ end of setq ) ) ;_ end-of cond ) ;_ end of repeat ) ;_ end of progn (prompt "\nNo entities selected, try again.") ) ;_ end of if (if (and (= nil no-ent) (= nil spl-list)) (progn (setq no-ent 1) (prompt "\nNo splines selected.") (quit) ) ;_ end of progn ) ;_ end of if ) ;_ end of while (vla-delete (vla-item selsets 0)) spl-list) ;_ end of get-spline (defun convert-spline (splobj n / i) (setq point-list nil 2Dpoint-list nil z-list nil spl-lyr (vlax-get-property splobj 'Layer) startSpline (vlax-curve-getStartParam splobj) endSpline (vlax-curve-getEndParam splobj) i (- 1) ) ;_ end of setq (repeat (+ n 1) (setq i (1+ i)) (setq p (vlax-curve-getPointAtParam splobj (* i (/ (- endspline startspline) n) ) ;_ end of * ) ;_ end of vlax-curve-getPointAtParam ) ;_ end of setq (setq 2Dp (list (car p) (cadr p)) 2Dpoint-list (append 2Dpoint-list 2Dp) point-list (append point-list p) z (caddr p) z-list (append z-list (list z)) ) ;_ end of setq ) ;_ end of repeat (setq summ (apply '+ z-list)) (setq arraySpace (vlax-make-safearray vlax-vbdouble ; element type (cons 0 (- (length point-list) 1) ) ; array dimension ) ;_ end of vlax-make-safearray ) ;_ end of setq (setq vert-array (vlax-safearray-fill arraySpace point-list)) (vlax-make-variant vert-array) (if (and (= :vlax-true (vlax-get-property splobj 'IsPLanar)) (= summ 0.0) ) ;_ end of and (setq plobj (add-polyline 2Dpoint-list vla-AddLightweightPolyline ) ;_ end of add-polyline ) ;_ end of setq (setq plobj (add-polyline point-list vla-Add3DPoly ) ;_ end of add-polyline ) ;_ end of setq ) ;_ end of if (vlax-put-property plobj 'Layer spl-lyr) (vla-delete splobj) (vlax-release-object splobj)) ;_ end of convert-spline (defun add-polyline (pt-list poly-func) (setq arraySpace (vlax-make-safearray vlax-vbdouble (cons 0 (- (length pt-list) 1) ) ; array dimension ) ;_ end of vlax-make-safearray ) ;_ end of setq (setq vertex-array (vlax-safearray-fill arraySpace pt-list) ) ;_ end of setq (vlax-make-variant vertex-array) (setq plobj (poly-func *modelspace* vertex-array ) ;_ end of poly-func ) ;_ end of setq) ;_ end of add-polyline (defun c:s2p () (spline-to-pline) (princ)) ;_ end of c:s2p (prompt "SPLINE-TO-PLINE by Tony Hotchkiss. Enter S2P to start") ;_ end of prompt Le Decapode Autodesk Expert Elite Team
(gile) Posté(e) le 31 mai 2007 Posté(e) le 31 mai 2007 Salut Il y a le LISP 3dspiral pour dessiner une polyligne 3d en hélice, mais l'extrusion d'un rectangle (section du limon, par exemple) suivant ce chemin ne va pas le "débillarder". Pour les versions antérieures à 2007 j'avais mis au point une méthode pour créer des solides 3d en colimaçon. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
felipe63000 Posté(e) le 9 octobre 2007 Posté(e) le 9 octobre 2007 Salut à tous, hey le Décapode, c'est bien beau de recopier les codes, mais faut vérifier qu'ils fonctionnent bien !!Pour ma part, je constate qu'il est impossible de sortir de la fonction "s2p" par "esc" ....................Mais je suis pas aussi costaud que toi en prog, et je sais pas comment corriger l'erreur.Peut-être y arrivera tu ? (avec l'aide de ton dieu (ou demi-dieu), qui est également un des miens ;o) Bref merci quand même pour cet esprit d'entraide dont tu (vous) fait(es) part, à nous, les newbbees A plus Oups : oublié de préciser que testé sous 2007 [Edité le 9/10/2007 par felipe63000]
(gile) Posté(e) le 9 octobre 2007 Posté(e) le 9 octobre 2007 C'est bien beau de t'en prendre au décapode, mais il n'y est pour rien si l'auteur du LISP a un méthode un peu autoritaire pour faire sa sélection d'entités !! Si tu sélectionnes au moins un objet, tu peux sortir avec Echap.À part ça la routine marche très bien, et si tu fais une recherche (sur le site ou plus largement sur le web) tu en trouvras certainement d'autres. [Edité le 9/10/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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