(gile) Posté(e) le 28 juin 2009 Posté(e) le 28 juin 2009 Salut, J'ai essayé de faire quelque chose pour que des polylignes rectangulaires se comportent comme de "vrais" rectangles. http://img40.imageshack.us/img40/2363/rectangle.gif La commande TREC utilise la commande RECTANG et lie un réacteur à la polyligne crée qui lui redonnera sa géométrie rectangulaire après un étirement. La commande PL2REC invite l'utilisateur à sélectionner un rectangle (polyligne rectangulaire).Si la sélection est valide, un réacteur sera lié à la polyligne qui lui donnera un comportement de "vrai rectangle". La commande REC2PL supprime le réacteur lié à la polyligne sélectionnée. La commande RECREMOVEALL supprime tous les réacteurs "rectangle". NOTA : le LISP utilise des réacteurs persistant, il doit donc être chargé automatiquement à l'ouverture de chaque document. Je n'ai pas encore testé très en profondeur, les retours sont donc les bienvenus. EDIT 1 : copier un "vrai rectangle" génère un nouveau "vrai rectangle" (fonctionne aussi avec les commandes MIROIR et RESEAU) EDIT 2 : Nouvelle version (voir Réponse 3) EDIT 3 : réparé un dysfonctionnement suite à la pertinente remarque de Patrick_'reacteur'_35 EDIT 4 : réparé un dysfonctionnement signalé par Bonuscad (version 1.04) EDIT 5 : ajouté des contrôles au cas ou un LISP modifierait ou copierait des "rectangles" (version 1.05) Télecharger Rectangle1.05lsp Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
didier Posté(e) le 29 juin 2009 Posté(e) le 29 juin 2009 Bonjour une super idée que tu nous donne làje me permets de te faire les premières critiques tu me connais et le mot critique n'est pas péjoratifcar ce n'est ni basé sur la jalousie ni sur l'envie. tu devrais cacher ou refaire l'appel de la ligne de commande de la commande native "rectangle"car si l'utilisateur utilise une des options proposéesRaccord ou Chanfrein par exempleil n'y aura pas de "réactivité" de la figure créée. ensuite et c'est encore à prouver, mais à la suite d'une copiela réactivité de la figure est erratique.(les angles droits ne le sont plus) amicalement ps: j'aurais bien aimé le voir "chez moi", snifs [Edité le 29/6/2009 par didier] Éternel débutant... Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) le 29 juin 2009 Auteur Posté(e) le 29 juin 2009 Merci pour le retour, didier. tu devrais cacher ou refaire l'appel de la ligne de commande de la commande native "rectangle"car si l'utilisateur utilise une des options proposéesRaccord ou Chanfrein par exempleil n'y aura pas de "réactivité" de la figure créée. J'y pense, mais c'est de la "cosmétique", pour l'instant la routine contrôle la "validité" géométrique du rectangle et retourne un message si la figure n'est pas un "vrai rectangle" à 4 sommets.Je verrais ça plus tard, j'ai d'autres soucis, dont celui ci : ensuite et c'est encore à prouver, mais à la suite d'une copiela réactivité de la figure est erratique.(les angles droits ne le sont plus) Curieusement ça ne se produit pas systématiquement, j'essaye de trouver le pourquoi du comment. Et, j'ai un autre problème, en l'état la routine utilise des réacteurs persistants, or si on ouvre un fichier contenant des "rectangles" et que le LISP n'est pas chargé ça génèrera un erreur quand on modifiera un "rectangle". À suivre, donc... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 29 juin 2009 Auteur Posté(e) le 29 juin 2009 Nouvelle version, Les réacteurs ne sont plus persistants, à chaque enregistrement une liste des handles des "rectangles" liés à un réacteur est conservée dans un dictionnaire. Au chargement du LISP, des réacteurs sont reconstruits à partir de cette liste. J'ai modifié la routine IsRectangle qui évalue la géométrie de la polyligne, et depuis je n'arrive plus à reproduire le dysfonctionnement avec les copies.Merci de me dire si ce dysfonctionnement persistait. J'ai un peu revu TREC pour forcer les chanfreins et raccords à 0.0 tout en laissant les option de pour le deuxième coin. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 29 juin 2009 Posté(e) le 29 juin 2009 Bonjour à toutes et tous, super !!! Un "vrai rectangle" ???!! Mais, je n'ai pas tout compris,... :mad: Résultat de la dernière version => Commande: trecSpécifiez le premier coin: _.rectangleSpécifiez le premier coin ou [Chanfrein/Elévation/Raccord/Hauteur/Largeur]:Spécifiez un autre coin ou [Aire/Cotes/Rotation]:Commande:Commande: PL2RECSélectionnez un rectangle:Entité non valide.Commande:Commande: REC2PLSélectionnez un rectangle:Commande:Commande: RECREMOVEALLCommande: Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 29 juin 2009 Auteur Posté(e) le 29 juin 2009 Salut, TREC : tu fais un rectangle comme avec la commande native RECTANG. Ensuite si tu l'étires par une ou plusieurs poignées, il conservera une géométrie de rectangle (4 angles droits). PL2REC : tu sélectionnes une polyligne rectangulaire AutoCAD "normale", pour la transformer en "vrai rectangle" REC2PL : tu sélectionnes un "vrai rectangle" pour lui redonner le comportement d'une polyligne. RECREMOVEALL : comme REC2PL mais pour tous les "rectangles" du dessin. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 29 juin 2009 Posté(e) le 29 juin 2009 Sur ta deuxième version, Voici des message que j'ai automatiquement Commande: _list 1 trouvé(s) LWPOLYLINE Calque: "0" Espace: Espace objet Maintien = 226 FerméeEpaisseur constante 0.0000 zone 163072.4073 périmètre 1689.6955 au niveau du point X=1322.9196 Y=1336.0510 Z= 0.0000 au niveau du point X= 926.6506 Y= 959.8577 Z= 0.0000 au niveau du point X=1132.1326 Y= 743.4101 Z= 0.0000 au niveau du point X=1528.4016 Y=1119.6034 Z= 0.0000[surligneur]; erreur: Erreur Automation. Aucune description n'a été entrée.[/surligneur] Commande:Commande: ** ETIRER **Spécifiez le point d'étirement ou [point de Base/Copier/annUler/Quitter]: ; [surligneur]erreur: Erreur Automation. Aucune description n'a été entrée.[/surligneur] Étrange même sur la commande LISTE !!!! Bon courage avec les réacteurs, pour ma part je reste méfiant et réticent avec ceux-ci, j'hésite beaucoup à les employer (leur persistances peut engendrer bien des soucis).Il faut donc une programmation parfaite, mais je te fais confiance pour arriver a un tel résultat ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lili2006 Posté(e) le 29 juin 2009 Posté(e) le 29 juin 2009 Re, Comme d'hab, j'avais pas compris grand chose,... Merci (gile), fonctionne parfaitement ! :D Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Patrick_35 Posté(e) le 29 juin 2009 Posté(e) le 29 juin 2009 Salut (gile) Bravo pour tes réacteurs, tu es un chef.Cependant, j'aurai deux remarques La 1er est que si tu charges plusieurs fois le lisp, tu as plusieurs fois tes réacteurs. Ils s'additionnent Un exemple pour les voir(defun c:test(/ rea) (foreach rea (cdar (vlr-reactors :vlr-dwg-reactor)) (princ "\nFonction trouvé sur :vlr-dwg-reactor --> ") (princ (car (vlr-reactions rea))) ) (princ) ) La seconde est plus vicieuseJe décharge les réacteurs, fais bouger un grips (pour ne plus avoir de rectangle), relance les réacteurs, re-bouge un grips et je ne retrouve pas mon rectangle.C'est un cas extrême histoire de te faire griller quelques méninges ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
PHILPHIL Posté(e) le 29 juin 2009 Posté(e) le 29 juin 2009 hello gile sous AA2010 pas de souci apparent ca marche bien merci a+ phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 29 juin 2009 Auteur Posté(e) le 29 juin 2009 Merci à tous, Bonuscad,As tu testé dans un fichier vierge ? Patrick_35,Bien vu, j'avais pensé aux chargements multiples pour les réacteurs d'objet et j'avais oublié le dwg-reactor, c'est réparé. La seconde est plus vicieuseJe décharge les réacteurs, fais bouger un grips (pour ne plus avoir de rectangle), relance les réacteurs, re-bouge un grips et je ne retrouve pas mon rectangle.C'est un cas extrême histoire de te faire griller quelques méninges C'est normal qu'il ne soit plus "dynamique", ce n'est plus un rectangle.Il faudrait enregistrer aussi les sommets des "rectangles" dans le dictionnaire, mais j'ai pensé que cela relevait de la responsabilité de l'utilisateur de charger ou non le LISP. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 29 juin 2009 Posté(e) le 29 juin 2009 Bonuscad,As tu testé dans un fichier vierge ? Oui c'était dans un nouveau dessin sous MAP2009. J'ai lancé une 1ère fois TREC et dessiné un rectangle des plus basique (par 2 points), tout c'est bien passé.J'ai relancé une nouvelle fois, mais en passant par les options rotation et cotes, il m'a bien dessiné mon rectangle, mais là il c'est mis à délirer en me retournant ce message. J'en ai dessiné d'autre, qui malgré les messages se sont mis en place.Les réacteurs sur les grips fonctionnent aussi malgré ce message et quelque soit les rectangles sélectionnés. J'ai eu ce message jusqu'à la commande QUITTER le dessin?!? J'espère que ces quelques informations vont pouvoir t'aider. PS: J'édite mon propos, car je crois me souvenir que j'avais fait un ESC ou un U après coup, avant de relancer TREC en inversant le mode opératoire des options: Rotation Dimension (ça a peut être son importance pour reproduire l'erreur) HS: Je te félicite ici (pour ne pas polluer/troller ton post original dans le forum "emploi, monde du travail") pour ton initiative et te souhaite sincèrement plein de succès. [Edité le 29/6/2009 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
usegomme Posté(e) le 30 juin 2009 Posté(e) le 30 juin 2009 Super , c'est du costaud , merci (gile) et meilleurs voeux pour ta reconversion . Et j'aimerais bien que ma boite me paie une petite formation lisp , qui sait ?
bonuscad Posté(e) le 1 juillet 2009 Posté(e) le 1 juillet 2009 Avec la version 1.03, je n'ai pas réussi à reproduire l'erreur que j'avais avec la version précédente. Pour info.Cependant avec cette nouvelle version, j'ai remarqué que le "U" était mal supporté, mais n'a pas l'air à porter conséquence (enfin à voir...) Commande:TRECModes rectangle courants: Rotation=205.17479120 Spécifiez le premier coin: _.rectangleModes rectangle courants: Rotation=205.17479120 Spécifiez le premier coin ou [Chanfrein/Elévation/Raccord/Hauteur/Largeur]:Spécifiez un autre coin ou [Aire/Cotes/Rotation]:Commande:Commande: u (Expression Lisp) GROUPE [surligneur]Commande: ; erreur: Erreur Automation Objet effacé[/surligneur] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lili2006 Posté(e) le 1 juillet 2009 Posté(e) le 1 juillet 2009 Bonjour à toutes et tous, Tout simplement super !!! Patrick_'reacteur'_35 Elle est pas mal celle-là,... :D :P Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 1 juillet 2009 Auteur Posté(e) le 1 juillet 2009 Merci, J'ai réparé le dysfonctionnement signalé par Bonuscad (version 1.04). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 1 juillet 2009 Posté(e) le 1 juillet 2009 Re, Je n'arrive pas à avoir cette option => Spécifiez le premier coin ou [Chanfrein/Elévation/Raccord/Hauteur/Largeur]: ?? Réponse N° 13 de bonuscad Merci d'avance Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 1 juillet 2009 Auteur Posté(e) le 1 juillet 2009 L'option s'affiche, mais n'est pas accessible.C'est fait exprès pour éviter les rectangles avec chanfreins ou raccords. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 1 juillet 2009 Posté(e) le 1 juillet 2009 Re, Ok ! Merci (gile), Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 1 juillet 2009 Auteur Posté(e) le 1 juillet 2009 Nouvelle version !!! J'ai ajouté des contrôles :- si un LISP modifie un rectangle et si la polyligne a perdu sa géométrie rectangulaire, la réactivité est supprimée.- si un LISP copie un rectangle, la copie sera aussi réactive. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 24 juillet 2009 Auteur Posté(e) le 24 juillet 2009 C'est beaucoup plus simple avec 2010 et les contraintes paramétriques. (defun c:rect (/ pt) (and (setvar 'cmdecho 0) (vl-cmdf "_.rectangle" "_fillet" 0.0) (vl-cmdf) (setvar 'cmdecho 1) (setq pt (getpoint "\nSpécifiez le premier coin: ")) (vl-cmdf "_.rectangle" pt) (while (/= 0 (getvar 'cmdactive)) (vl-cmdf pause) ) (vl-cmdf "_AutoConstrain" (entlast) "") (vl-cmdf "_ConstraintBar" "_hide") ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 24 juillet 2009 Posté(e) le 24 juillet 2009 Bonjour à toutes et tous, En effet, :D Marche super bien ! Merci Gilles, 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