
Didier-AD
Membres-
Compteur de contenus
130 -
Inscription
-
Dernière visite
Didier-AD's Achievements
Newbie (1/14)
0
Réputation sur la communauté
-
gérer une erreur sur un réacteur sur commande
Didier-AD a répondu à un(e) sujet de Didier-AD dans Pour aller plus loin en LISP
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 -
gérer une erreur sur un réacteur sur commande
Didier-AD a répondu à un(e) sujet de Didier-AD dans Pour aller plus loin en LISP
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 -
gérer une erreur sur un réacteur sur commande
Didier-AD a posté un sujet dans Pour aller plus loin en LISP
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 complexe mais 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 -
Salut, et si tu lances ta macro VBA avec AutoCAD et non pas avec le LISP, est-ce que le problème se produit également ? parce que dans ce cas, il faudrait voir du coté de ta macro....
-
bonjour Ben voilà qui simplifie le tout merci Gile
-
J'ai retrouvé la fonction c'est vl-symbol-name si les lignes de ton fichier sont de la forme 100-201 201-302 alors tu peux utiliser ce code modifié (defun c:modifietextes (/ nf fich sligne lligne js n ent) (setq nf (getfiled "Fichier de conversion" "" "TXT" 0) fich (open nf "r") ) (while (setq sligne (read-line fich)) (setq lligne (read (strcat "(" sligne ")"))) (if (= 'SYM (type (car lligne))) (setq lligne (mapcar 'vl-symbol-name lligne)) ) (setq js (ssget "X" (list (cons 0 "*TEXT") (cons 1 (car lligne)))) n 0 ) (repeat (if js (sslength js) 0) (setq ent (entget (ssname js n)) ent (subst (cons 1 (cadr lligne)) (assoc 1 ent) ent) n (1+ n) ) (entmod ent) ) ) (close fich) ) si par hasard, il existe des lignes où le tiret (-) n'existe pas alors, (setq lligne (read (strcat "(" sligne ")"))) va trouver des nombres et non plus des symboles et il faudra alors traiter différemment en cas de besoin, fais signe
-
Tu penses bien que j'ai essayé et çà marche j'ai cependant utilisé un fichier dans lequel il y a déjà les guillemets comme dans la question de départ si les guillemets ne sont pas présents dans le fichier, 100-002 est alors reconnu comme un symbole ; il faut alors utiliser une fonction vl dont j'ai oublié le nom pour transformer ce nom de symbole en chaine
-
Bonjour essaie çà, çà devrait marcher avec ce que tu demandes (defun c:modifietextes (/ nf fich sligne lligne js n ent) (setq nf (getfiled "Fichier de conversion" "" "TXT" 0) fich (open nf "r") ) (while (setq sligne (read-line fich)) (setq lligne (read (strcat "(" sligne ")")) js (ssget "X" (list (cons 0 "*TEXT") (cons 1 (car lligne)))) n 0 ) (repeat (if js (sslength js) 0) (setq ent (entget (ssname js n)) ent (subst (cons 1 (cadr lligne)) (assoc 1 ent) ent) n (1+ n) ) (entmod ent) ) ) (close fich) )
-
Routines pour TEXT/MTEXT - Inférieur/Supérieur
Didier-AD a répondu à un(e) sujet de lecrabe dans Routines LISP
Et même avec une orthographe correcte..... Cà c'est classe ! Bravo Bred. -
aide sur la fonction SSGET ou select ?
Didier-AD a répondu à un(e) sujet de Vannily dans Débuter en LISP
Bonjour, Dans les deux premiers exemples, tu utilises "_F" ou "_W" comme clef de sélection de mémoire "_F" signifie Fence ou trajet en Français "_W" signifie Window ou Fenêtre dans le premier cas, seuls les objets traversés par ton trajet, donc le segment défini par tes deux points sont sélectionnés dans le second cas, seuls les objets entièrement compris dans la fenêtre définie par tes deux points sont sélectionnés ton troisième essai correspond à une capture ; il est normal que tous les objets soient sélectionnés. bon courage -
Réacteurs et changement d\'onglet
Didier-AD a répondu à un(e) sujet de stephan35 dans Pour aller plus loin en LISP
il y a un réacteur sur le changement d'onglet qui est activable essaie ceci ; (vl-load-com) (vlr-miscellaneous-reactor nil (list (cons ':vlr-layoutSwitched 'essai))) (Defun essai (sert-a-rien llayout / ) (alert (car llayout)) ) ensuite tu peux utiliser les outils de gestion des présentations que j'ai déposé ici bon courage -
ETAT DE CALQUES ET DEROULANT
Didier-AD a répondu à un(e) sujet de whitesquare dans Pour aller plus loin en LISP
Waouh ! moi je n'aime pas çà les droits ne concernent pas que le nom du produit mais en général également les concepts donc les sources Si une société a les droits légaux sur des sources, l'utilisation et la modification de ces sources même dans un cadre communautaire ne me parait pas très orthodoxe/légale. Chad, avec tout le respect que je lui porte n'a pas été très rigoureux dans cette affaire.... -
C'est effectivement GRREAD qu'il te faut employer éventuellement associée à une boucle while (while (setq x (grread t)) (print (cadr x)) ) mais attention, tu perds alors les notions d'accrochage aux objets ou alors il te faut gérer toi même ceux ci..... pas simple bon courage
-
pour les JPG, tu choisis comme traceur "PublishToWebJPG.pc3" pour les WMF, le plus simple c'est la touche qui comlle ton écran sans le presse papier; après tu en fais ce que tu veux
-
ETAT DE CALQUES ET DEROULANT
Didier-AD a répondu à un(e) sujet de whitesquare dans Pour aller plus loin en LISP
pourquoi Ex ObjectDCL, il me semble que sur le site de DuctiSoft, on parle bien d'ObjectDCL et non pas d'OpenDCL