Tramber Posté(e) le 22 août 2004 Posté(e) le 22 août 2004 Pourquoi et comment le maillage polyface (pas une maille ou un maillage polygonal) est-il codé comme ceci ? ((-1 . ) (0 . "POLYLINE") (330 . ) (5 . "105") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbPolyFaceMesh") (66 . 1) (10 0.0 0.0 0.0) (70 . 64) (40 . 0.0) (41 . 0.0) (210 0.0 0.0 1.0) (71 . 4) (72 . 2) (73 . 0) (74 . 0) (75 . 0)) Il y a 2 noms d'entités et 2 groupes 100.Donc, j'imagine qu'il faut fouiller l'entité 330 pour trouver les points. Question, comment crée-t-on un maillage polyface en lisp ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Invité Patrick Posté(e) le 22 août 2004 Posté(e) le 22 août 2004 certains codes DXF apparaissent plusieurs Fois par objet .il Fautdonc boucler pour les parcourir . c'est le cas des LWPOLYLIGNES (message envoyé à partir d'un appareil mobile)
Tramber Posté(e) le 22 août 2004 Auteur Posté(e) le 22 août 2004 C'est gentil mais ca n'est pas en rapport avec le mailage polyface et ca ne m'aide pas beacoup à comprendre. Je tente de fouiller le code,...bof, j'arrive pas à lire les points, au moins des faces qui composent le maillage ou alors des points seuls du maillage. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 22 août 2004 Auteur Posté(e) le 22 août 2004 Je continue à formuler ma question. J'arrive à automatiser la création des "_3dfaces" et à gérer la visibilité des arrêtes.Mais je n'arrive pas à transformer ça en maillage polyface. Mais alors pas du tout. Je ne suis pas très fort non plus en exploration de codes DXF et celui ci-dessus me resiste pas mal. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
didier Posté(e) le 23 août 2004 Posté(e) le 23 août 2004 coucouben, moi je ne sais même pas fairedes POLYFACES à la main,alors de là à les automatiser en Lisp,il y a un obstacle que je ne suis pas sur le point de franchir. Explique CLAIREMENT, la méthodepour obtenir tes fameuses POLYFACES,quelles entités au départ, et surtout le mode opératoire et je vais me pencher sur ton souci. à bientôt Éternel débutant... Mon site perso : Programmer dans AutoCAD
bonuscad Posté(e) le 23 août 2004 Posté(e) le 23 août 2004 Salut Tramber, On laisse tomber le script ;) Plus sérieusement, pour les entités "INSERT" (bloc) et "POLYLINE" , tu es obligé de parcourir la définition avec (entnext).Cette fonction te retournera des entités "VERTEX" tant qu'il y en aura, tu sauras que tu es arrivé au bout quand (entnext) te renverra une entité "SEQEND". Ton code doit donc contenir une boucle pour parcourir ce type d'entité. Soit tu utilise l'entité "SEQEND", soit le code 71 pour déterminer l'arrêt de ta boucle. exemple d'accés aux sous-entités: (entget (entnext (cdar (entget (car (entsel "\nChoix d'une entité POLYLINE ou INSERT ")))))) Cela retourne la défintion du 1er sommet (pour 1 polyligne) Pour DidierOn dessine des Polyface avec la commande PMAILLE (_PFACE)Cette commande est franchement inutilisable manuellement, son intérêt est de l'utiliser en programmation. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
didier Posté(e) le 23 août 2004 Posté(e) le 23 août 2004 BojourOK, merci,mais le but de Tramber est d'automatiser,donc il faut partir de quelque chose,et ce quelque chose, c'est quoi ?-- des points ?-- des entités lignes ou arcs ?-- faut il des polylignes ?-- le tout en 3D ? je ne vois pas la finalité, donc je ne serai pas d'une grande aide,désolé Éternel débutant... Mon site perso : Programmer dans AutoCAD
Tramber Posté(e) le 23 août 2004 Auteur Posté(e) le 23 août 2004 Je suis en train de galérer aujourd'hui avec mon vieux 2000 à verrou physique et je perds mon temps à désinstaller et réinstaller et me prendre la tête avec le fameux ac1st15.dll :casstet: Mais je me dois d'avancer sur ce sujet même si je n'ai pas la main sur Autocad. La base du maillage polyface, c'est la face3D. Cher Didier, si tu lances _3dface, tu définis une face3D et tu peux gérer au fur et à mesure la visibilité des arrêtes. Jusque là tout va bien. Tu peux t'y essayer, c'est super facile. Maintenant, je butte sur un problème : le maillage polyface (PMAILLE en génére mais celui que je veux traiter vient d'un autre logiciel par un import DXF). Le maillage polyface, c'est, en gros, comme un bloc qui contiendrait un nombre X de faces 3D. L'intérêt, au final, étant d'obtenir une surface (composée de faces 3D) que l'on peut manipuler en un seul objet.Pour preuve, si tu explose une 3Dmaille, tu obtiens des faces3D. Voilà le hic, je pense que c'est un lisp qui crée PMAILLE, mais je ne sais pas lire les entités contenues dedans et encore moins rassembler des faces pour en faire une PMAILLE (ni en lisp ni en session de dessin normale). Voilà voilà, je vais chercher un peu dans les lisp d'Autocad pour voir si je peux comprendre qqe chose. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
didier Posté(e) le 23 août 2004 Posté(e) le 23 août 2004 salut Tramber, ben c'est clair que c'est pas clair,je blague, ça baigne.envoie moi un dwg exemple, et dis moi ce que tu souhaites obtenir,je vais regarder ça au travers de la fumée éclaircissante de mes sans filtre...ciao un pour toussetousse pour un, Éternel débutant... Mon site perso : Programmer dans AutoCAD
Tramber Posté(e) le 23 août 2004 Auteur Posté(e) le 23 août 2004 Très volontiers, je le fais et puis on publiera ce qu'on aura trouvé. La commande PMAILLE est qd même hyper balaise à comprendre (je dirai que c'est super facile une fois que j'y serai arrivé ;) ). Bon, pour la commande _3Dface, y a pas de problèmes, hein ? C'est fastoche. en lisp, on peut faire : (defun C:pilefaces ( / pt1 pt2 pt3 pt4 pt5 pt6) (setq pt5 nil) (setq pt1 (getpoint "\n1er vertex: ")) (setq pt2 (getpoint "\nVertex suivant: ")) (setq pt3 (getpoint "\nVertex suivant: ")) (setq pt4 (getpoint "\nVertex suivant: ")) (setq pt6 pt4) (if (= pt4 nil) (command "_3dface" pt1 pt2 pt3 pt3 pt5)) (if (= pt4 nil) (setq pt6 nil)) (if (/= pt4 nil) (command "_3dface" pt1 pt2 pt3 "i" pt3 pt5)) (while (/= pt4 nil) (setq pt2 pt3) (setq pt3 pt4) (setq pt4 (getpoint "Next vertex: ")) (if (/= pt4 nil) (command "_3dface" "i" pt1 pt2 pt3 "i" pt3 pt5)(command "_3dface" "i" pt1 pt2 pt3 pt3 pt5)) )) Pour patienter, mais comment rassembler tout ca dans une PMAILLE ?Et comment lire les entités d'une PMAILLE Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
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