ragimund Posté(e) le 14 novembre 2005 Posté(e) le 14 novembre 2005 bonjour, je reçois des fichiers exportés d'archicad qui sont okcependant les polygones "épais" sont transformés en segments de polyligne "épais" jointif mais pas raccordés (voir image) http:// http://photos1.blogger.com/blogger/5408/1866/1600/ExportPoly.0.jpgje sais raccorder ces segments un par un mais y-a-t-il une fonction qui permette de changer globalement l'extrémité des polylignes de façon à ce que tous les raccords soient correct?merci
Eric Posté(e) le 14 novembre 2005 Posté(e) le 14 novembre 2005 Ca je ne sais plus non plus si c'est dispo dans LT 2004 mais tu peux faire la commande pedit et option multiple Eric est formateur, revendeur sur AutoCAD LT, DraftSight, ZWCAD, SketchUp et PDF2CAD
ragimund Posté(e) le 14 novembre 2005 Auteur Posté(e) le 14 novembre 2005 oui ça existe, je sais faire mais après multiple il faut clic-cliquer sur toutes les polylignes concernées pour joindre.immagine des dizaines de murs comme cela à raccorder...
Eric Posté(e) le 14 novembre 2005 Posté(e) le 14 novembre 2005 Ben la sélection tu peux la faire par fenêtre ou tu lance la sélection rapide tu choisis polyligne - tout sélectionner puis sans rien toucher tu lance pedit - multiple puis au choix des objets tu tapes p Eric est formateur, revendeur sur AutoCAD LT, DraftSight, ZWCAD, SketchUp et PDF2CAD
ragimund Posté(e) le 14 novembre 2005 Auteur Posté(e) le 14 novembre 2005 je dois avoir quch mal foutu, j'avais déjà essayé 10 x mais après la selection rapide, pedit me deselectionne tout et quand je fais m puis p(récédant), il me dit que je n'ai aucune séléction précedentepas moyen de trouver la case à cocher grbbbllmm :mad:
LUDWIG Posté(e) le 15 novembre 2005 Posté(e) le 15 novembre 2005 Pour ce qui est de ton impossibilité de faire un pedit multiple, je ne vois pas d'ou peut venir le problème (LT ?). Sinon, ça peut t'être utile, J'ai un premier lisp qui permet de passer la largeur de toutes les polylignes à 0 (sans décomposer celles qui sont dans des blocs par exemple) : (defun c:poly0 () (vl-load-com) (setq a (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))) (vlax-for bl a (vlax-for ent bl (if (and (vl-string-search "AcDb" (vla-get-objectname ent))(vl-string-search "Polyline" (vla-get-objectname ent))) (vla-put-ConstantWidth ent 0) ) ) ) (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acActiveViewport) ) Si par contre tu ne veux joindre tes polylignes que calque par calque (c'est-à-dire que les polylignes de calques différents ne se joindront pas), tu peux utiliser ce lisp que quelqu'un du forum avait fait (oups, je ne sais plus qui) : (defun c:pedit2 (/ acadver fuzz hasLineOrArc i is3DpolylineOr3Dmesh layer n objet objetGet oldPeditaccept ss triplet1 triplet2 triplets ) (setq fuzz 0.0) ; tolerance pour joindre ou non (setq acadver (substr (getvar "acadver") 1 4)) (if (>= acadver "16.1") (progn (setq oldPeditaccept (getvar "peditaccept")) (setvar "peditaccept" 1) ) ;_ Fin de progn ) ;_ Fin de if (setq ss (ssget (list (cons 00 "*polyline,line,arc")))) (setq hasLineOrArc nil) (setq i 0) (setq n (if ss (sslength ss) 0 ) ;_ Fin de if ) ;_ Fin de setq (setq triplets nil) ;; Construire autant de triplets que de calques, comme suit: ;; Triplet == (calque selection-set hasLineOrArc) ;; Filtrer les 3dPolyline et les 3DMesh (while (< i n) (setq objet (ssname ss i)) (setq objetGet (entget objet)) (setq hasLineOrArc (if (member (strcase (cdr (assoc 0 objetGet)) t) '("arc" "line") ) ;_ Fin de member t nil ) ;_ Fin de if ) ;_ Fin de setq (setq layer (cdr (assoc 8 objetGet))) (setq polylineFlag (cdr (assoc 70 objetGet))) (setq is3DpolylineOr3Dmesh (and polylineFlag (> (boole 1 polylineFlag (+ 8 16)) 0) ) ;_ Fin de and ) ;_ Fin de setq (cond (is3DpolylineOr3Dmesh nil) ; Ignorer ((setq triplet1 (assoc layer triplets)) (setq triplet2 (list layer (ssadd objet (cadr triplet1)) (or hasLineOrArc (caddr triplet1)) ) ;_ Fin de list ) ;_ Fin de setq (setq triplets (subst triplet2 triplet1 triplets)) ) (t (setq triplet2 (list (list layer (ssadd objet (ssadd)) hasLineOrArc) ) ;_ Fin de list ) ;_ Fin de setq (setq triplets (append triplet2 triplets)) ) ) ;_ Fin de cond (setq i (1+ i)) ) ;_ Fin de while ;; Traiter un triplet après l'autre. (foreach triplet1 triplets (setq layer (car triplet1)) (setq ss (cadr triplet1)) (setq hasLineOrArc (caddr triplet1)) (princ (strcat "\n" (itoa (sslength ss)) " objets sélectionnés sur le calque '" layer "'." ) ;_ Fin de strcat ) ;_ Fin de princ (cond ((not ss) nil) ((< (sslength ss) 2) nil) ; Au moins 2 segments requis ((>= acadver "16.1") ; peditaccept déjà fixé à 1 (command "_pedit" "_multiple" ss "" "_join" fuzz "") ) (hasLineOrArc (command "_pedit" "_multiple" ss "" "_yes" "_join" fuzz "") ) (t (command "_pedit" "_multiple" ss "" "_join" fuzz "")) ) ;_ Fin de cond ) ;_ Fin de foreach (if (>= acadver "16.1") (setvar peditaccept oldPeditaccept) ) ;_ Fin de if (princ) ) Autocad 2021 - Revit 2022 - Windows 10
Oli553 Posté(e) le 15 novembre 2005 Posté(e) le 15 novembre 2005 Euh, le probleme est qu'il a une LT donc pas de lisp a moins d'avoir LT Extender? L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. "Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok. "ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana Ma bibliothèque de blocs électrique :symbole elec.dwg
rebcao Posté(e) le 15 novembre 2005 Posté(e) le 15 novembre 2005 voici une Macro simple : ^C^Cselect;\pedit;m;p;;J;;; 1. je sélectionne toutes les lignes concernés, puis ENTREE... c'est fait ou cette Macro plus radicale qui traite tout le dessin (peut-être plus risqué...!!!...) ^C^Cpedit;TOUT;p;;J;;; Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
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