lecrabe Posté(e) le 16 février 2011 Posté(e) le 16 février 2011 Hello SVP j'ai besoin d'un petit programme et je n'ai pas trouve ! Pourvoir selectionner N polylignes 2D (closes) par la selection AutoCAD classique Question 1 : valeur de decalage (UN par defaut) Question 2 : largeur globale de la polyligne (Zero par defaut) Question 3 : Interieur ou Exterieur (Interieur par defaut) Question 4 : generation sur le calque d'origine de chaque polyligne ou sur le calque courant(Calque courant par defaut) Resultat : Generation de N polylignes sur les bons calques ... Merci d'avance de votre aide ! :) Le Decapode Autodesk Expert Elite Team
(gile) Posté(e) le 18 février 2011 Posté(e) le 18 février 2011 Salut, (defun c:ploff (/ ss ofd wid int lay o1 o2 a1 a2 ofl) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (if (and (setq ss (ssget '((0 . "LWPOLYLINE") (-4 . "&") (70 . 1)))) (setq ofd (cond ((getdist "\nDistance de décalage : ")) (1.0) ) ) (setq wid (cond ((getdist "\nLargeur globale : ")) (0.0) ) ) (or (initget "Intérieur Extérieur") (setq int (cond ((getkword "\nDécalage [intérieur/Extérieur] : ")) ("Intérieur") ) ) ) (or (initget "Source Courant") (setq lay (cond ((getkword "\nCalque [source/Courant] : ")) ("Courant") ) ) ) ) (progn (vla-StartUndoMark *acdoc*) (vlax-for pl (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (setq a0 (vla-get-Area pl)) (vl-catch-all-apply '(lambda () (setq off (vlax-invoke pl 'Offset ofd)))) (if off (if (or (and (= int "Intérieur") ( (and (= int "Extérieur") ( ) (progn (mapcar 'vla-Delete off) (vl-catch-all-apply '(lambda () (setq off (vlax-invoke pl 'Offset (- ofd))))) ) ) (progn (vl-catch-all-apply '(lambda () (setq off (vlax-invoke pl 'Offset (- ofd))))) (if (and off (or (and (= int "Intérieur") ( (and (= int "Extérieur") ( ) ) (progn (mapcar 'vla-Delete off) (setq off nil) ) ) ) ) (if off (foreach p off (vla-put-ConstantWidth p wid) (if (= lay "Courant") (vla-put-Layer p (getvar 'clayer)) ) ) ) ) (vla-delete ss) (vla-EndUndoMark *acdoc*) ) ) (princ) ) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 19 février 2011 Posté(e) le 19 février 2011 Bonjour à toutes et tous, Encore une routine géniale, :D Merci Gilles Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 19 février 2011 Posté(e) le 19 février 2011 Re, En testant un peu plus profondément, il semble que l'option "Source" ne fonctionne pas,...(Que le calque source soit actif ou non,..) Commande:PLOFFChoix des objets: 1 trouvé(s) Choix des objets: Distance de décalage : Largeur globale : Décalage [intérieur/Extérieur] : E Calque [source/Courant] : S; erreur: Une exception s'est produite Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 19 février 2011 Posté(e) le 19 février 2011 Salut, Je ne pense pas que l'erreur vienne de l'option Source ou Courant mais plutôt d'une polyligne 'croisée'. J'ai ajouté une gestion des erreurs pour que la routine ne s'arrête pas si une telle polyligne est rencontrée. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 19 février 2011 Posté(e) le 19 février 2011 Re, J'ai rencontré cette erreur sur le même fichier que posté ici Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 19 février 2011 Posté(e) le 19 février 2011 Re, Avec la nouvelle version, sur ce fichier, j'ai toujours : Commande:Commande: (LOAD "D:/AUTOCAD -PERSONNALISATION/PROG PERSOS/ploff.lsp") C:PLOFF Commande: ploff Choix des objets: 1 trouvé(s) Choix des objets: Distance de décalage : Largeur globale : Décalage [intérieur/Extérieur] : E Calque [source/Courant] : S; erreur: Une exception s'est produite Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
chris_mtp Posté(e) le 19 février 2011 Posté(e) le 19 février 2011 Bonjour, Je n'ai pas de problème de mon côté comme l'indique LilliTesté sur Autocad v2010 fullPar contre, avec le fichier de Lilli, il me semble qu'il y ait un problème mais quoi ?Je vais essayer de voir plus en détail John [Edité le 19/2/2011 par chris_mtp]
(gile) Posté(e) le 20 février 2011 Posté(e) le 20 février 2011 Au temps pour moi...Je ne sais pas ce que j'ai foutu hier soir, mais le code n'avais pas été modifié. Cette fois c'est fait. Dans tout les cas, le problème était bien dû au fait que la décalage n'est pas possible (valeur trop grande pour un décalage intérieur ou polyligne croisée). Je pense que ces cas sont maintenant traités correctement. PS: pour les smileys, il suffit de cocher : "Désactiver les smileys". Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 20 février 2011 Posté(e) le 20 février 2011 Bonjour à toutes et tous, Salut Gilles, valeur trop grande pour un décalage intérieur Oui, mais c'est vers l'extérieur que j'avais tenté le décalage,... Décalage [intérieur/Extérieur] : E Calque [source/Courant] : S; erreur: Une exception s'est produite Semble bien fonctionner maintenant. Merci Gilles, excellente cette routine aussi,... PS: PS: pour les smileys, il suffit de cocher : "Désactiver les smileys". Ils le sont pourtant par défaut chez moi,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 20 février 2011 Posté(e) le 20 février 2011 valeur trop grande pour un décalage intérieur Oui, mais c'est vers l'extérieur que j'avais tenté le décalage,... Dans son ancienne version la routine faisait systématiquement le décalage des deux côtés et ne conservait que celui qui correspondait à l'option choisie. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 20 février 2011 Posté(e) le 20 février 2011 Re, Ok ! Donc, si le décalage vers l'intérieur n'étais pas possible, elle ne le faisait pas non plus vers l'extérieur ? Tu as donc modifié ce fonctionnement sur la dernière mouture ? Merci encore, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lecrabe Posté(e) le 20 février 2011 Auteur Posté(e) le 20 février 2011 Hello N'ayant pas d'AutoCAD (ou plutot de MAP) sous la main ce WE, je n'ai pas encore teste , sorry !Mais au vu des reponses, il semblerait que ta routine soit comme d'habitude "Nickel-Chrome"Je teste en debut de semaine sur de multiples versions de MAP 32 bits... J'imagine que tu as teste avec ton AutoCAD 2010 ou 2011 64 bits ? Par contre, SVP je me permet de te demander "encore" une autre routine, car dans tes commentaires, tu arrives a detecter si une polyligne se croise (effet papillon) ou pas !et ca c'est un gros souci recurrent ! Donc une simple routine PL_PAPILLON qui selectionne (ou force dans une couleur particuliere) dans le jeu de selection de N polylignes 2D (closes ou pas), les polylignes qui se croisent serait TIP-TOP ! Ainsi apres correction de ces polylignes, on lancera ta routine PLOFF ... Encore MERCI pour efficacite et rapidite, Bon Dimanche, Le Decapode PS: chui bien content que d'autres apprecient cette routine ! Autodesk Expert Elite Team
lili2006 Posté(e) le 20 février 2011 Posté(e) le 20 février 2011 Re, Salut Patrice, comme d'habitude "Nickel-Chrome" Et comme d'habitude ton cahier des charges est "Nickel-Chrome" Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lecrabe Posté(e) le 20 février 2011 Auteur Posté(e) le 20 février 2011 Hello Merci LIL mais ecrire un CDC/CCTP correct, c facile ! Developper une super routine comme sait si bien le faire Gilles, c quand meme beaucoup moins facile !!! Merci a tous, le Decapode Autodesk Expert Elite Team
(gile) Posté(e) le 20 février 2011 Posté(e) le 20 février 2011 Re, La routine suivante conserve en surbrillance les polylignes croisées ou ayant des sommets superposés.Sélectionner une polyligne en surbrillance (pour inspecter ses sommets par exemple) puis faire echap supprime la surbrillance pour celle-ci.Faire REGEN pour supprimer la surbrillance de toutes les polylignes. (defun c:PL_PAPILLON (/ ss cnt) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (if (ssget '((0 . "LWPOLYLINE"))) (progn (vlax-for pl (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (if (/= (/ (length (vlax-invoke pl 'IntersectWith pl acExtendNone)) 3) (if (= (vla-get-Closed pl) :vlax-true) (/ (length (vlax-get pl 'Coordinates)) 2) (- (/ (length (vlax-get pl 'Coordinates)) 2) 2) ) ) (vla-HighLight pl :vlax-true) ) ) (vla-delete ss) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 20 février 2011 Auteur Posté(e) le 20 février 2011 Hello Un rapide test (sous MAP 2008) semble montrer que POL_PAPILLON fonctionne bien ! Cependant SVP serait il possible de recuperer les polylignes "defectueuses" dans le jeu de selection PRECEDENT (et non pas toutes les polylignes selectionnees au depart) !? Ainsi on pourra envisager un CHPROP, WBLOC, EFFACER en passant l'option P ... Encore Merci pour ta promptitude et ton efficacite, Le Decapode Autodesk Expert Elite Team
lecrabe Posté(e) le 21 février 2011 Auteur Posté(e) le 21 février 2011 Hello Gilles Mes tests montrent un autre petit probleme avec POL_PAPILLON :o Bien sur tu ne traites que les Polylignes non lissees et non splinees (ca ne me gene pas du tout) et des qu'il y a un quelconque croisement (meme microscopique) tu le trouves !- Je suis impressionne car meme avec un croisement a 0.000001 ca marche ! :) Mais j'ai fais une polyligne qui revient toucher un segment deja existant par proche et qui repart normalement et qui n'a bien sur AUCUN croisement et ta routine ne la trouve pas, ce qui est NORMAL ! Mais dans certains cas, il faudrait traiter ce genre de cas particulier comme un croisement, donc SVP je te demande de poser une petite question supplementaire en debut de routine - Considerer ces points multiples comme des croisement (O/N) - valeur par defaut = N et bien sur je desire toujours obtenir en sortie un jeu de selection classique pour pouvoir utiliser l'option P (comme precedent) dans la commande suivante ... Encore Mille Mercis pour ton efficacite et ta gentillesse, le Decapode Autodesk Expert Elite Team
lecrabe Posté(e) le 8 mars 2011 Auteur Posté(e) le 8 mars 2011 Hello Un petit UP pour Gilles si jamais il passe par la !? *** 1 *** Micro-micro Modif ***SVP pourrais je obtenir une selection par P (apres execution de ta routine POL_PAPILLON) des polylignes se croisant (effet papillon)pour faire apres un deplacer, effacer, chprop avec l'option P *** 2 *** Modif plsu consequente ***Poser la question "Detection des superpositions (O/N) - Valuer par defaut = Oui " Sous entendu si lors du dessin de la polyligne, je reviens "dessus" par un accrochage EXTremite ou PROche, la routine POL_PAPILLON ne le voit pas ! Ce qui me semble normal car il n'y a pas eu de VERITABLE croisement ! Merci d'avance, le Decapode Autodesk Expert Elite Team
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