Tramber Posté(e) le 1 février 2005 Posté(e) le 1 février 2005 ...avec ENTMAKE, sous un autre nom, c'est possible ? Ou je dois absolument tout rebalancer entre 2 balises block et endblock Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
bonuscad Posté(e) le 1 février 2005 Posté(e) le 1 février 2005 Tu dois tout rebalancer.Un exemple sera plus parlantusage (make_block "Tramber") puis pour faire une copie (make_block "Bertrand")créeras donc 2 blocs identiques de nom différent avec la même défintion d'attribut. (defun make_block (name_block / ) (if (not (tblsearch "LAYER" "Tramber")) (entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "Tramber") (70 . 0) (62 . 7) (370 . -3) (6 . "Continuous") ) ) ) (if (not (tblsearch "STYLE" "Tramber")) (entmake '((0 . "STYLE") (5 . "40") (100 . "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "Tramber") (70 . 0) (40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 1.54508) (3 . "simplex.shx") (4 . "") ) ) ) (if (not (tblsearch "BLOCK" name_block)) (progn (entmake (append '((0 . "BLOCK") (8 . "0")) (list (cons 2 name_block)) '((70 . 2) (4 . "") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2) (10 0.0 0.0 0.0))) ) (entmake '((0 . "LWPOLYLINE")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(62 . 0)(6 . "ByBlock")(370 . -2)(100 . "AcDbPolyline")(90 . 8)(70 . 1)(43 . 0.618034)(38 . 0.0)(39 . 0.0)(10 0.999998 0.0)(40 . 0.618034)(41 . 0.618034)(42 . 0.0)(10 60.8034 0.0)(40 . 0.618034)(41 . 0.618034)(42 . 0.414214)(10 61.8034 0.999998)(40 . 0.618034)(41 . 0.618034)(42 . 0.0)(10 61.8034 37.1966)(40 . 0.618034)(41 . 0.618034)(42 . 0.414214)(10 60.8034 38.1966)(40 . 0.618034)(41 . 0.618034)(42 . 0.0)(10 0.999998 38.1966)(40 . 0.618034)(41 . 0.618034)(42 . 0.414214)(10 0.0 37.1966)(40 . 0.618034)(41 . 0.618034)(42 . 0.0)(10 0.0 0.999998)(40 . 0.618034)(41 . 0.618034)(42 . 0.414214)(210 0.0 0.0 1.0) ) ) (entmake '((0 . "TEXT")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(62 . 0)(6 . "ByBlock")(370 . -2)(100 . "AcDbText")(10 12.3265 19.0983 0.0)(40 . 1.54508)(1 . "Membre de CAD Xp")(50 . 0.0)(41 . 0.75)(51 . 0.0)(7 . "Tramber")(71 . 0)(72 . 0)(11 12.3265 19.8708 0.0)(210 0.0 0.0 1.0)(100 . "AcDbText")(73 . 2) ) ) (entmake '((0 . "ATTDEF")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(62 . 0)(6 . "ByBlock")(370 . -2)(100 . "AcDbText")(10 30.9017 19.0983 0.0)(40 . 1.54508)(1 . "CAD Xp")(50 . 0.0)(41 . 0.5)(51 . 0.0)(7 . "Tramber")(71 . 0)(72 . 0)(11 30.9017 19.8708 0.0)(210 0.0 0.0 1.0)(100 . "AcDbAttributeDefinition")(3 . "Membre de CAD Xp ?:")(2 . "MEMBER_CADXP")(70 . 0)(73 . 0)(74 . 2) ) ) (entmake '((0 . "ENDBLK") (8 . "0") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2))) ) )) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Tramber Posté(e) le 1 février 2005 Auteur Posté(e) le 1 février 2005 Ok, Ok, on va faire chauffer son INJECTO et son FAITBLO ; (defun injecto (j / i element elementGet) (setq i 0) (while ( (setq element (ssname j i)) (setq elementGet (entget element)) (setq i (1+ i)) (entmake elementGet))) (defun FAITBLO (nom jeu oudonc / ea eb) (setq ea (list (cons 0 "block") (CONS 2 nom) (cons 10 oudonc) (cons 70 64))) (setq eb (list (cons 0 "endblk"))) (entmake ea) (injecto jeu) (entmake eb) (command "_erase" jeu "")) ;) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
bonuscad Posté(e) le 1 février 2005 Posté(e) le 1 février 2005 Pas mal, pas mal ;) Simple, concis et efficace, (sous réserve, car pas testé en profondeur) Tu remplaces "_erase" par un (entdel (ssname ....etc.) et c'est 100% pur jus de Lisp. :D Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Tramber Posté(e) le 1 février 2005 Auteur Posté(e) le 1 février 2005 C'est exactement ce que je me disait, un command dans de telles fonctions, c'est une abération. Au passage, je remercie les CADpiens pour les progrès que j'ai pu faire là-dessus.Ca marche tant que l'on ne met pas de mailles ou de vieilles polylignes ou des polys 3D. Je vais faire le ENTDEL et publier ces 2 petites dans la bonne rubrique, on y a joutera des fonctionnalités... Dommage de ne pas pouvoir copier une def de bloc, et de devoir tout reboucler.En Vlisp, ca doit se faire, ...mais chaque chose en son temps, n'est-ce pas. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 2 février 2005 Posté(e) le 2 février 2005 Tramber, il va bientôt falloir changer ton lien. Plutôt que faites du script, ce sera faites du lisp @+ 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 2 février 2005 Auteur Posté(e) le 2 février 2005 (defun injecto (j / i element elementGet) (setq i 0) (while ( (setq element (ssname j i)) (setq elementGet (entget element)) (setq i (1+ i)) (entmake elementGet))) (defun FAITBLO (nom jeu oudonc / ea eb);(setq nom "pot3D" jeu jeuab oudonc pt0) (setq ea (list (cons 0 "block") (CONS 2 nom) (cons 10 oudonc) (cons 70 64))) (setq eb (list (cons 0 "endblk")) index 0) (entmake ea) (injecto jeu) (entmake eb) (repeat(sslength jeu)(entdel (ssname jeu index))(setq index (1+ index))) ) Il y a bien une âme puriste qui va m'aider à supprimer le (setq index ...) ? Tramber, il va bientôt falloir changer ton lien. Plutôt que faites du script, ce sera faites du lisp Depuis 3 mois, je ne fais plus que du lisp, une chance...d'être payé pour s'amuser (c'est ce qu'on se dit devant les pages noires de codes pour ne pas perdre le moral). Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
bonuscad Posté(e) le 2 février 2005 Posté(e) le 2 février 2005 C'est dommage de parcourir 2 fois ton jeu de sélection! :( Pourquoi ne pas l'avoir fais dans ta fonction injecto dans ta boucle avec ton index i ? ;) Je t'avais proposé (entdel) car j'avais penser que cela passerais outre certaines obligations, mais je me suis foutu le doigt dans l'oeil. En effet Si tu as le malheur de sélectionner des entités d'un calque verrouillé, celle-ci ne seront pas effacés. Je pensais que (entdel) le ferais, mais non :( Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Tramber Posté(e) le 9 avril 2005 Auteur Posté(e) le 9 avril 2005 C'est dommage de parcourir 2 fois ton jeu de sélection! :( Pourquoi ne pas l'avoir fais dans ta fonction injecto dans ta boucle avec ton index i ? ;) Au fait, je réponds, car ce sont quand même des Trambertools ®* ! C'est parc'que j'utilise aussi l'injecto tout seul entre 2 balises "block" et "endblk". *®: non je déconne 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