lecrabe Posté(e) le 22 octobre 2012 Posté(e) le 22 octobre 2012 Hello Je cherche (et je ne trouve pas) une routine qui a partir d'une classique AutoCAD selection de 3DFACE permette la simplification de 3DFace a 4 sommets/vertex dont les points 3 et 4 sont "proches" 1) Poser une question FACTEUR de tolerance/difference acceptable En fait distance maximum acceptable en 3D - ne touche pas aux 3DFaces ayant 3 sommets/vertex- ne touche pas aux 3DFaces dont les sommets/vertex 3 et 4 sont "assez" differents cad distance en 3D entre les points 3 et 4 SUPERIEURE a FACTEUR - touche aux 4DFaces (en les simplifiant par reduction aux 3 premiers sommets/vertex) lorsque distance en 3D entre les points 3 et 4 Voyez vous ce que je veux dire ? Merci d'avance, lecrabe " decapodesquement embete par des 3DFaces a 4 sommets dont le 4eme ne m'interesse pas (en general) " PS: Bien entendu je sais que avec ce 4eme point certaines 3DFaces ne sont pas coplanaires ... Autodesk Expert Elite Team
bryce Posté(e) le 23 octobre 2012 Posté(e) le 23 octobre 2012 Bonjour, En voici une : (defun c:SIMPLF ( / acdoc filter ss tol mod tot i f dist pt3 ) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) filter '( (0 . "3DFACE") )) (if (cadr (ssgetfirst)) (setq ss (ssget "_I" filter)) (progn (prompt "\nSélectionnez les faces 3D à simplifier ou <entrée pour toutes> : ") (or (setq ss (ssget filter)) (setq ss (ssget "_X" filter)) ) ) ) (if ss (progn (vla-startundomark acdoc) (setq tol (getreal "\nTolérance (distance mini entre sommets 3 et 4) : ") mod 0 i 0) (repeat (setq tot (sslength ss)) (setq f (entget (ssname ss i)) dist (distance (setq pt3 (cdr (assoc 12 f))) (cdr (assoc 13 f)) ) ) (if (and (<= dist tol) (> dist 0)) (progn (entmod (subst (cons 13 pt3) (assoc 13 f) f)) (setq mod (1+ mod)) ) ) (setq i (1+ i)) ) (prompt (strcat "\n" (itoa tot) " faces 3D sélectionnées, " (itoa mod) " simplifiées.")) (setq ss nil) (vla-endundomark acdoc) );progn (prompt "\nAucune face 3d sélectionnée.") ) (princ) ) As-tu un exemple de dessin dans lequel cette routine serait utile ? :unsure: Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
lecrabe Posté(e) le 21 novembre 2012 Auteur Posté(e) le 21 novembre 2012 Hello Bryce Sorry pour mon retour TARDIF sur cette routine mais cela ne marche pas (a mon avis) Par exemple tu dessines une simple 3D Face a 4 points au sol (donc tous les Z = 0) Tu testes par la commande DI (distance) la longueur du 4eme cote et tu essayes avec ta routine d'eliminer ce 4eme cote et obtenir une 3DFace "triangulaire" ... Merci d'avance pour ton retour ... lecrabe Autodesk Expert Elite Team
lili2006 Posté(e) le 21 novembre 2012 Posté(e) le 21 novembre 2012 Bonsoir à toutes et tous, " decapodesquement embete par des 3DFaces a 4 sommets dont le 4eme ne m'interesse pas (en general) " Est-ce qu'on peut connaitre la raison STP ? C'est à dire, qu'est ce qui te gène dans cette construction de 3DFaces ? J'ai également remarqué ces 4 sommets mais cela ne m'a jamais gêné pour utiliser les modules VRD de covadis par exemple,... D’où mon interrogation !:blink: Merci d'avance, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lecrabe Posté(e) le 21 novembre 2012 Auteur Posté(e) le 21 novembre 2012 Hello A cause de DWGs dans lesquels le 4eme point de la 3DFACE existe et est TRES proche du 3eme point DONC inutile (a mon sens) !je pense que c un probleme de precision en 3D du logiciel qui a genere les 3DFaces !? A cause de DWGs dans lesquels les 3D Faces ont 4 sommets avec le 3eme = 4eme donc en fait c des 3DFaces triangulaires mais avec un 4eme sommet debile et inutile ... lecrabe Autodesk Expert Elite Team
bryce Posté(e) le 21 novembre 2012 Posté(e) le 21 novembre 2012 Bonsoir, Désolé, je ne comprends pas ce que tu veux dire.Pour rappel, les faces 3D ont toujours 4 sommets. Simplement, dans le cas de faces triangulaires les sommets 3 et 4 sont confondus. Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
lecrabe Posté(e) le 22 novembre 2012 Auteur Posté(e) le 22 novembre 2012 Hello Bryce Merci pour la correction sur la routine de calcul des surfaces des 3DFaces ! Sinon tu as raison pour les 3DFaces a 3 sommets : le 3eme = le 4eme Neanmoins j'aimerais bien svp avoir la routine qui "elimine" le 4eme sommet (en fait dans ce cas le 3eme = le 4eme si on est "en dessous" de la distance minimum) Merci d'avance, lecrabe Autodesk Expert Elite Team
bryce Posté(e) le 22 novembre 2012 Posté(e) le 22 novembre 2012 Bonjour, C'est exactement ce que fait le Lisp posté plus haut: si la distance entre les points 3 et 4 est supérieure à la tolérance, les coordonnées du point 4 sont remplacées par celles du point 3 -> le point 4 est éliminé. :unsure: Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
lecrabe Posté(e) le 22 novembre 2012 Auteur Posté(e) le 22 novembre 2012 Hello Bryce SORRY, SORRY, je suis une grosse truffe : je me suis plante GRAVE sur le CDC/CCTP !J'ai enfin compris vos interrogations !? Mon probleme, c quand le 4eme vertex est "trop proche" du 1er vertex et non pas le 4eme vertex "trop proche" du 3eme vertex !! Dans ce cas, on elimine le 4eme vertex ... SVP peux tu me donner la nouvelle version ? Merci d'avance, lecrabe "crapotant un max" Autodesk Expert Elite Team
bryce Posté(e) le 22 novembre 2012 Posté(e) le 22 novembre 2012 (defun c:SIMPLF ( / acdoc filter ss tol mod tot i f dist ) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) filter '( (0 . "3DFACE") )) (if (cadr (ssgetfirst)) (setq ss (ssget "_I" filter)) (progn (prompt "\nSélectionnez les faces 3D à simplifier ou <entrée pour toutes> : ") (or (setq ss (ssget filter)) (setq ss (ssget "_X" filter)) ) ) ) (if ss (progn (vla-startundomark acdoc) (setq tol (getreal "\nTolérance (distance mini entre sommets 1 et 4) : ") mod 0 i 0) (repeat (setq tot (sslength ss)) (setq f (entget (ssname ss i)) dist (distance (cdr (assoc 10 f)) (cdr (assoc 13 f)) ) ) (if (and (<= dist tol) (> dist 0)) (progn (entmod (subst (cons 13 (cdr (assoc 12 f))) (assoc 13 f) f)) (setq mod (1+ mod)) ) ) (setq i (1+ i)) ) (prompt (strcat "\n" (itoa tot) " faces 3D sélectionnées, " (itoa mod) " simplifiées.")) (setq ss nil) (vla-endundomark acdoc) );progn (prompt "\nAucune face 3d sélectionnée.") ) (princ) );) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
lecrabe Posté(e) le 22 novembre 2012 Auteur Posté(e) le 22 novembre 2012 Hello Beautiful EastMan Merci, cette version semble correspondre parfaitement au bon CDC/CCTP ... D'habitude, j'ecris des CDC/CCTP "clairs et nets" mais alors la, j'ai fais tres fort !En ecrivant entre vertex 3 et 4, alors que je testais (et pensais) sans arret entre vertex 1 et 4 !! Thank you very much, lecrabe "decapodesquement confus" Autodesk Expert Elite Team
lili2006 Posté(e) le 22 novembre 2012 Posté(e) le 22 novembre 2012 Bonsoir à toutes et tous, J'ai toujours pas compris l'intérêt de tout ça,...:mellow: Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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