Aller au contenu

GEGEMATIC

Membres
  • Compteur de contenus

    1 416
  • Inscription

  • Dernière visite

  • Jours gagnés

    19

Tout ce qui a été posté par GEGEMATIC

  1. Merci à tous, Finalement, c'est justement le coté "non programmation" qui m'interresse, il y a parfois des fonctionnalités d'Autocad qui ne mènent à rien, parce qu'au final elles ne sont pas stables, où qu'elles cachent un inconvénient majeur: par exemple - les multilignes, que j'utilise avec parcimonie car elles ne sont pas souples d'édition, et qu'elles ne permettent pas les arcs - Les jeux de feuilles, qui sont des outils fantastiques, mais dont la mise à jour est fastidieuse, et qui ont (avaient ??) l’inconvénient de se substituer à la liste des derniers dessins: c'est une technique que je réutiliserai pour de gros projets avec rendu en A3, si je sais que j'aurai une source de fichiers disparates, un nombre de présentations stable, et un nombre d'indice important: pour un projet lambda, j'irai plus vite en bidouillant l'assemblage de mes pdf. Les déboires des annotations à leur sortie m'ont fait craindre ce genre de voie sans issue. mais à vous entendre, c'est un eldorado ... par contre, je vais suivre la mise en garde du crabe, parce que j'aurai souvent plusieurs milliers d'annotations, alors il faut que je regarde comment ça réagit ... Gérald
  2. Merci le crabe d'avoir relancé le sujet, et merci olivier d'avoir répondu ! Avec ce que tu dis, je pense que je vais faire un test en production, sachant qu'il me sera toujours possible de revenir en arrière mais que veut tu dire par : Gérald
  3. Pour info, j'ai ajouté un lien sur la page Gégé
  4. Salut, Gile aura peut être le temps de corriger ce bug en attendant tu peux peut être regarder ça powertextools tout dépends si tu veux incrémenter des blocs déja positionnés, ou alors incrémenter en même temps que tu insère le bloc. Sinon il me semble que Patrick35 a également des fonctions d'incrémentation. Gégé
  5. GEGEMATIC

    Type de ligne flèches

    salut, content que tu y sois arrivé, pour _MKLTYPE, j'ai vérifié sur Autocad 2014, elle marche bien chez moi, avec les expresstools installé: vérifie ton installation avec la commande EXPRESSTOOLS si elle ne marche pas, c'est qu'il y a un problème Gérald
  6. GEGEMATIC

    Type de ligne flèches

    salut, bloc dynamique ou lisp sont de bonnes pistes, mais tu peux aussi la faire avec un type de ligne, il suffit de créer une forme personnalisée avec ta flèche, puis de créer le type de ligne qui l'utilise. maintenant utiliser un symbole TTF ça a l'avantage (ou l’inconvénient) de ne pas être affecté par l’épaisseur de ligne. tu n'a qu'a composer ton type de ligne avec des segments de ligne et des texte ou des formes, puis utiliser la command express _MKLTYPE elle te donnera de bons paramètre pour X Y, le texte, etc ... mais il y a en général des codes faux, style U=0 tu enlève ces code pour obtenir un truc de ce genre : *G-eaux_FRUIT,Talus pentu ou mur avec fruit A,.541117,[">",ARIAL,s=.4,R=90.0],.050497,["|",ARIAL,s=.159663,R=0,Y=0.1],.093094 dans le cas ci dessus, le > est tourné de 90 taille 0.4, aucun décalage x y puis le | n'est pas tourné taille 0.159 décalage 0.1 en Y Avant d'éditer des fichier lin, je t'invite à installer Notepad ++ et utiliser mes Fichiers de coloration syntaxique pour l’environnement Autocad avec Notepad++, ça évite des heures à enrager parce qu’on voit pas qu'il manque une virgule ... Gégé
  7. Salut, Il faudrait déjà que tu nous donne la séquence de commandes qui t’amène au message d'erreur le fait qu'il n'y ait pas de pickset voudrait dire : - soit que les variables contenant les pickset sont localisées, mais ça voudrai dire que tu aurai un defun avec 128 variable à droite du slash ... pas trs plausible - soit que la fonction *error* contient une remise à nil d'une liste de variable - Soit, et la je n'ai pas le moyen de vérifier, que la limite de 128 js n'est pas propre au lisp, mais partagée avec Arx, auquel cas Geomap pourrait être la cause Gérald
  8. Salut, est-ce que tu as ce résultat après avoir eu le message d'erreur, ou à froid, parce-que là, tu n'a pas de pickset ! il faut faire la séquence de test lorsque tu as l'erreur Gérald
  9. Merci le crabe, c'est déjà une première info, je compte effectivement l'utiliser avec un nombre conséquent d'objet, donc le temps de réaction est assez important d'autres infos ?
  10. Bonjour, à leur arrivée, j'ai bien fait des tests sur les styles annotatifs comme ils ont à l'époque posé pas mal de problèmes, je ne les ai pas utilisé. qu'en ait-il aujourd'hui, avec la 2015 ? leur compatibilité avec la programation, les bugs, leur gestion, la saisie, merci de vos retours Gérald
  11. salut, ce matin j'ai toujours 126 js, mais par contre eq fonctionne ... par contre il est a noter que le nombre de js est fixé pour la session autocad, et non par dessin Gérald
  12. salut, merci pour le retour, C'est curieux, je referais le test demain, et je ne suis pas sur d'obtenir les même résultats. parfois il faut quitter windows pour qu'autocad re-marche normalement a+ Gérald
  13. salut, quand tu as l'erreur, tu colle ce code dans la fenêtre texte: (foreach i (atoms-family 0) (setq iType (type (eval i))) (if (setq tempList (assoc iType TypeList)) (setq TypeList (subst (cons iType (1+ (cdr tempList))) tempList TypeList)) (setq TypeList (cons (cons iType 1) TypeList)) ) ) tu devrais obtenir un truc comme ça : ((FILE . 1) (PICKSET . 126) (LIST . 52) (VLA-OBJECT . 13) (VLR-Command-Reactor . 1) (REAL . 2) (ENAME . 4) (STR . 43) (SYM . 157) (SUBR . 5985) (EXRXSUBR . 397) (INT . 970)) remarque bien que pickset = 126 /= 128, c'est curieux pour avoir le nom de tes js lisp : (defun c:nomdunJS! () (foreach i (atoms-family 0) (setq iname (vl-symbol-name i)) (setq iType (type (eval i))) (if (= 'PICKSET iType) (setq nomList (cons iname nomlist)) ) ) nomlist ) j'obtiens: ("SS1099" "SS1100" "SS1101" "SS1102" "SS1103" "SS1104" "SS1105" "SS1106" "SS1107" "SS1108" "SS1109" "SS1110" "SS1111" "SS1112" "SS1113" "SS1114" "SS1115" "SS1116" "SS1117" "SS1118" "SS1119" "SS1120" ...) après je lance : (j'ai remplacé le eq par un =, là ça marche, mais c'est bizare, le eq devrait marcher) (defun c:PurgeSelectionSets ( / picksets ) (foreach pickset (setq picksets (vl-remove-if-not '(lambda ( symbol ) (= 'pickset (type (eval symbol)))) (atoms-family 0) ) ) (princ (strcat "Purging <" (vl-symbol-name pickset) ">\n" ) ) (set pickset nil) ) (princ (strcat "Purged " (itoa (length picksets)) " selection set(s)." ) ) (princ) ) et j'obtiens : Purging <SS1101> Purging <SS1100> Purging <SS1099> Purged 120 selection set(s).
  14. salut, je ne vois pas dans ton code la multiplication des jeux de sélection dans la discussion, il y a plus haut un lien de gile, suit le et tu trouvera: - un lisp pour effacer les ss surnuméraires - un lisp pour les compter commence déjà par celui pour les compter, si tu vois qu'ils sont nombreux, il te faudra modifier le lisp de comptage pour qu'il te donne les nom de symboles correspondants, que tu recherchera dans tes lisp: si ça ne corresponds pas à tes lisps, ça veut dire que le problème vient des applications tierces, la tu ne peux rien faire, sauf lancer le lisp de nettoyage de temps en temps Gérald
  15. salut, il y a bien une boucle, mais je ne vois pas de ssget dans cette boucle ?
  16. Salut map ne devrait pas laisser trainer des jeux de sélection, geomap non plus, regarde du coté des tes lisps : faite une recherche sur tous les (SSGET s'il sont attribués à une variable: (setq uneVar (ssget ...)) regarde biens que la variable uneVar figure à droite du / du defun : (defun maCommande ( / myVar) si ça persiste, vérifie que tes ssget ne sont pas attribué à une variable incrémentée, genre (set (read (strcat "Prefix" (itoa i)))) avec une boucle qui incrémente le i bon courage, Gérald
  17. salut à tous, Gile à bien fait de déterrer ce sujet, je me rappelle que le setpropertyvalue avait été le seul moyen de changer la hauteur d'extrusion de solides, mais le plus dingue, sur une 2012, c'est que ça permet un truc infaisable en .Net (en 2012 du moins) passer du mode niveau ou attaché une xref (setpropertyvalue exref "IsFromOverlayReference" 0) marche nickel en fait c'est vraiment un gros regain d'interret pour le lisp, car pour moi le Net n'avait d’intérêt que lorsque j'étais bloqué par le lisp et par com Gérald
  18. salut à tous, je vois dans le mail de patrick_35 un peu de nostalgie quand il évoque ses 1er lisps ... moi j'ai un peu honte quand je les revois ! par contre, pour ce problème, le qbrick de Kamal Boutora devrait faire l'affaire Qbrick Gérald
  19. salut, dans ce code, il n'y a aucune fonction visual-lisp, celles qui commencent par vl-, vlr- , vla- ou vlax-. c'est tout. je pense qu'à l'époque, je bossais sur une v14, qui n'avait pas le visual-lisp en standard (il fallait l'installer à part, et perdu dans ma savoie, je n'étais même pas au courant ...) Gérald
  20. salut, tu as déterré un de mes très vieux lisp, (et pas un visual lisp) outre le fait qu'à l'époque il n'y avais pas la la notion de gripped dans sssetfirst, c'est pour ça que tu ne vois pas le résultat à l'écran, cette version n'étais pas aboutie, car elle ne marchera pas avec les blocs et autres entités complexes. Essaye plutôt la version actuelle : Gérald ;;************************************************************************* ;;§/SELECTIONS/ crée un jeu de selection des entités suivant un element/none (defun c:selafter ( / sel dep ) (setq dep (car (entsel "\nEntité limite"))) (setq sel (pw_selafter dep)) (sssetfirst sel sel ) ) ;;************************************************************************* ;;§/SELECTIONS/ selectionne les entités anterieures à l'entité dep/none ; (defun c:selbefore ( / dep sel ent ) (setq dep (car (entsel "\nEntité limite"))) (setq sel (pw_selbefore dep)) (sssetfirst sel sel ) ) ;;************************************************************************* ;;§/SELECTIONS/montre quelle est la dernière entité créé par les grips /none ; (defun c:showlast ( / sel) (setq sel (ssadd (entlast))) (sssetfirst sel sel) ) ;;************************************************************************* ;;§/SELECTIONS/ selectionne les entités anterieur à l'entité dep/dep ;; ne marche pas ! (defun pw_selbefore ( dep / ent sel etyp ) (setq ent (entnext)) (setq sel (ssadd ent)) (while (and (/= nil (setq ent (entnext ent)))(not (eq ent dep))) (setq etyp (cdr (assoc 0 (entget ent)))) (if (not (member etyp '("ATTRIB" "VERTEX" "SEQEND"))) (setq sel (ssadd ent sel)) ) ) sel ) ;;************************************************************************* ;;§/SELECTIONS/ crée un jeu de selection des entités suivant un element/ent ;;fonction ralentie par la 2006, qui n'axepte pas les sequend ;;donc necessité de faire un entget pour chaque entité ;; (defun pw_selafter (ent / sel etyp) ;;si le dessin etait vierge, ent = nil (if ent (setq sel (ssadd)) (if (setq ent (entnext)) (progn (setq sel (ssadd)) (setq sel (ssadd ent sel)) ) ) ) (if ent (progn (while (setq ent (entnext ent)) (setq etyp (cdr (assoc 0 (entget ent)))) (if (not (member etyp '("ATTRIB" "VERTEX" "SEQEND"))) (setq sel (ssadd ent sel)) ) ) (if (> (sslength sel) 0) sel nil ) ) nil ) )
  21. salut à tous les 2, denis, c'est déjà pas mal d'avoir remarque qu'un QRY se comporte comme un LSP, mais aussi comme un SCR la solution de Bonuscad te permet d'avoir un lisp plus concis. à voir ton lisp, je pense que cette séquence: (mapcar 'ade_dwgdeactivate (ade_dslist)) (setq ade_tmpprefval (ade_prefgetval "ActivateDwgsOnAttach")) (ade_prefsetval "ActivateDwgsOnAttach" T) (ade_prefsetval "ActivateDwgsOnAttach" ade_tmpprefval) ne sert à rien, et surtout (mapcar 'ade_dwgdeactivate (ade_dslist)) fait que ça ne fonctionne pas, car tu désactive tous tes dessins : ensuite tu dis à autocad qu'il faut activer quand tu attache: (ade_prefsetval "ActivateDwgsOnAttach" T) et ensuite tu lui dit de faire comme avant (ade_prefsetval "ActivateDwgsOnAttach" ade_tmpprefval) le tout sans avoir attaché de dessin. comme cette séquence est présente à chaque fois, je ne vois pas comment ça pouvait marcher remplace ade_dwgdeactivate par ade_dwgactivate au début de ton lisp supprime toutes les séquence suivante, ça devrait marcher Gérald
  22. salut, ci dessous tu as a peu près tout ce dont tu as besoin pour sélectionner tes cartouches en fait, par defaut un ssget parcour tous les espaces donc à toi d'adapter le code suivant à ton besoin. le code n'est pas très propre car il mélange le dxf et l'active x, mais c'est pareil. il y a des fonctions pw_ que tu pourra facilement remplacer par des fonctions natives vl- Gérald (setq lcart (pw_listsel (ssget "x" '((0 . "INSERT") (67 . 1) (2 . "cadre_a4")) ))) (foreach l lcart (setq eg (entget l)) ;;extrait le titre (setq att (vla-getattributes (pw_to_object l))) (setq 1er (car (vlax-safearray->list (vlax-variant-value att)))) (setq attval (vla-get-MTextAttributeContent 1er)) ;;ecrit le numéro (setq onglet (cdr (assoc 410 eg)))
  23. GEGEMATIC

    STYLE DE TEXT

    salut, Une première solution est de changer ta définition d'attribut, puis de faire un attsync: le seul problème, c'est qus ça réinitialisera la position des attributs : donc ce n'est pas bon si les attributs on été déplacés par rapport au pt d'insertion du bloc. Après tu devrais trouver cette fonctionnalité en "standalone" dans les lisp de patrick_35 ou Gile (en tête du forum) pour moi, c'est le plug-in "global_attribut_edition" de PowerClic qui fait ça. Gérald
  24. Salut, au final, ton obstination a payée ... et on apprend au passage qu'il est possible d'effectuer certaines opérations (en tout cas, de la consultation) en DBX directement sur des DXF, ce qui peut servir ... a bientôt, Gérald
  25. Salut, Gile avait fait un article la dessus Compatibilité 2015 Je ne vois rien qui ressemble de près ou de loin à une gestion d'erreur dans ce code, mais il est possible que tu ais d'autre lisp qui aient définit une gestion d'erreur incompatible avec 2015 (appel de command dans la fonction *error*) Chez moi, ton lisp fonctionne très bien avec la 2015, sauf si je verrouille un calque ... donc il faut sécuriser ce lisp pour éviter qu'il ne déclenche la fonction *error* par exemple là : (vlax-for b (vla-get-Blocks acdoc) (vlax-for o b (vla-put-color o acByLayer) )) il faut que tu teste si le composant du bloc n'est pas sur un calque verrouillé avant de lui assigner une couleur Il y a peut être d'autres cas à voir. Bon courage Gérald
×
×
  • 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é