Aller au contenu

Reconstruire les blocs


LUDWIG

Messages recommandés

  [b]  [u] ......... J'ose ..........[/u][/b]

Savez-vous s'il a déjà été développé un programme qui puisse "reconstruire" des blocs.

 

Exemple : un dessin a été construit avec des cercles et une croix au milieu en guise de spot. En sélectionnant le bloc a inséré, les objets à remplacer (cercle + croix) et son point d'insertion, le programme reconnaitrait toute les occurences de cercle + croix pour les remplacer par le bloc adéquat...

 

Je sais que c'est balèze, ce que je demande, mais si ça a déjà été fait, je suis preneur...

Autocad 2021 - Revit 2022 - Windows 10

Lien vers le commentaire
Partager sur d’autres sites

Invité Sylvainhinard

Bonjour,

 

A mon avis va voir dans :

Accueil du Forum > LISP et Visual LISP > Débuter en LISP > Remplacement de cercles par des blocs

 

Je pense que tu auras réponse à une partie de ta question

 

@+

Lien vers le commentaire
Partager sur d’autres sites

Ludwig,

 

D'ici 30 minutes, tu iras sur notre site http://www.cadnovation.com/fr

Dans la sectionTRUCS, SUPPORT, ROUTINES , tu cliqueras sur Plus puis de là il y aura un routine pour remplacer les blocs. Ce sera un fichier à extension fas. Tu le charge comme n'importe quel fichier lsp.

 

Voici ce que ça dit au chargement:

 

La variable eacu_rb::oldBlocsLayerName peut être définie pour

choisir le nouveau calque où seront transférés les anciens blocs.

Par défaut, ce calque se nomme VieuxBlocks

Exemple: (setq eacu_rb::oldBlocsLayerName "VieuxBlocks")

Tapez RB pour remplacer les blocs.

 

Serge

 

Lien vers le commentaire
Partager sur d’autres sites

Excuse moi, Serge

 

Je n'ai pas trop compris le fonctionnement de ta routine ! :casstet:

On retrouve une commande dans les Express Tools appellé : blockreplace

Est-ce c'est le même fonction que ton programme ?

 

Merci ! ;)

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Lien vers le commentaire
Partager sur d’autres sites

Pako,

 

Excuse moi, je n'avais pas décrit le fonctionnement.

 

Ma routine permet d'insérer un bloc par-dessus un autre et le remplacement se fait selon l'apparence que les 2 blocs ont au moment d'être choisi, ce qui signifie que je tiens compte de l'angle de rotation relatif, de l'échelle relative et aussi du choix d'un calque pour y laisser les vieux blocss pour fins de comparaiso, je transfère les attributs bloc par bloc et finalement, le remplacement est sélectif. Ah oui, les échelles d'insertion peuvent être miroir ou Y différent de Y.

 

ReplaceBlock des express ne fait que recopier la définition d'un bloc dans un autre, ce qui prend à peu près 10 lignes de codes à faire.

 

Exemple d'utilisation:

Commande: RB

Calque pour les anciens blocs : Enter

 

Sélectionnez la zone ayant les 2 blocs: Sélection par Crossing

Choix des objets: Spécifiez le coin opposé: 2 trouvé(s)

 

Choix des objets: Enter

Attention: Les 2 blocs n'ont pas la même échelle.

Vous pouvez interrompre la routine et faire des validations avant de continuer.

Interrompre la routine [Oui/Non] : Nonr

Choisissez les blocs à remplacer [Tout/Sélection] : Enter

 

 

Note: j'avais étaeint le flag pour l'effacement des vieux blocs. Je vais mettre à jour le site d'ici 10 minutes. Désolé.

Serge

 

Lien vers le commentaire
Partager sur d’autres sites

Merci la description !

 

Une dernière question :

 

je transfère les attributs bloc par bloc

 

Que ce passe-t-il si le nouveau block a 3 attributs et l'ancien n'avait que 1 ou l'inverse ?

 

A+

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Lien vers le commentaire
Partager sur d’autres sites

SERGE

Ah oui, c'est une version plus évoluée du block replace si je comprends bien : conservation des échelles, rotation, etc... C'est bien utile !

 

Par contre, je ne comprend pas la nouvelle position du point d'insertion... et les anciens blocks ne sont pas conservés ?

 

Sylvainhinard

Remplacement de cercles par des blocs : c'est mon collègue qui l'a posté ! Mais je cherche quelquechose "plus évolué" qui :

1 - puisse remplacer plusieurs objets par 1 bloc ("cercle + 2 traits intérieurs" par 1 bloc par ex.)

2 - demande la sélection de ces objets à l'écran : les entités à remplacer (cercle + 2 traits, ou autres entités), le point d'insertion, le bloc de remplacement (ou constitution du bloc à partir des entités selectionnées précedemment et du point d'insertion).

 

Je suis sûr que ça pourrait intéresser beaucoup de monde, mais je suppose que ça n'existe pas (et que ce serait un usine à gaz à faire).

Autocad 2021 - Revit 2022 - Windows 10

Lien vers le commentaire
Partager sur d’autres sites

Je suis sûr que ça pourrait intéresser beaucoup de monde, mais je suppose que ça n'existe pas (et que ce serait un usine à gaz à faire).

 

Je te le fait pas dire, le problème majeure n'est pas de récuperer les entités, mais surtout le classement de celles-ci par rapport à leur positionnement entre elles (savoir si telle entité avec un XYZ et un alpha de rotation doit aller avec une autre entité positionnée a tel XYZ et alpha) en plus si des attributs doivent si ajouter je te dis pas la prise de tête.

Bien que je pense que ce ne soit pas irréalisable, cela demanderait un temps de traitement très long (surtout en Lisp). Cela me fait penser un peu a un programme de triangulation (maillage de point 3D), je n'en ai jamais vu d'efficace en lisp.

 

A mon avis tu peux tirer un trait sur ce genre de souhait. (bien que l'idée était bonne) ;)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Ah, oui, c'est une routine qui sert à substituer un bloc par un autre. Très utile

Si tu le permets, Serge, il manque un (vl-load-com) dans ta routine (eh oui, je suis encore en 2000 ;))

 

Je pensais que c'était, comme demandais notre ami Ludwig, une routine qui sert à recomposer un bloc qui à été décomposé par une comparaison dans la table des blocs. Là j'aurai dit, Monsieur s'il vous plait :cool:

 

@+

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

Ludwig,

Si je te comprend bien, tu désires un UnExplodeBlock. Est-ce bien cela ?

Pour le point d'insertion, c'est un bug que j'ai corrigé ce matin. Je venais tout juste de terminer la routine quand j'ai vu votre demande. C'est ce qui explique ce petit bug.

 

Patrick_35,

Ce sera fait.

 

Pako,

Le valeurs d'attributs par défaut du nouveau bloc sont d'abord prise en compte puis je fais le tour de l'ancien bloc pour savoir s'il existe des anciennes valeurs qui deviendraient prioritaires. L'ordre des attributs n'a aucune importance, pouvu qu'il n'y ait pas 2 fois le même nom de tag dans le même bloc.

 

Normalement, ce programme est offert à ceux qui ont le MVPort. Je vais donc en faire une version 100% fonctionnelle mais qui popera une boite de dialogue tous les 3 ou 5 blocs, question de pas déplaire à ceux qui ont payé la version pleine. J'enlèverai cet irritant dans un an, si quelqu'un me le rappelle :-)

 

Serge

 

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é