Aller au contenu

VDH-Bruno

Membres
  • Compteur de contenus

    1 146
  • Inscription

  • Dernière visite

  • Jours gagnés

    20

Tout ce qui a été posté par VDH-Bruno

  1. Bonjour à tous, Pour tester la blague du jour (testé sous AutoCAD 2007) avec ssget et les noms de calque avec un "[", créez par exemple un calque Calque1[toto], dessinez des objets dedans, puis essayez en lisp de lancer une sélection par calque au moyen de la fonction ssget :angry: . Ou au moyen de la ligne de code suivant: (sssetfirst nil (ssget "_X" (list (assoc 8 (entget (car (entsel "Effectuer une sélection par calque => Choix d'un objet :"))))))) A+ (Ps: Je suppose qu'il en va de même sur les autres versions..) EDIT: modifié crochet droit [ par crochet gauche ]dans le titre et le message
  2. Il n'y a pas de quoi, l'énoncé était clair, bon teste à toi. J'en suis convaincu, mais les traducteurs automatiques me fatiguent, j'ai une compréhension très partiel des questions, ce qui me relègue au rang de spectateur, comme c'est frustrant de ne pouvoir échanger, j'y suis rarement. Mais j'ai beaucoup de plaisir à vous y voir toi et quelques autres de CADxp.
  3. T'inquiète ça va pas durer, disons que je profite de ce début d'année pour me refaire un peu la main (j'ai peu lispé sur l'année 2013 et 2014). Tu es bien visible également, il me semble même t'apercevoir à l'international, moi j'y suis pas . A+
  4. Bonjour et bienvenu Rapidement à la lecture de ton énoncé, un petit lisp à tester... Tape insDesc2 pour l'exécuter une fois le lisp chargé. (defun c:insDesc2 (/ ss i e valDesc2 e-dxf ptins rot zdir) ;; GetAttribs (gile) ;; Retourne une liste de paire pointées (TAG . Value) par attribut contenus dans le bloc ;; ;; Argument ;; ent : le nom d'entité (ENAME) de la référence de bloc (defun GetAttribs (ent / elst lst) (setq ent (entnext ent)) (while (= "ATTRIB" (cdr (assoc 0 (setq elst (entget ent))))) (setq lst (cons (cons (cdr (assoc 2 elst)) (cdr (assoc 1 elst))) lst) ent (entnext ent) ) ) (reverse lst) ) ;; insertion du bloc (retourne le ENAME) (defun insblk (bname ins ang zdir) (entmakex (list '(0 . "INSERT") (cons 2 bname) (cons 10 ins) (cons 50 ang) (cons 210 zdir) ) ) ) ;; Programme principal (setq ss (ssget "_X" '((0 . "INSERT") (2 . "SRVPNO2")))) (repeat (setq i (if ss (sslength ss) 0)) (setq e (ssname ss (setq i (1- i))) valDesc2 (cdr (assoc "DESC2" (getattribs e))) e-dxf (entget e) ptins (cdr (assoc 10 e-dxf)) rot (cdr (assoc 50 e-dxf)) zdir (cdr (assoc 210 e-dxf)) ) (if (and valDesc2 (tblsearch "block" valDesc2)) (insblk valDesc2 ptins rot zdir) ) ) (princ) ) A+
  5. Ca rejoint surtout, celle qui est en conclusion sur le lien de didier et qui est issus de cette discussion http://cadxp.com/topic/40288-altitude-de-point-sur-pt/page__view__findpost__p__224952 , je m'en suis aperçu après avoir posté. Dans ce lien tu trouveras un fichier qui résume ma prose, si tu veux tester.. A+
  6. Je m'incline ;), bravo ça marche bien, de mon coté je n'avais pas trouvé de solution satisfaisante.. A+ (Ps: pour ceux qui sont sous 2012 et avant, remplacer vlax-machine-product-key par vlax-product-key pour tester)
  7. Bonjour, Une petite précision tout de même, normalement la valeur affiché se remet à jour, tu as du louper un truc, mais effectivement cela ne réglera pas le souci du SCU. Donc pour travailler dans un système relatif, cette fois si il ne faut plus travailler les formules au niveau de la définition du bloc, mais plutôt au niveau des références de bloc inséré dans ton dessin. Insère un premier bloc (référence 1) correspondant à un niveau connu sur ton élévation et saisie sa valeur. Puis tu insères un second bloc (référence 2) dans le quel tu inscris dans ton attribut la formule de champ suivante: "Valeur référence 1" + "Position Y de la référence 2" – "Position Y de la référence 1" Par la suite pour ne pas avoir à te refaire la formule, copie la référence 2 sur ton élévation pour travailler.. Maintenant que tu travailles en relatif suivant Y, tu n'es plus dépendant du SCG,ni du SCU. Tu peux ainsi coter d'autres coupes sur le même dessin disposé n'importe où sur ton plan, il suffit de copier la référence de bloc servant de valeur de référence (référence 1) avec une des autres références. A+ (Ps: cette méthode rejoins un peu le lien posté par Didier)
  8. Bonsoir, Ou plus simplement avec le champ "position Y" de l'EspaceRéservéBloc => A+
  9. Oui, c'est un exemple pour montrer comment écrire le champ dans la référence, je n'ai pas modifié la définition d'origine du bloc, effectivement je laisse se soin à Tristan d'inclure ou pas sa définition d'attribut dans ses actions d'étirements. A+
  10. Salut Lilian, Oui, c'est comme précisé par Patrick_35, dans la BD des Formats supplémentaire comme pour les cotations tu peux ajouter préfixe/suffixe, facteur de conversion et suppression des zéros à ton résultat... Cette discussion doit te rappeler étrangement nos dernier échanges avec la formule qui référence une définition d'attribut (ATTDEF), alors que l'on souhaite d'effectuer un calcul avec la valeur contenue dans une référence d'attribut (ATTRIB). A+
  11. Bonjour, A tester cette référence de bloc, si cela te convient, j'ai repris ta formule pour qu'elle se calcule en fonction de tes paramètres dynamique distance1 x distance3 multiplié par la valeur de ton attribut Ht, ta formule sera mis à jour après chaque regen. A+ test.zip
  12. Salut, Toujours 128 jeu de sélection chez moi ;) Effectivement la limite de 128 js est valable pour l'ensemble des documents de la session AutoCAD,je n'y avais jamais prêté attention, merci. A+
  13. Bonjour GEGEMATIC, Pour le retour Chez moi pas besoin de = car avec eq aucun problème.. Et _$ ; erreur: dépassement du nombre maximum de jeux de sélection _$ $ (length (c:nomdunJS!)) 128 Me retourne bien 128 jeu de sélection A+ (ps: Attention à la localisation des variables dans la fonction nomdunJS!)
  14. VDH-Bruno

    PB CHAMP DANS BLOC

    Bonjour Lilian, Tout d'abord pour l'explication, j'ai volontairement effacé le champ que tu avais créé dans la définition du bloc "RV Pluvial Betec", car à ce niveau la formule ne travaille que sur la valeur définie dans la définition d'attribut (même si tu coche "Afficher la valeur de référence du bloc"). Pour créer un bloc avec une ligne de repère contenant un champ qui se calcule automatiquement sur les références d'attributs: En 1: J'ai créé une ligne de repère (_qleader) et en paramètre j'ai choisi ton bloc "RV Pluvial Betec". En 2: J'ai édité la référence de bloc inséré, puis dans l'attribut Profondeur, j'ai définie la formule en pointant sur les 2 autres références d'attribut. En 3: J'ai créé un nouveau bloc "LRe+-RV Pluvial Betec" contenant la ligne de repère plus la référence de bloc contenant le champ. Puis c'est ce bloc "imbriqué" que j'insère dans le dessin en le décomposant à l'insertion (et en ayant définie l'extrémité de la ligne de repère comme point d''insertion). Perso, en général je fais un wbloc vers ma bibliothèque de blocs, que j'insère ensuite via le DesignCenter, mais avec la palette cela ne devrait pas poser de problème à condition d'y insérer le bon bloc (c.a.d. LRe+-RV Pluvial Betec). A+ Bruno
  15. Bonjour, Je confirme c'est dommage, le fonctionnement est identique aux blocs traditionnels… A+
  16. VDH-Bruno

    PB CHAMP DANS BLOC

    Re, Rien n'a été perdu, car il n'y a pas de formule dans la définition de l'attribut qui compose le bloc. La formule n'existe que dans les références du bloc sur le fichier dessin1.dwg que je t'ai retourné, vérifie avec l'éditeur de bloc pour t'en convaincre.. A+
  17. Bonjour, Egalement en natif, je ferais: 1- commande -SCU option Objet et je clique sur le segment noir 2- commande LIGNE du point obligé et en second point saisie d'une coordonnées polaires relative, exemple @1000<-10 (ou @1000<10) Après soit avec les grip ou la commande ajuster/prolonger je ramène le dernier point à l'intersection. A+
  18. VDH-Bruno

    PB CHAMP DANS BLOC

    Re, De retour sur le forum ;) , je viens de parcourir le fil de cette discussion, ce que tu écris me laisse penser que tu as bon, seul ta capture d'écran sur le dernier message me chiffonne… Car si tu as sélectionné ta référence de bloc, la capture d'écran devrait ressembler plus à ce qui suit et tu devrais obtenir les paramètres de champ de ta référence de bloc (donc tes valeurs d'attributs) plutôt que celle de la ligne de repère multiple. Hélas je ne peux vérifier ce dernier point avec ma version 2007 qui ne support que les lignes de repères uniques. Je te joint mon fichier test qui fonctionne mais avec des lignes de repère "classique". L'explication est sans doute dans la différence entre ligne de repère et les ligne de repère multiple. Dessin1.zip A+
  19. VDH-Bruno

    Bonne année!

    Meilleurs vœux et bonne année 2015.
  20. VDH-Bruno

    PB CHAMP DANS BLOC

    Salut, Cela marche très bien chez moi. La formule ne doit pas être intégré dans la définition du bloc, mais doit être créé dans la référence de bloc attaché à la ligne de repère si tu veux une mise à jour automatique. A+ (Ps: Je suis en retard pour le pôt de fin d'année de l'entreprise si tu as besoin de plus d'explication je reprendrai la discussion plus tard)
  21. VDH-Bruno

    PB CHAMP DANS BLOC

    Bonsoir Lilian Dans ta formule tu dois pointer sur les attributs de la référence de bloc et non sur la définition de ton bloc Si tu as 5mn regarde le lien suivant dans son intégralité http://cadxp.com/topic/37644-calcul-entre-attributs-dans-bloc/ A+ (Ps: Tu es présent sur le fil de discussion en 12ème position ;) )
  22. entmake, entmakex, entmod (petit décryptage) - La création de calque implicite Lors de la création ou la modification d'entités, il n'est pas indispensable de créer préalablement le calque de destination de l'entité, car ces trois fonctions créent de façon implicite le calque de destination d'une entité graphique, s'il n'est pas présent dans le dessin. Ex: Création d'un cercle sur le calque "MonCercle". (entmake (list '(0 . "CIRCLE") '(8 . "MonCercle") (cons 10 (setq cen (getpoint "\nCentre du cercle: "))) (cons 40 (getdist cen "\nEntrez le rayon: ")) ) ) - Code DXF en doublon lors de la construction d'une liste de définition d'entité Lors de la construction d'une liste de définition d'entité, dans le cas de code en doublon c'est le dernier code de groupe qui est mémorisé les précédents sont ignoré… Ex: Création d'une ligne avec 2 codes 62 (couleur) et 2 codes 8 (calque) (entget (entmakex (list '(0 . "LINE") '(8 . "0") (cons 10 (setq pt (getpoint))) '(62 . 5) (cons 11 (getpoint pt)) '(62 . 3) '(8 . "MaLigne") ) ) ) Seul la dernière entré pour le code 62 et 8 a été retenu - Application à la fonction entmod De ce qui précède, on comprend mieux pourquoi il est possible de modifier une définition d'entité seulement par ajout de propriétés à la définition existante. Sans passer par la fonction de substitution subst et sans devoir tester la présence ou non de codes DXF facultatif. Ex: Modification du calque, de la couleur et des coordonnées d'un sommet de la ligne précédemment dessiné par ajout au moyen de la fonction append des nouvelles définitions (entmod (append (entget (entlast)) (list '(62 . 7) '(8 . "MonNouveauCalque") (cons 10 (getpoint))) ) ) Attention toutefois à la valeur de retour qui correspond à la liste transmis en argument et pas forcément à la nouvelle définition de l'entité..
  23. VDH-Bruno

    Dentelle

    C'est beau, je n'ai pu m'empêcher d'y ajouter une petite touche perso, Merci zebulon_ (defun c:dentelle () (setq PAS 0.70) (setq PT1 '(0 0)) (command "_zoom" "_non" '(0. 0.) "_non" '(6. 11.9)) (repeat 18 (setq PT2 '(6 0)) (repeat 18 (command "_line" "_non" PT1 "_non" PT2 "") (command "_.delay" 25) (setq PT2 (polar PT2 (/ pi 2) PAS)) ) (setq PT1 (polar PT1 (/ pi 2) PAS)) ) (princ) )
  24. Fonction vl-sort Beaucoup savent déjà que la fonction vl-sort supprime les doublons avec les nombres entier _$ (vl-sort '(1 3.1 5 6.1 5 6.1 1) '<) (1 3.1 5 6.1 6.1) Une rapide conversion des listes de nombres en réels contourne le soucis: _$ (vl-sort (mapcar 'float '(1 3.1 5 6.1 5 6.1 1)) '<) (1.0 1.0 3.1 5.0 5.0 6.1 6.1) Peut être que beaucoup moins savent qu'il en vat de même avec des valeurs T et nil puissent qu'elles sont également supporté dans les comparaisons (cf post précédent) _$ (vl-sort '(nil T nil T nil) '>) (T nil) A noter que T seul est cette fois supporté :blink: _$ (vl-sort '(T T T) '>) (T)
  25. Les fonctions "usuel" à arguments indéterminés du type (function [arg ...]) J'avais déjà signalé ici concernant les fonctions + et – limité à 255 arguments, ceci est également valable pour l'ensemble des fonctions "usuel" (ex: +, -, max, min, append..). Ces fonctions retournent aux 256ème arguments le message d'erreur ;erreur: limite interne: nombre d'arguments trop important dans l'appel de la fonction: function Exemple: $ (eval (cons 'strcat (repeat 255 (setq L255str (cons "a" L255str))))) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" $ (eval (cons 'strcat (repeat 256 (setq L256str (cons "a" L256str))))) ; erreur: limite interne: nombre d'arguments trop important dans l'appel de la fonction: STRCAT _$ Evidemment cette limitation ne s'applique pas aux fonctions qualifié de forme spécial <special form> que sont les fonctions structurante du langage comme defun, progn etc..
×
×
  • 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é