bonuscad Posté(e) le 30 juin 2023 Partager Posté(e) le 30 juin 2023 @Zaher_chn Bonjour, Une autre méthode possible avec juste une sélection. Pour cela il faudrait que tu décompose le bloc qui représente tes contours de mur et appliquer le code suivant. Avec ton dessin de test, ça à l'air de fonctionner. (defun c:zaher ( / ss modelSpace e_first p_s p_e n e pt_s pt_e off prm pt lst_pt nw_pl) (setq ss (ssget '((0 . "LWPOLYLINE") (-4 . "<NOT") (-4 . "&") (70 . 1) (-4 . "NOT>")))) (cond (ss (setq modelSpace (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))) (while (> (sslength ss) 0) (setq e_first (ssname ss 0) p_s (vlax-curve-getStartPoint e_first) p_e (vlax-curve-getEndPoint e_first) ) (ssdel e_first ss) (repeat (setq n (sslength ss)) (setq e (ssname ss (setq n (1- n))) pt_s (vlax-curve-getStartPoint e) pt_e (vlax-curve-getEndPoint e) ) (cond ((member (setq off (distance p_s pt_s)) '(15.0 18.0 20.0)) (setq prm -1) (repeat (1+ (fix (vlax-curve-getEndParam e_first))) (setq pt (mapcar '* (mapcar '+ (vlax-curve-getPointAtParam e_first (setq prm (1+ prm))) (vlax-curve-getPointAtParam e prm) ) '(0.5 0.5 0.5) ) lst_pt (cons (list (car pt) (cadr pt)) lst_pt) ) ) (setq nw_pl (vlax-invoke modelSpace 'AddLightWeightPolyline (apply 'append lst_pt))) (vlax-put nw_pl 'ConstantWidth off) (cond ((eq off 20.0) (vlax-put nw_pl 'Layer "_MTH_Voile extérieur ht 2.80m_280")) ((or (eq off 15.0) (eq off 18.0)) (vlax-put nw_pl 'Layer "_MTH_Voile intérieur ht 2.60m_260")) ) (ssdel e ss) (setq lst_pt nil) ) ) ) ) ) ) (prin1) ) Citer Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
Zaher_chn Posté(e) le 2 juillet 2023 Auteur Partager Posté(e) le 2 juillet 2023 Bonjour @didier, Je viens de tester le code que tu as fait et il fonctionne comme je le voulais. Merci @bonuscad pour ta proposition de code. L'idée de vouloir tout faire d'un seul coup est géniale et ça me ferait gagner énormément de temps. Etant donnée que tu as pris le temps de réaliser ce code, je me permets de te faire un retour sur les points négatifs que j'ai trouvé: - il ne fonctionne pas avec les blocs, les lignes ou xref comparé a celui de @didier - lorsqu'il y'a des portes ou fenêtre, la polyligne n'est pas créée au niveau de celles-ci - les plans doivent être parfaitement dessinés sinon le code ne fonctionne pas ou bien il crée des polylignes orientées différemment du voile (les plans archi/structure ne le sont pas tous) - les polylignes créées sont jointes alors qu'il est intéressant pour moi d'avoir une polyligne droite Je ne suis pas très bon dans la programmation autolisp, je suis justement en train d'apprendre et il me semble que ton code se base sur les calques créés ce qui fait qu'il ne comprends pas lorsqu'un mur a une épaisseur différente. Je tiens quand même à te remercier pour le temps que tu as mit deçu. Zaher 🙂 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 2 juillet 2023 Partager Posté(e) le 2 juillet 2023 Bonjour @Zaher_chn SI le dessin est bien fait, toujours dans les mêmes normes et que l'on trouve les mêmes entités, la programmation devient efficace. SI le dessin est des fois des blocs, des fois des lignes, des fois des polylignes des fois des XREF, la programmation devient très compliquée pour gérer tous les cas possibles. C'est pour cette raison que je t'ai proposé quelque chose "entre les deux" c'est du dessin assisté suite à la saisie de l'utilisateur. On ne pourra guère faire mieux avec les entrants que tu as. Amicalement Citer Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Zaher_chn Posté(e) le 2 juillet 2023 Auteur Partager Posté(e) le 2 juillet 2023 Bonjour @didier Je comprends très bien ce que tu veux dire. C’est pour cette raison que je recherchais un code capable de s’adapter à tout. Je gagnerai beaucoup de temps rien qu’avec ce que tu m’as fourni. Zaher 🙂 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 3 juillet 2023 Partager Posté(e) le 3 juillet 2023 OK @Zaher_chn Je suis content pour toi, le but est atteint. Il faut comprendre et je pense que tu l'as bien compris (à l'inverse de dc01 ) que les questions que l'on pose pour aider sont utiles pour trouver la solution. Si l'on devait continuer à se faire mordre ainsi, on aiderait beaucoup moins. Dans les dernières décennies tout s'est bien passé, ce n'est que depuis peu que les "gens" deviennent agressifs, je regrette bien amèrement ces changements d'attitude. Amicalement 2 Citer Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Zaher_chn Posté(e) le 14 octobre 2023 Auteur Partager Posté(e) le 14 octobre 2023 Bonjour @didier, Je reviens vers toi car, comme tu l'avais prédis, j'aurais besoin d'une petite amélioration concernant le petit programme que tu as crée précédemment. En effet, lorsque je change de SCU (autre que le général), la polyligne ne se crée par correctement car ses coordonnées et sa largeur changent aléatoirement. Ce n'est pas très grave car je n'ai juste qu'a travailler sur le SCU général au lieu de le changer mais ce serait plus pratique si je pouvais éviter de le faire tout le temps 🙂 Merci encore ce que t'as déjà fait, il m'est très utile 🙂 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés