(gile) Posté(e) le 29 juin 2006 Partager Posté(e) le 29 juin 2006 Voici une petite routine qui crée un bloc figurant le développé de la surface réglée sélectionnée. Cette routine fonctionne avec tous les maillages 3D à 2 sommets M (surfaces réglées, cones, cylindres ...). La méthode employée consiste en une "triangulation" de chaque maille pour récupérer les distances entre les sommets et "reconstruction" des triangles en 2D dans le plan du SCU pour retrouver les sommets qui serviront à faire une spline. La précision de la méthode dépend donc du nombre de sommets N (ne pas hésiter à mettre une valeur importante à SURFTAB1). Après avoir positionné la région dans le dessin, il est proposé à l'utilisateur de faire un miroir, s'il préfère afficher l'autre face du développé. Toutes les critiques sont les bienvenues, notamment de la part des "forts en descro" concernant la méthode (je suis autodidacte dans ce domaine aussi). NOUVELLE VERSION (08/07/06) Le bloc est nommé par défaut avec un nom indexé : SurfDev_1, SurfDev_2 ... À la fin de la routine, il est proposé à l'utilisateur de renommer le bloc. ;;; SURFDEV -Gilles Chanteau- 08/07/06 ;;; Crée un bloc représentant le développé d'un maillage 3D ouvert ou ;;; fermé à 2 sommets M (surface réglée). ;;; La précision du développé augmente avec le nombre de mailles N (SURFTAB1) ;;; Après positionnement du bloc (insertion et rotation), il est proposé à ;;; l'utilisateur d'exécuter un miroir pour afficher l'autre face du développé. ;;; Par défaut, le bloc est nommé SurfDev_1, SurfDev_2, en fonction de l'existence ;;; de blocs du même nom dans le dessin. ;;; Il est proposé à l'utilisateur de le renommer. ;;; ;;;[color=#FF0000] NOTA : si les surfaces développables sont toujours des surfaces réglées, toutes ;;; les surfaces réglées ne sont pas forcément développables. ;;; Surfdev n'évalue si la surface sélectionnée est rigoureusement développable, ;;; et peut donc créer un développé erroné ou inexact pour celle-ci.[/color] ;;; SQR retourne le carré du nombre (defun sqr (num) (if (numberp num) (* num num) ) ) ;;; ACOS Retourne l'arc cosinus du nombre (defun acos (num) (if (<= -1 num 1) (atan (sqrt (- 1 (sqr num))) num) ) ) ;;; THIRD_PT Retourne le point qui est à dist1 de pt1 et dist2 de pt2 (defun third_pt (pt1 pt2 dist1 dist2 /) (cond ((zerop dist1) pt1) ((zerop dist2) pt2) (T (polar pt1 (+ (angle pt1 pt2) (acos (/ (+ (sqr (distance pt1 pt2)) (sqr dist1) (- (sqr dist2))) (* 2 (distance pt1 pt2) dist1) ) ) ) dist1 ) ) ) ) ;;; Index_name Crée un nom indexé dont l'indice n'est pas présent dans la table spécifiée (defun index_name (tbl prfx / nom compt) (setq nom (strcat prfx "1") compt 1 ) (while (tblsearch tbl nom) (setq compt (1+ compt) nom (strcat prfx (itoa compt)) ) ) nom ) ;;; Liste des sommets d'une polyligne 3D (defun 3dpoly_pts (ent / pt pts) (while (setq pt (cdr (assoc 10 (entget (entnext ent))))) (setq ent (entnext ent) pts (cons pt pts) ) ) pts ) ;;; Fonction principale (defun c:SurfDev (/ *error* osm cmd del obj lst n lst1 lst2 rslt1 rslt2 n1 n2 ss ind new) ;; Redéfinition de *error* (defun *error* (msg) (if (= msg "Fonction annulée") (princ) (princ (strcat "\nErreur: " msg)) ) (command "_undo" "_end") (command "_u") (princ) ) (setq osm (getvar "OSMODE") cmd (getvar "CMDECHO") del (getvar "DELOBJ") ) (while (not (setq obj (car (entsel "\Sélectionnez la surface à développer: ")) ) ) ) (if (and (= (cdr (assoc 0 (entget obj))) "POLYLINE") (zerop (logand (cdr (assoc 70 (entget obj))) 207)) (< (cdr (assoc 71 (entget obj))) 3) ) (progn (command "_undo" "_begin") (setq lst (3dpoly_pts obj) n 0 n1 0 n2 0 ) (repeat (/ (length lst) 2) (setq lst1 (cons (nth n lst) lst1) n (1+ n) ) ) (repeat (/ (length lst) 2) (setq lst2 (cons (nth n lst) lst2) n (1+ n) ) ) (if (equal (car lst1) (car lst2) 1e-9) (setq rslt1 (cons '(0 0 0) rslt1) rslt2 (cons '(0 0 0) rslt2) rslt1 (cons (polar '(0 0 0) (angle (car lst1) (cadr lst1)) (distance (car lst1) (cadr lst1)) ) rslt1 ) rslt2 (cons (third_pt (car rslt1) '(0 0 0) (distance (cadr lst1) (cadr lst2)) (distance (car lst2) (cadr lst2)) ) rslt2 ) lst1 (cdr lst1) lst2 (cdr lst2) ) (setq rslt1 (cons '(0 0 0) rslt1) rslt2 (cons (polar '(0 0 0) (angle (car lst1) (car lst2)) (distance (car lst1) (car lst2)) ) rslt2 ) ) ) (repeat (1- (length lst1)) (setq rslt1 (cons (third_pt (car rslt1) (car rslt2) (distance (nth n1 lst1) (nth (setq n1 (1+ n1)) lst1) ) (distance (nth n2 lst2) (nth n1 lst1)) ) rslt1 ) ) (if (equal (nth n1 lst1) (nth (1+ n2) lst2) 1e-9) (setq rslt2 (cons (car rslt1) rslt2) n2 (1+ n2) ) (setq rslt2 (cons (third_pt (car rslt1) (car rslt2) (distance (nth n1 lst1) (nth (1+ n2) lst2)) (distance (nth n2 lst2) (nth (setq n2 (1+ n2)) lst2) ) ) rslt2 ) ) ) ) (setvar "CMDECHO" 0) (setvar "OSMODE" 0) (setvar "DELOBJ" 1) (setq ss (ssadd)) (foreach l (list rslt1 rslt2) (if (not (vl-every '(lambda (pt) (equal pt (car l) 1e-9)) l) ) (progn (command "_.spline") (mapcar 'command l) (command "" "" "") (ssadd (entlast) ss) ) ) ) (foreach fun (list 'car 'last) (if (not (equal (apply fun (list rslt1)) (apply fun (list rslt2)) 1e-9 ) ) (progn (command "_.line" (apply fun (list rslt1)) (apply fun (list rslt2)) "" ) (ssadd (entlast) ss) ) ) ) (setq ind (index_name "BLOCK" "SurfDev_")) (command "_.block" ind '(0 0 0) ss "") (setvar "OSMODE" osm) (command "_.insert" ind "_scale" 1) (princ "\nSpécifiez le point d'insertion: ") (command pause) (princ (strcat "\nSpécifiez l'angle de rotation <" (angtos 0) ">: " ) ) (command pause) (setq bloc (entlast)) (initget "Oui Non") (if (= "Oui" (getkword "\nEffectuer un miroir ? [Oui/Non] < Non >: ") ) (progn (command "_mirror" bloc "" (setq pt (cdr (assoc 10 (entget bloc)))) "_non" (polar pt 0.0 1) "_yes" "_.explode" bloc "_.block" ind "_yes" pt "_previous" "" ) (command "_.insert" ind "_scale" 1) (princ "\nSpécifiez le point d'insertion: ") (command pause) (princ (strcat "\nSpécifiez l'angle de rotation <" (angtos 0) ">: " ) ) (command pause) ) ) (initget "Oui Non") (if (= "Oui" (getkword (strcat "\nRenommer le bloc \"" ind "\" ? [Oui/Non] < Non >: " ) ) ) (progn (initdia) (command "_.rename" "_block") (while (< 7 (getvar "CMDACTIVE")) (command pause) ) (command) ) ) (command "_.undo" "_end") (setvar "CMDECHO" cmd) (setvar "DELOBJ" del) ) (princ "\nL'objet sélectionné n'est pas une surface développable." ) ) (princ) )[Edité le 29/6/2006 par (gile)][Edité le 30/6/2006 par (gile)][Edité le 2/7/2006 par (gile)][Edité le 8/7/2006 par (gile)][Edité le 19/12/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 29 juin 2006 Auteur Partager Posté(e) le 29 juin 2006 En passant par un bloc, l'insertion du développé semble plus rapide, plus élégante (pas de ligne élastique) et permet la rotation pour un meilleur positionnement. Je modifie le LISP ci dessus en conséquence. PS : Le bloc est ensuite supprimé et purgé. [Edité le 29/6/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 30 juin 2006 Auteur Partager Posté(e) le 30 juin 2006 Je suis un bien piètre testeur, j'avais laissé passer un appel à la fonction GETVAL qui n'était pas définie parmi les sous-routines ci-dessus, comme elle fait partie des routines chargées automatiquement dans mon profil utilisateur, je n'avais pas eu de message d'erreur. L'erreur dans le LISP ci-dessus est réparé. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 1 juillet 2006 Auteur Partager Posté(e) le 1 juillet 2006 Je suis étonné que çà n'intéresse personne. :exclam: Deux petits exemples d'utilisation possible. Une trémie : http://img112.imageshack.us/img112/5441/developptrmie6iz.png Un bateau : http://img301.imageshack.us/img301/5519/dveloppbateau9vq.png Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 2 juillet 2006 Partager Posté(e) le 2 juillet 2006 Super Post ! J'avais pas vu. Magnifique code, en pur Autolisp. Il faudrait le livrer avec un séparateur dans le sens M au cas où l'on voudrais s'attaquer à plus gros. J'ai fait une surface réglée sur deux objets fermés, là, ca a marché mais le résultat fut un peu bizarre. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 2 juillet 2006 Auteur Partager Posté(e) le 2 juillet 2006 Merci Tramber, Il me semblait bien que le message était passé inaperçu. Le choix du "pur AutoLISP" est essentiellement du à l'utilisation des (command ... pause ...). Je ne comprends pas bien ce que tu veux dire par "un séparateur dans le sens M", il me semble que s'il y a plus de 2 sommets M la surface n'est plus développable, non ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 2 juillet 2006 Partager Posté(e) le 2 juillet 2006 Non, bien sur, mais il suffit alors de continuer à boucler et de proposer l'insertion d'autant de développés qu'il ya de rangs M-1. Regarde ton bateau, si il avait été modelé en un seul maillage polygonal ?! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 2 juillet 2006 Auteur Partager Posté(e) le 2 juillet 2006 C'est bien ce qu'il m'avait semblé comprendre, ce que tu propose est, il me semble, tout à fait réalisable, mais je me demande si çà a une réelle utilité. Dans le cas dudit bateau par exemple, s'il avait été fait en un seul maillage (_edgesurf), d'abord ce ne seait plus la même carène (une coque en forme et plus une coque à bouchains vifs) et les arrêtes générées par les développés de chaque rangées M ne correspondraient pas aux bouchains. Il existe sûrement d'autres situations où le problème ne se pose pas de a même façon, je vais regarder ce que je peux faire. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 2 juillet 2006 Auteur Partager Posté(e) le 2 juillet 2006 Voici un premier jet pour répondre à la suggestion de Tramber. J'ajouterais aux objections faites ci-dessus que la précision dépendant du nombre de sommets, si un grand nombre de sommets N ne fait qu'allonger le temps de calcul, l'augmentation de sommets M augmente d'autant le nombre de blocs créés. ;;; MSURFDEV -Gilles Chanteau- 08/07/06 ;;; Crée, pour chaque rangée M d'un maillage 3D ouvert ou fermé, un bloc (region) ;;; représentant le développé de la rangée. ;;; La précision du développé augmente avec le nombre de mailles N (SURFTAB1) ;;; Après positionnement du bloc (insertion et rotation), il est proposé à ;;; l'utilisateur d'exécuter un miroir pour afficher l'autre face du développé. ;;; Par défaut, le bloc est nommé SurfDev_1, SurfDev_2, en fonction de l'existence de ;;; blocs du même nom dans le dessin. Il est proposé à l'utilisateur de le renommer. ;;; SQR retourne le carré du nombre (defun sqr (num) (if (numberp num) (* num num) ) ) ;;; ACOS Retourne l'arc cosinus du nombre (defun acos (num) (if (<= -1 num 1) (atan (sqrt (- 1 (sqr num))) num) ) ) ;;; THIRD_PT Retourne le point qui est à dist1 de pt1 et dist2 de pt2 (defun third_pt (pt1 pt2 dist1 dist2 /) (cond ((zerop dist1) pt1) ((zerop dist2) pt2) (T (polar pt1 (+ (angle pt1 pt2) (acos (/ (+ (sqr (distance pt1 pt2)) (sqr dist1) (- (sqr dist2))) (* 2 (distance pt1 pt2) dist1) ) ) ) dist1 ) ) ) ) ;;; Index_name Crée un nom indexé dont l'indice n'est pas présent dans la table spécifiée (defun index_name (tbl prfx / nom compt) (setq nom (strcat prfx "1") compt 1 ) (while (tblsearch tbl nom) (setq compt (1+ compt) nom (strcat prfx (itoa compt)) ) ) nom ) ;;; Liste des sommets d'une polyligne 3D (defun 3dpoly_pts (ent / pt pts) (while (setq pt (cdr (assoc 10 (entget (entnext ent))))) (setq ent (entnext ent) pts (cons pt pts) ) ) pts ) ;;; Redéfinition de *error* (defun SurfDev_err (msg) (if (= msg "Fonction annulée") (princ) (princ (strcat "\nErreur: " msg)) ) (command "_undo" "_end") (command "_u") (setq *error* m:err m:err nil ) (princ) ) ;;; Fonction principale (defun c:MSurfDev (/ osm cmd del obj lst n lst1 lst2 rslt1 rslt2 n1 n2 ss ind new) (setq m:err *error* *error* SurfDev_err ) (setq osm (getvar "OSMODE") cmd (getvar "CMDECHO") del (getvar "DELOBJ") ) (while (not (setq obj (car (entsel "\Sélectionnez la surface à développer: ")) ) ) ) (if (and (= (cdr (assoc 0 (entget obj))) "POLYLINE") (zerop (logand (cdr (assoc 70 (entget obj))) 206)) ) (progn (setq lst (3dpoly_pts obj) nb_M (cdr (assoc 71 (entget obj))) nb_N (cdr (assoc 72 (entget obj))) ) (command "_undo" "_begin") (setvar "CMDECHO" 0) (setvar "OSMODE" 0) (setvar "DELOBJ" 1) (while (< 1 nb_M) (foreach n '(lst1 lst2 rslt1 rslt2) (set n nil) ) (setq n 0 n0 (/ (length lst) nb_M) n1 0 n2 0 ) (repeat n0 (setq lst1 (cons (nth n lst) lst1) n (1+ n) ) ) (repeat n0 (setq lst2 (cons (nth n lst) lst2) n (1+ n) ) ) (if (equal (car lst1) (car lst2) 1e-9) (setq rslt1 (cons '(0 0 0) rslt1) rslt2 (cons '(0 0 0) rslt2) rslt1 (cons (polar '(0 0 0) (angle (car lst1) (cadr lst1)) (distance (car lst1) (cadr lst1)) ) rslt1 ) rslt2 (cons (third_pt (car rslt1) '(0 0 0) (distance (cadr lst1) (cadr lst2)) (distance (car lst2) (cadr lst2)) ) rslt2 ) lst1 (cdr lst1) lst2 (cdr lst2) ) (setq rslt1 (cons '(0 0 0) rslt1) rslt2 (cons (polar '(0 0 0) (angle (car lst1) (car lst2)) (distance (car lst1) (car lst2)) ) rslt2 ) ) ) (repeat (1- (length lst1)) (setq rslt1 (cons (third_pt (car rslt1) (car rslt2) (distance (nth n1 lst1) (nth (setq n1 (1+ n1)) lst1) ) (distance (nth n2 lst2) (nth n1 lst1)) ) rslt1 ) ) (if (equal (nth n1 lst1) (nth (1+ n2) lst2) 1e-9) (setq rslt2 (cons (car rslt1) rslt2) n2 (1+ n2) ) (setq rslt2 (cons (third_pt (car rslt1) (car rslt2) (distance (nth n1 lst1) (nth (1+ n2) lst2)) (distance (nth n2 lst2) (nth (setq n2 (1+ n2)) lst2) ) ) rslt2 ) ) ) ) (setq ss (ssadd)) (foreach l (list rslt1 rslt2) (if (not (vl-every '(lambda (pt) (equal pt (car l) 1e-9)) l) ) (progn (command "_.spline") (mapcar 'command l) (command "" "" "") (ssadd (entlast) ss) ) ) ) (foreach fun (list 'car 'last) (if (not (equal (apply fun (list rslt1)) (apply fun (list rslt2)) 1e-9 ) ) (progn (command "_.line" (apply fun (list rslt1)) (apply fun (list rslt2)) "" ) (ssadd (entlast) ss) ) ) ) (command "_.region" ss "") (command "_.chprop" (entlast) "" "_layer" "0" "") (setq ind (index_name "BLOCK" "SurfDev_")) (command "_.block" ind '(0 0 0) (entlast) "") (setvar "OSMODE" osm) (command "_.insert" ind "_scale" 1) (princ "\nSpécifiez le point d'insertion: ") (command pause) (princ (strcat "\nSpécifiez l'angle de rotation <" (angtos 0) ">: " ) ) (command pause) (setq bloc (entlast)) (initget "Oui Non") (if (= "Oui" (getkword "\nEffectuer un miroir ? [Oui/Non] < Non >: ") ) (progn (command "_mirror" bloc "" (setq pt (cdr (assoc 10 (entget bloc)))) "_non" (polar pt 0.0 1) "_yes" "_.explode" bloc "_.block" ind "_yes" pt "_previous" "" ) (command "_.insert" ind "_scale" 1) (princ "\nSpécifiez le point d'insertion: ") (command pause) (princ (strcat "\nSpécifiez l'angle de rotation <" (angtos 0) ">: " ) ) (command pause) ) ) (initget "Oui Non") (if (= "Oui" (getkword (strcat "\nRenommer le bloc \"" ind "\" ? [Oui/Non] < Non >: " ) ) ) (progn (initget 1) (setq new (getstring "\Entrez le nouveau nom: ")) (command "_.rename" "_block" ind new) ) ) (repeat n0 (setq lst (cdr lst)) ) (setq nb_M (1- nb_M)) ) (command "_.undo" "_end") (setvar "CMDECHO" cmd) (setvar "DELOBJ" del) ) (princ "\nL'objet sélectionné n'est pas une surface développable." ) ) (setq *error* m:err m:err nil ) (princ) ) [Edité le 8/7/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 8 juillet 2006 Auteur Partager Posté(e) le 8 juillet 2006 Pour éviter une erreur dans le cas d'un sommet unique (cone ou surface réglées sur un point), j'ai modifié la sous routine THIRD_PT dans les LISP. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 9 juillet 2006 Partager Posté(e) le 9 juillet 2006 Magnifique ! Même s'il est très contraignant de répondre à toutes ces questions de positionnement et de renommage. Ca peut être très intéressant de développer des surface complexes à M et N mailles. Bravo. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 9 juillet 2006 Auteur Partager Posté(e) le 9 juillet 2006 Magnifique ! Merci encore :red: Même s'il est très contraignant de répondre à toutes ces questions de positionnement et de renommage. Il est, bien sûr, possible de modifier tout ça (et tu n'aurais aucune difficulté à le faire ;) ). Pour le positionnement (rotation et miroir), si ce n'est pas fait dans le déroulement du LISP il est fort probable que l'utilisateur doive le faire après. L'orientation du bloc (surface développée) est faite arbitrairement par rapport au SCU courant en fonction des premiers sommets traités (selon qu'ils sont confondus ou pas). La face vue dépend du côté qui a été sélectionné sur les objets au moment de la création de la surface réglée, il me semblait donc intéressant de proposer la possibilité d'afficher l'autre face. Pour le renommage, on pourrait éviter de faire un bloc ou le supprimer et le purger à la fin. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
rocsm59 Posté(e) le 18 décembre 2007 Partager Posté(e) le 18 décembre 2007 Bonsoir (gile), existe-t-il une version de ta routine Lisp surfdev qui trace chaque génératrice sur le développement afin de pouvoir plier le développé par plis successifs ? sinon je suis obligé de décomposer la courbe en points et de tracer chaque génératrice, ce qui est relativement long manuellement. :( Merci ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 18 décembre 2007 Auteur Partager Posté(e) le 18 décembre 2007 existe-t-il une version de ta routine Lisp surfdev qui trace chaque génératrice sur le développement afin de pouvoir plier le développé par plis successifs ? Non, la routine n'est pas rigoureusement "mathématique'. Elle fait un développé par triangulations de la surface réglée mais ne vérifie pas si la surface est vraiment une surface développable (toutes les surfaces développables sont des surfaces réglées mais l'inverse n'est pas vrai). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 19 décembre 2007 Partager Posté(e) le 19 décembre 2007 Bon Matin Gilles Ta routine (que je n'ai pas encore testée, mais j'ai une totale confiance) me semble fabuleuse :) :D :cool: Je vais me replonger avec délice dans la bonne vieille 3D Filaire d'AutoCAD :P Le Decapode "filairement impressionné" Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
RhymOne Posté(e) le 3 novembre 2009 Partager Posté(e) le 3 novembre 2009 Gile Après la lecture de ce sujet je m'interesse à ce genre de chose developée des maillage.J'aimerais que tu me precise sur quel entités autocad marche ton lisp et si il serait possible de l'adapter avec les solid 3D ou les maillage polyface????Merci d'avance. DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 3 novembre 2009 Auteur Partager Posté(e) le 3 novembre 2009 Comme dit au début le LISP ne fonctionne qu'avec des surfaces maillées de type surface réglées.Les surfaces développables sont toujours des surfaces réglées, mais l'inverse n'est pas vrai, certaines surface réglées ne sont pas développables. Le LISP ne sait pas les différencier et donnera dont un développé faux pour ces surfaces non développables. Je ne pense pas qu'il soit possible de faire la même chose avec des solides en LISP. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
RhymOne Posté(e) le 3 novembre 2009 Partager Posté(e) le 3 novembre 2009 (Re)Bonjour,Et pour un maillage polyface??? DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 3 novembre 2009 Auteur Partager Posté(e) le 3 novembre 2009 Si c'est une surface développable (c-a-d uniquement composée de portions de cônes), tu peux en faire une surface réglée. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Titifonky Posté(e) le 3 novembre 2009 Partager Posté(e) le 3 novembre 2009 Bonjour, Si le calcul de développé intéresse du monde, j'ai eu l'occasion de me pencher sur le problème d'un point de vue pratique pour la réalisation d'un limon balancé caissonné de section triangulaire. Suivant le rapport entre l'épaisseur et la largeur de la pièce à développer, on peux utiliser des méthodes différentes. Si le rapport ep/largeur est proche de 0, les bords ne pourront pas s'allonger. La méthode par triangulation sera la plus fiable, elle conserve la longueur des cotés. Si le rapport ep/largeur est proche de 1, les bords allongerons pendant le formage. Une autre méthode permet d'anticiper ces déformations. L'explication à cette adresse avec des images http://www.le-metal.net/Un-escalier#3 Etienne www.le-metal.net, sur la métallerie Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 3 novembre 2009 Partager Posté(e) le 3 novembre 2009 Ah tiens, marrant. J'ai déjà du me battre dans mon entreprise actuelle car ils pensaient que certaines surfaces étaient développables quand je pensais le contraire. http://www.schaffner-escaliers.com/ Allez voir les escaliers d'intérieurs et particulièrement les limons centraux. Ils sont à peu près tous de moi. Mais y a pas de mal pour un tube rectangulaire débillardé de 100 de large, on fait un pré-cintrage (R/ cos² angle de montée) pour les flasques dessus et dessous. Quand c'est plus large c'est plus délicat. Mais c'est rigolo qu'on parle de limon triangulaire. On me prend toujours pour un fou quand je dis ce qui est développable et ce qui ne l'est pas ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Titifonky Posté(e) le 3 novembre 2009 Partager Posté(e) le 3 novembre 2009 Tramber, tu travailles dans l'entreprise Schaffner ? Entreprise de référence en métallerie et plus particulièrement pour les escaliers. C'est toi qui a conçu leur logiciel de traçage d'escalier ? Le bonjour à Philippe de la part d'Etienne www.le-metal.net, sur la métallerie Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 3 novembre 2009 Partager Posté(e) le 3 novembre 2009 Lui-même ;) Ne dis à personne que j'ai toujours un oeil sur le forum :cool: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 3 novembre 2009 Partager Posté(e) le 3 novembre 2009 Et toi ? Tu es d'où ?Compagnon ? Parce que moi pas du tout....Juste Autocadien, diplômé du Bat Génie-civil. Ca mène à tout, même aux développés.... Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Titifonky Posté(e) le 3 novembre 2009 Partager Posté(e) le 3 novembre 2009 Compagnon à mes heures perdues sur Valenciennes.Je me suis formé au calcul de structure au centre Afpa de Lomme et donc je calcul :D www.le-metal.net, sur la métallerie Lien vers le commentaire Partager sur d’autres sites More sharing options...
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