Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 30/08/2023 dans toutes les zones

  1. À l'expression : (initget "Oui Non") (setq rep1 (getkword "\nContinuer ? [Oui/Non] <Oui>: ")) On peut répondre : - soit "Oui" (ou "O") ce qui met la valeur de rep1 à "Oui" ; - soit "Non" (ou "N") ce qui met la valeur de rep1 à "Non" ; - soit faire "Entrée" ce qui met la valeur de rep1 à nil. On voit donc que si l'utilisateur veut continuer rep1 est égal à "Oui" ou nil. C'est dans le traitement conditionnel de cette entrée qu'il faut prendre en compte toutes les possibilités donc écrire : (if (or (= rep1 "Oui") (null rep1)) (progn ;si la réponse est oui ou nil, (initget "Oui Non") (setq rep2 (getkword "\nConserver l'ouverture? [Oui/Non] <Oui>: ")) (if (= rep2 "Non") (setq Ouv nil) ) (FISSURE) ;la commande est renouvelée (princ) ) (progn ;sinon (command "osmode" OS) ;Réactive l'ancien mode d'acroche objets de l'utilisateur (command "AUTOSNAP" AU) ;réactive l'ancien ssnapmode de l'utilisateur (setq Ouv nil) (princ) ) ) Ou plus simplement, parce que pour "Non" il n'y a qu'une réponse possible : (if (= rep1 "Non") (progn ;si la réponse est non, (command "osmode" OS) ;Réactive l'ancien mode d'acroche objets de l'utilisateur (command "AUTOSNAP" AU) ;réactive l'ancien ssnapmode de l'utilisateur (setq Ouv nil) (princ) ) (progn ;sinon (initget "Oui Non") (setq rep2 (getkword "\nConserver l'ouverture? [Oui/Non] <Oui>: ")) (if (= rep2 "Non") (setq Ouv nil) ) (FISSURE) ;la commande est renouvelée (princ) ) )
    1 point
  2. Coucou, Ce que (gile) cherchait à te faire comprendre ici c'est que faire une validation à vide avec un (getkword), et c'est de même avec la plupart des fonctions (get-) en général, retourne nil ! Autrement dit cela te retourne une entrée vide. Il faut savoir que la manière dont on écrit le texte d'un (getkword) n'est que pure syntaxe, mais cela ne signifie aucunement que c'est programmé nativement pour fonctionner ainsi. C'est simplement ainsi que AutoCAD fait la séparation entre simple texte, options et valeurs par défaut donc pour ne pas perdre l'utilisateur on copie cette syntaxe. Un simple exemple, sur ton (initget "Oui Non") (setq rep1 (getkword "\nContinuer ? [Oui/Non] <Oui>: ")) Écrire les options entre crochets et séparées par un slash est une simple écriture autocadienne vis-à-vis des options. Car en effet si tu écris juste cette ligne (setq rep1 (getkword "\nContinuer ? [Oui/Non] <Oui>: ")) les options vont-elles apparaître comme des options ? Non et ce malgré le fait que la syntaxe soit celle d'AutoCAD, n'est-ce pas ? Donc pour que le programme comprenne que la syntaxe [Oui/Non] doit être un ensemble d'options composé de Oui et Non, il y a besoin de le signifier nous même par de la programmation via (initget "Oui Non") Et bien pour les valeurs par défaut c'est pareil, si on ne programme pas une valeur par défaut, alors le programme ne pourra pas interpréter correctement ta syntaxe pour faire fonctionner ton programme comme souhaité. Or pour cela, il ne faut pas passer par (initget) mais justement comprendre ce que signifie réellement l'action de faire une validation à vide. Car pour (getkword), soit on répond via les options (et cela retourne donc l'option choisie), soit on rentre une chaîne de caractères arbitraire (et cela retourne donc une chaîne de caractères), soit on répond juste entrée (et cela retourne nil). Autrement dit, dans tous les cas un (getkword) retourne une chaîne de caractères SAUF si on fait une validation à vide (équivalent à choisir la valeur par défaut). En comprenant alors cette subtilité, tu peux donc mieux comprendre la réponse de VDH-Bruno : (initget "Oui Non") (setq rep1 (cond ((getkword "\nContinuer ? [Oui/Non] <Oui>: ")) ("Oui"))) impliquant ainsi d'affecter à la variable 'rep1', soit n'importe quelle chaîne de caractères retournée par (getkword) soit la chaîne de caractères "Oui" dans le cas où le (getkword) retourne nil (correspondant à un utilisateur ayant souhaité choisir la valeur par défaut). A titre d'exemple, cela fonctionne également (initget "Oui Non") (setq rep1 (cond ((getkword "\nContinuer ? [Oui/Non] <?>: ")) ("?"))) ici la valeur par défaut "?" n'apparaît pas dans le (initget) et pourtant elle fonctionne et remplie parfaitement sont rôle de valeur par défaut. Bisous, Luna
    1 point
  3. Soit tu peux faire le manuellement dans l'éditeur de bloc et rendre la définition d'attribut invisible puis utiliser ATTSYNC dans le dessin Soit réutiliser le code où j'ai rendu l'attribut invisible (j'ai simplement passé le code dxf 70 de 0 à 1 pour la définition d'attribut et l'attribut lors de l'insertion) pour que ce soit effectif dans d'autres dessins n'ayant pas encore ce bloc PCENTRE. rac_circuit_panneaux.lsp
    1 point
  4. Après réponse du support, je vous fais un petit retour concernant la solution au problème. Lorsqu'on travaille avec plusieurs projets et plusieurs origines de projets (Projet Covadis avec bibliothèque différentes), on récupère un maximum de matériaux mal renseignés. Pour régler le problème, il suffit de supprimer les matériaux inutiles: - Commande : MATDELETEMULTI Exemple de fenêtre Le bordereau rame moins
    1 point
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité