Aller au contenu

ASTERIXII

Membres
  • Compteur de contenus

    404
  • Inscription

  • Dernière visite

  • Jours gagnés

    1

Tout ce qui a été posté par ASTERIXII

  1. Gile, merci pour ta réponse. Je vais creuser, mais je connais pas bien le travail avec les "objets VLA"
  2. Bonjour, Ma question, est-il possible de lire la valeur d'un Attribut d'un bloc sans qu'il soit dans le dessin, et sans l'ouvrire. Scanner un répertoire, et lire un attribut dans un ensemble de bloc ?
  3. Bonjour, Arrivé dans un grand groupe, je viens de découvrir la même organisation. (mais MEP = TRACE , plus parlant). C’est plus dure à gérer, mais il y à un gros avantage, et les personnes qui travail en 3D le savent bien, les présentations alourdissent les plans (1,2, puis 3… présentations en fonction du découpage). Il y à aussi le problème des armoires à plan, pour qui il faut un nom (distinct) de dwg avec une présentation. Et le plus grand des problèmes, les indices de plan ! Si vous voulez donner un indice à la fin du fichier dwg, c’est pas possible avec plusieurs presentations.
  4. Bonjour, Création de bibliothèque (familles) C’est quoi la meilleur solution pour ? Créer une bibliothèque depuis des éléments (Rfa) trouvés sur internet. Exemple : j’ai des vannes ou chaque diamètre est représenté par un fichier Rfa (pas de paramètre) C’est quoi la meilleur façon de les gérer ?
  5. Oui, mais avec MODIFLONG tu peux uniquement continuer dans le même sens (// au x par exemple), mais si tu veux toujours continuer, mais plus loin changer de direction (remonter l'axe y) c'est pas possible Je ne cherche pas à avoir une ligne continue lorsque que je change de direction comme une polyligne Mon but, reprendre une ligne, la continuer dans le même axe, puis plus loin pouvoir changer de direction
  6. Oui patrick Mais je comprends pas que dans autocad cette fonction n'existe pas. Car pour allé plus loin, dans mon cas les lignes sont des lignes avec du texte. Et si il n'y à pas de "jonction", c'est pas trés "beau". Enfin, mon lisp fonctionne bien. Il y à juste un truc que je ne comprends pas bien: (setq pt (getpoint "\nChoix du point sur le réseau: ")) (setq ENT1 (nentselp pt)) (setq entity (car ENT1)) (setq name (entget entity)) (setq SNC_CAL (cdr (assoc 8 name))) ; nom du calque (command "-calque" "ch" SNC_CAL "") (command "_line" pt) (setq ENT2 (nentselp pt)) pt est l'extremité de la ligne à continuer, et ENT1 "l'objet" Ensuite je trace une ligne, voir plusieur à la suite Je recherche un objet au point pt avec nentselp, et la il trouve de suite le dernier objet, soit la nouvelle ligne. Pourquoi nentselp (ENT2) n'est pas "retombé" sur la premiere ligne comme (ENT1)?
  7. Non Patrick, les lignes ne sont pas jointes, elles ne forment pas une seul ligne. Elles ont bien les mêmes propriétés, calque, mais j'ai 2 lignes Je suis sur Autocad MEP 2011 Une variable à modifier chez moi ?
  8. Ok c'est bon, voila le code (defun essai () (setq pt (getpoint "\nChoix du point sur le réseau: ")) (setq ENT1 (nentselp pt)) (setq entity (car ENT1)) (setq name (entget entity)) (setq SNC_CAL (cdr (assoc 8 name))) ; nom du calque (command "-calque" "ch" SNC_CAL "") ((lambda () (command "_line" pt) (while (< 0 (getvar 'cmdactive)) (command pause)))) (setq ENT2 (nentselp pt)) (command "_join" ENT1 ENT2 "") );fin defun
  9. Non Patrick, car les lignes ne sont pas jointe Voila le début de mon lisp: (defun essai () (setq pt (getpoint "\nChoix du point sur le réseau: ")) (setq ENT1 (nentselp pt)) (setq entity (car ENT1)) (setq name (entget entity)) (setq SNC_CAL (cdr (assoc 8 name))) ; nom du calque (command "-calque" "ch" SNC_CAL "") (command "_line" pt) (setq ENT2 (nentselp pt)) );fin defun le problème est qu'il faudrait une pause pour la commande _line avant de continuer le code Ensuite récupérer les entités au point pt et les joindre Ok j'ai la solution pour la pause ((lambda () (command "_line" pt) (while (< 0 (getvar 'cmdactive)) (command pause))))
  10. Bonjour, J'ai pas trouvé de commande dans autocad pour continuer une ligne déjà dessinée (pas la dernière ligne, avec valider depuis la commande ligne) Je voudrais reprendre une ligne depuis son extrémité, et la continuer (même style, même calque...) Comme la commande MODIFLONG (option DY) mais pouvoir changer de direction en plus (chose que MODIFLONG ne permet pas) Le but n'est pas de redessiner simplement une ligne au bout d'une autre, il faut qu'elle soit jointe ! La seul solution pour moi, serait en lisp: 1) Sélectionner l'extrémité de la ligne à continuer 2) prendre les infos sur calque, type de ligne etc.. 3) conserver les infos du point de cette ligne 4) rendre le calque courant 5) dessiner les lignes avec command "_line" 6) à la fin de la commande joindre les 2 extrémités Avez-vous une autre solution ?
  11. Ok, merci de votre réponse
  12. Bonjour, Je ne trouve pas de réponse à ma question sur defun, alors je la pose ici: j'ai une fonction : (defun c:SNC_X (var_snc / *error* data dclfile dclhandle) Dans le cas ou j'ai une fonction définie avec defun c:yyy la fonction peut-être appelée comme une commande. Je fais simplement yyy sur la ligne de commande. Mais dans le cas de ma fonction avec arguments, je n'arrive pas à l'appelée comme une commande. C'est à cause de l'argument var_snc ?. Comment faut-il faire avec un argument sur la ligne de commande ?
  13. Bonjour Bryce, Ok sa marche nikel ! plus de message d'aide sans les espaces. Merci encore.
  14. Bonjour Bryce, Je reviens sur un probleme avec Autocad MEP 2011: A chaque ouverture d'un dessin il lance l'aide d'autocad: Copy de la fenêtre texte: Commande: (setq v1 (ssget "_X" '((0 . "ATTDEF")))) <Selection set: 4> Commande: _HELP Commande: (setq v2 0) 0 Commande: AIDE Commande: (if (/= v1 nil) (_> (while (< v2 (sslength v1)) ((_> (setq name (ssname v1 v2)) ((_> (setq entite (entget name)) Et le debut du fichier seq: (command "-style" "SNC" "ARIAL" "" "" "" "" "") (setq v1 (ssget "_X" '((0 . "ATTDEF")))) (setq v2 0) (if (/= v1 nil) (while (< v2 (sslength v1)) (setq name (ssname v1 v2)) (setq entite (entget name)) (setq pt1 (cdr(assoc 2 entite))) (setq lancien (assoc 7 entite)) (setq ancien (cdr lancien)) (if (= ancien "AS")
  15. Bonjour Gile, Toujours aussi efficace. J'ai fait un petit test avec une partie du code, et cela fonctionne bien (setq pt (getpoint "\nChoix du point sur le réseau: ")) (setq sel (nentselp pt)) Pourquoi une partie me diras-tu, parce-que entre temps j'ai modifier mon code. Je ne recupere plus la selection de l'entité dans cette routine, mais dans une autre, qui elle même permet d'insert des blocs. Il ne faut pas que je me trompe dans les fermetures de ) Question: Pourquoi la selection avec une condition if ? c'est juste pour être sur d'avoir un point ?
  16. Bonjour Olivier, Ton idée est bonne, mais si je veux derouter le lisp pour qu'il insert le bloc sans trouver de ligne ? J’ai pensé éventuellement à utiliser la gestion des erreurs avec nil, et de faire getpoint puis insérer le bloc. Mais je voulais savoir si il y avait le moyen d’éviter de reposer la question getpoint et d’utiliser ma première action entsel. Car j’ai bien fait une action à l’écran avec entsel.
  17. Bonjour, Je cherche une solution pour gérer entsel qui retourne nil. Mon lisp doit insérer un bloc sur une ligne : 1) Je sélection une ligne avec entsel et place la valeur dans ENT1 2) Normalement je teste ENT1 pour savoir si une ligne a été sélectionnée 3) Je récupère dans IP le point d’insertion 4) …… Je voudrais qu’au point 2) si je n’ai pas choisi une ligne, (donc retourne nil) le lisp insérer mon bloc au point ou j’ai cliqué, et sans continuer vers 3) . Comment récupérer un point d’insertion autrement qu’avec entsel ? Mais le problème c’est que j’ai besoin des informations retournée par entsel (point, calque, angle… de la ligne) si l'utilisateur à bien sélectionnée une ligne. Une partie du code (defun c:SNC_L6 ( / *error* oldsnap bname ip ent1 ent2 ep1 ep2 ang edata ip1 ip2) (setq SNC_err 0) ;**** gestion des erreurs (defun *error* (errmsg) (setvar "OSMODE" 544) (setvar "OSMODE" oldsnap) (setvar "BLIPMODE" 1) (setvar "CMDECHO" 1) (if (= SNC_err 1) (alert "N'est pas un réseau : ")) (if errmsg (print errmsg) ) (princ) ) ;**** (setq oldsnap (getvar "OSMODE")) (setvar "OSMODE" 544) (setvar "BLIPMODE" 0) (setvar "CMDECHO" 0) (setq bname "CV_Vanney.dwg"); pour essai nom du bloc (setq ENT1 (entsel "\nChoix du point sur le réseau :")) ;ENT1 ;gestion erreur si pas de ligne selectionnée ;(if (= ENT1 nil) <---- ici gestion de nil (setq IP (osnap (cadr ENT1) "_nea")) ;point insertion (setq entity (car ENT1)) (setq name (entget entity)) (setq SNC_CAL (cdr (assoc 8 name))) ; nom du calque (setq SNC_COUL (cdr (assoc 62 (entget (tblobjname "LAYER" SNC_CAL))))) ; couleur du calque ;* verifier le nom du calque (si il exite) (setq LTexte (strlen SNC_CAL)) ; longueur de la chaine (setq Fin_tx (substr SNC_CAL (- LTexte 5) 5)) (if (or (= Fin_tx "_Equi") (= Fin_tx "_Text")) (progn (setq SNC_err 1) (exit) ) ) ;* (setq SNC_CAL (strcat SNC_CAL "_Equip")) ; calque equipement pour le réseau
  18. Bonjour Bryce, Effectivement, j'ai une ligne vide, mais j'exporte le fichier, et le corrige avec l'éditeur de texte. Je n'ai pas encore fait la manip sur l'ensemble des fichiers, car il faut que je consulte les collègues. Et chance pour moi, les fichiers sont repartis sur 6 répertoires. Mais j’ai profité de ton appli pour faire un lisp qui remplace 2 types de ligne dans les plans. Le programme remplace la ligne TOTO par Axes et TITI par cache (Toto et Titi sont des exemples), afin d’avoir une correspondance avec acadiso. La sélection se fait dans un plan type, le programme génère un lisp, et ensuite je l’utilise dans ton appli. J’ai juste une question, ton appli ne pourrait-elle pas ignorer les commentaires dans le lisp (ceux sur une ligne, ou en fin de ligne) ?
  19. Bonjour Bryce, Ok c'est bon. Juste à la fin du traitement de tous les fichiers, Acad ouvre l'aide. Peut-être du à mon AutoCAD, (MEP 2011) ? C'est une bonne application, qui me donne d'autre idée de traitement par lot de fichier (nettoyage de plan,...) Merci encore pour ton aide.
  20. Bonjour Bryce, Pas mal ton appli, elle me donne même qque idée... J'ai juste un problème, car il ne ferme pas le premier dessin, et donc ne passe pas au suivant. Voila le message depuis le lancement Commande: (setq tags "NOM,PB") "NOM,PB" Commande: (if (setq ss (ssget "_X" (list (cons 0 "ATTDEF") (cons 2 tags)))) (_> (progn ((_> (repeat (setq i (sslength ss)) (((_> (entdel (ssname ss (setq i (1- i)))) (((_> ) ((_> ) (_> ) _.qsave nil Commande: _.close Voulez-vous vraiment ignorer les modifications du dessin? <N> _.open Oui ou Non, s'il vous plaît. Voulez-vous vraiment ignorer les modifications du dessin? <N> *Annuler*: (cest moi qui annule la commande) J'ai comparé avec ton script purger_tout, lui fonction bien sur ma liste, ouvre et ferme. Voila mon fichier script <preproc> </preproc> <proc>(setq tags "NOM,PB") (if (setq ss (ssget "_X" (list (cons 0 "ATTDEF") (cons 2 tags)))) (progn (repeat (setq i (sslength ss)) (entdel (ssname ss (setq i (1- i)))) ) ) ) </proc> <postproc> </postproc> <autoopen>True</autoopen> <autosave>True</autosave> <diesel>False</diesel>
  21. Effectivement Bryce, Je viens de verifier (c'est pas ma biblio à la base, je suis la depuis qq mois), et lorsque que je fais glisser le dwg depuis l'explorateur dans AutoCAD, il ne propose pas d'ouvrir l'éditeur de bloc. Je me retrouve avec un "dessin" et des attributs. Cela me semble deja plus facile. Mais l'idée d'un Script me semble pas adaptée. Il y à 984 dwg ! Je reviens donc sur la sitation de Patrick et ObjectDbx (que je ne métrise pas)ou alors "bricoler le lisp de Gil"
  22. Bonjour Patrick, Tu as bien compris, mais j'ai pas forcement un problème de synchro. Si j'utilise les blocs dans un nouveau dessin, je n'aurais pas de problème ? En fait le problème, est que allons peut-être diffuser notre bibliothéque au niveau "national", et dans le bloc figure l'ancien nom de notre agence. (sa fait pas pro :))
  23. Merci à vous, sa marche A conserver :)
  24. Merci pour ta réponse, mais si je suis ton résonnement: Je termine la commande _text ? mais si je termine, c'est que j'ai deja entré le texte non ? J'ai deja passé l'étape qui me pose probleme. Ou alors je comprends pas ton raisonnement
×
×
  • 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é