Aller au contenu

Block dans block avec ENTMAKE


Tramber

Messages recommandés

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

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

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

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

(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

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

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

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é