Didier-AD Posté(e) le 20 septembre 2007 Posté(e) le 20 septembre 2007 Salut,çà faisait longtemps que je n'étais pas venu vous voir, me revoici avec un petit problème je cherche une solution pour revenir à un état initial si une modification d'un objet par une command autocad ne me satisfait pas je prends un exemple simple pour faire comprendre mon problème imaginons une fonction qui crée un rectangle (lwpolyline) à partir de deux points de sa diagonale jusque là pas de problème.Dans cette fonction, on effectue un test : si le périmètre du rectangle est supérieur à une valeur maxi, on affiche un message et on ne dessine rien. jusque là, çà va encore je sais implémenter un réacteur sur commande de façon à ce que mon rectangle reste rectangle après avoir étiré un de ses coins. (avoir un comportement du rectangle un peu comme les fenêtre d'espace papier)jusque là çà va toujours là ou je bloque c'est que je voudrais que si le nouveau rectangle a un périmètre supérieur à la longueur maxi le rectangle initial se redessine ; autrement dit annuler complètement la commande ETIRER ou GRIP_STRETCH Inutile de m'écrire le code pour un rectangle, en réalité ma figure est beaucoup plus complexemais le problème reste le même : En gros, il s'agit de pouvoir lancer UNDO ou son équivalent dans un réacteur sur fin de commande (et si je pose la question c'est qu'autoCAD n'en veut pas) merci pour toute idée
Bred Posté(e) le 21 septembre 2007 Posté(e) le 21 septembre 2007 Salut,Je suis completement largué question réacteur, maisje voudrais que si le nouveau rectangle a un périmètre supérieur à la longueur maxi le rectangle initial se redessine Tu as fait :si le périmètre du rectangle est supérieur à une valeur maxi, on affiche un message et on ne dessine rien.jusque là, çà va encor Donc, au lieu de "dessinner rien" vu que le rectangle existe déjà, Tu faits une routine parrallèlle pour la modification, en enregistrant l'état initial du rectangle et le rappeler si tu dépasses la dimension... (je sais, c'est facile à dire sans donner d'exemple...) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Patrick_35 Posté(e) le 21 septembre 2007 Posté(e) le 21 septembre 2007 Salut Tu as pensé à(vl-cmdf "_.undo" "1")Tout en ayant pris soin d'utiliser auparavant les vla-startundomark/vla-endundomark @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Didier-AD Posté(e) le 21 septembre 2007 Auteur Posté(e) le 21 septembre 2007 Donc, au lieu de "dessinner rien" vu que le rectangle existe déjà, Tu faits une routine parrallèlle pour la modification, en enregistrant l'état initial du rectangle et le rappeler si tu dépasses la dimension... (je sais, c'est facile à dire sans donner d'exemple...) ben oui mais le rectangle initial il a été modifié par la commande, justement; quoi que..... en utilisant les réacteurs de début de commande et de fin de commande çà doit pouvoir marcher....çà nécessite toutefois de mémoriser l'état avant tout action...si j'ai rien de plus simple je creuse cette piste
Didier-AD Posté(e) le 21 septembre 2007 Auteur Posté(e) le 21 septembre 2007 Salut Tu as pensé à(vl-cmdf "_.undo" "1")Tout en ayant pris soin d'utiliser auparavant les vla-startundomark/vla-endundomark @+ Il y a une amélioration par rapport à (Command "_.Undo" "1") c'est que je n'ai plus de message d'erreur ; je pense donc qu'avec vl_cmdf AutoCAD sait qu'il n'a pas le droit de lancer une commande à l'intérieur d'un réacteur sur commande et donc il ne l'exécute pas par contre il n'annule pas la commande etirer merci quand même
(gile) Posté(e) le 21 septembre 2007 Posté(e) le 21 septembre 2007 Salut, c'est pas très "propre" mais tu peux peut-être - faire une copie de l'objet dans un :vlr-commandWillStart- dans le le vlr-commandEnded supprimer l'objet si la superficie est devenue trop grande, la copie sinon.- ne pas oublier un vlr-commandCancelled et un vlr-commandFailed qui suppriment aussi la copie. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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