Aller au contenu

Messages recommandés

Posté(e)

...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

 

./__\.
(.°=°.)
Posté(e)

Tu dois tout rebalancer.

Un exemple sera plus parlant

usage (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

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

(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

 

./__\.
(.°=°.)
Posté(e)

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

  • 2 mois après...
Posté(e)
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

 

./__\.
(.°=°.)

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é