Tramber Posté(e) le 2 novembre 2004 Posté(e) le 2 novembre 2004 Ben voilà, j'arrive très bien à créer mes blocks avec ENTMAKE. Mais pourquoi refuse-t-il de me faire un bloc contenant d'autres blocs ? Message : Impossible pour cause de blocs imbriqués. La question, comment dois-je m'y prendre alors ? [Edité le 2/11/2004 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 2 novembre 2004 Auteur Posté(e) le 2 novembre 2004 Dois-je créer un bloc vide (comment on fait ?) et utiliser la commande REFEDIT, est-ce vraiment la seule solution ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 2 novembre 2004 Posté(e) le 2 novembre 2004 Salut Tramber(setq a (list (cons 0 "block")(cons 2 "NOUVEAU_BLOC")(cons 70 64)(cons 10 '(400.0 150.0 0.0)))) ; définition du bloc (setq b (list (cons 0 "insert")(cons 100 "AcDbEntity")(cons 2 "BLOC1")(cons 10 '(400.0 160.0 0.0)))) ; insertion d'un bloc (setq c (list (cons 0 "insert")(cons 100 "AcDbEntity")(cons 2 "BLOC2")(cons 10 '(400.0 155.0 0.0)))) ; puis d'un autre (setq d '((0 . "endblk"))) ; fin du bloc ; création du bloc (entmake a) (entmake b) (entmake c) (entmake d) ; il ne reste plus qu'à l'insérer @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Labletech Posté(e) le 2 novembre 2004 Posté(e) le 2 novembre 2004 Je confirme il n'y a rien à dire de plus !!!cet exo marche nickel !! Formateur ATC Autocad - Mechanical - Inventor - Electrical
Tramber Posté(e) le 2 novembre 2004 Auteur Posté(e) le 2 novembre 2004 Merci, je regarde avec cette facon de faire tout de suite. Suite à nos messages précédents sur Entmake, j'en été venu à utiliser cette petite fonction pour injecter entre un BLOCK et un ENDBLK, mais ca ne marchait pas. Vois la f : (defun injecto (j / i) (while (i(setq element (ssanme j i)) (setq elementget (entget element)) (setq i (1+ i)) (entmake elementget))) Je regarde. Sinon, dans la journée, j'ai dompté :o EDITREF en partant sur un bloc quelconque mais avec un souci :On ne peut envoyer ni jeu de selection, ni nom d'entités, (enfin, je n'arrvie pas autrement qu'un simulant un clic dans le dessin et ca c'est génant) pour selectionner l'entité à éditer (le bloc quoi).Pas de problèmes après pour ajouter des objects, dont des blocs. Je poste un nouveau sujet, mais reviens si ca marche pas !Merci Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 2 novembre 2004 Auteur Posté(e) le 2 novembre 2004 (setq a (list (cons 0 "block")(cons 2 "NOUVEAU_BLOC")(cons 70 64)(cons 10 '(400.0 150.0 0.0)))) ; définition du bloc (setq d '((0 . "endblk"))) ; fin du bloc ; création du bloc (entmake a) (injecto jeu_selection) (entmake d) Mon problème, c'est que ca ne marche pas avec un INJECTO ou autre..... :mad2: Help, les gars, ...je dois peut-être me résoudre à faire du REFEDIT, ca marche un peu.Ou il faut que je construise un autre type d'INJECTO ? Merci beaucoup Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Labletech Posté(e) le 2 novembre 2004 Posté(e) le 2 novembre 2004 J'espère que ton injecto qui se trouve dans ton prog est mieux écrit que celui que tu as amené sur le forum parceque c'est normal qu'il plante un peu !! (defun injecto (j / i) (setq i 0) (while (< i (sslength j)) (setq element (ssname j i)) (setq elementget (entget element)) (entmake elementget) (setq i (1+ i)) ))Ecrit comme ca avec l'exo de Patrick_35 ca marche toujours nickel en remplacant par exemple (entmake c) par (injecto jeux_de_ce_que_tu_veux) !! ;) Formateur ATC Autocad - Mechanical - Inventor - Electrical
Tramber Posté(e) le 2 novembre 2004 Auteur Posté(e) le 2 novembre 2004 Autant pour moi, j'avais laissé les ENTMAKE après les SETQ ! Mais qu'est-ce qui explique que je n'ai pas pu le faire de la facon traditionnelle ? Décidemment, le lisp, c'est aussi de l'expérience ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 3 novembre 2004 Posté(e) le 3 novembre 2004 C'est génial, on quitte le site et les autres poursuivent le sujet qui n'est pas très évident. :thumbup: Pour Tramber, je crois comprendre en prenant ton exemple que tu fais une copie d'entité. Dans ce cas, dans la copie, il faut que tu vires le code dxf -1, 5 et 330 (fonction vl-remove list) et tu verras que l'entmake se fera sans problème @+ [Edité le 3/11/2004 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 3 novembre 2004 Auteur Posté(e) le 3 novembre 2004 Sans ton tour de passe-passe, impossible de faire un bloc avec ENTMAKE.J'en ignore les raisons mais on dirait qu'il faut que je regarde à éliminer ces petits DXF, et que cela apporte une deuxième solution.... Intéressant. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 3 novembre 2004 Posté(e) le 3 novembre 2004 C'est normal que ça ne marche pas. Le code -1 est le nom de l'entité, le 5 son identificateur et le 330 un pointeur. Par définition, ils sont uniques et c'est pour ça qu'on ne peut les recréer avec entmake @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 3 novembre 2004 Auteur Posté(e) le 3 novembre 2004 Oui, oui, c'est clair,....je ne suis pas surpri Merci pour tous ces coups de pouce :thumbup: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant