Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

comment définir un réseau rectangulaire avec visual lisp, le but étant d'éviter l'utilisation de (command "_arrayrect" etc...) ?

 

Même chose avec la commande "_arrayedit"

 

Merci par avance

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

Bonjour,

 

A tu essayé avec vla-ArrayRectangular?

 

Bonjour,

 

Merci pour la réponse !

 

oui, mais ça me fait un réseau "à l'ancienne", donc sans associativité ou alors j'ai loupé un épisode. C'est justement ce côté associatif que je souhaiterais exploiter.

Le problème avec "arrayrect" et visual lisp est que, si on fait une recherche sur le net, on trouve tout ce qui concerne les array de vlisp et très peu ce qui concerne la commande autocad arrayrect.

 

Mais, compte tenu de ce que je veux faire (la représentation d'une série de fers à béton en coupe), ce serait peut-être plus malin de passer par un bloc paramétré, pour lequel il y a aussi une action de type réseau.

 

je vais aller voir de ce côté là.

 

Merci

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

re,

 

c'est peut être pas une bonne idée le bloc dynamique. Quand je paramètre la distance pour une réseau rectangulaire, il s'agit de la distance totale. Le pas est fixe et il est défini lors de la création du bloc, je n'ai pas trouvé comment paramétrer le pas.

 

je vais rester sur une arrayrect dynamique, ça m'a l'air plus simple ! En gardant (command ...) puisque ça n'est pas possible autrement.

 

Merci pour tout

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

Bonjour

Compte tenu que (Gile) me dit qu'un réseau c'est en soi un bloc dynamique, c'est une raison de plus pour rester sur le principe du réseau et de ne pas trop creuser du côté du bloc.

Je vais donc continuer dans ma lancée et utiliser le (command "_arrayrect" ...)

A noter que cette commande est sensible à la variable DELOBJ. Selon sa valeur (-1 par exemple) la commande peut poser des questions supplémentaires qui peuvent perturber le déroulement du lisp. Il faudrait donc mettre de côté la valeur de delobj au départ, lui affecter 1, faire la commande arrayrect, remettre dans delobj la valeur d'origine.

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

Salut !

 

J'avais une petite question concernant les Array justement...

Depuis quelques temps j'essaye de comprendre la définition de ces entités donc récupérer le nombre de columns, rows, levels, spacing, etc : pas de soucis. Mais par contre, j'ai eut beau creuser toujours plus loin dans les codes DXF de cette entité, je n'ai pas été en mesure de retrouver les objets à l'origine du réseau...

 

Pour la petite explication, ci-joint un fichier .dwg tout con (une ligne mise en réseau via la commande) et un fichier .txt avec l'extract des listes DXF des entités issues des codes 330 et 360. Je ne suis pas aller jusqu'au bout du bout vu que j'ai bien compris que je m'écartais de ce que je recherchais... ^^"

 

WeTransfer (1 fichier .dwg + 1 fichier .txt)

 

Au début j'ai cru que l'Objet n°11 jusqu'à 22 (cf. fichier .txt) correspondaient à ce que je recherchais mais au final, on ne peut rien en tirer de cet "INSERT" et ce n'est pas cohérent que l'objet de départ du réseau se retrouve dans n définition de bloc (il n'y a qu'une seule définition, répétée n fois).

 

Bref j'aimerais savoir s'il existe un moyen de récupérer les objets qui définissent les réseaux et s'il faut passer par du Visual LISP ou uniquement des listes DXF ? Après je n'ai pas chercher à "étendre" les listes DXF en faisant appel au noms des applications via (entget)..

Ces objets font finir par me faire devenir chèvre à force de vouloir se faire passer pour des blocs dynamiques sans pour autant l'être à 100% ! OnO (le fait qu'il ne possède pas de définition rend la tâche compliquée...)

 

Bisous,

Luna

Posté(e)

Salut,

 

Les réseaux dynamiques sont des blocs dynamiques dont la définition contient des références de blocs anonymes. La définition de ces références anonymes contient les entités sélectionnées lors de la construction du réseau.

 

;; la référence de bloc dynamique contenant le réseau
(setq blockRef (entget (car (entsel "\nSélectionnez un réseau dynamique: "))))

;; la définition du bloc dynamique
(setq blockDef (tblsearch "block" (cdr (assoc 2 blockRef))))

;; la première référence de bloc anonyme contenant les entités mises en réseau
(setq nestedBlockRef (entget (cdr (assoc -2 blockDef))))

;; la définition du bloc anonyme
(setq nestedBlockDef (tblsearch "block" (cdr (assoc 2 nestedBlockRef))))

;; la liste des entités contenues dans la définiton du bloc anonyme
(setq ent (cdr (assoc -2 nestedBlockDef)))
(while ent
 (setq	lst (cons (entget ent) lst)
ent (entnext ent)
 )
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Aaahhhh bah vouih bien sûr !!!

 

Je n'avais pas penser que la table des blocs avait tout de même une référence au bloc anonyme... Du coup je n'ai pas osé creuser davantage...

 

Merci beaucoup en tout cas !

 

Du coup, je viens de regarder vite fait, si on souhaite modifier l'objet (ou les objets) sources du réseau, (entmod) fonctionne sans soucis mais pour mettre à jour de manière visuelle il faut utiliser (entupd) sur le réseau (et non l'objet source) pour faire apparaître les modifications.

En tout cas ça va me faciliter grandement mon utilisation des réseaux car j'étais un peu coincée avec l'accessibilité aux données sources de ces derniers ^^"

 

Bisous,

Luna

  • 1 mois après...
Posté(e)

Salut,

 

Les réseaux dynamiques sont des blocs dynamiques dont la définition contient des références de blocs anonymes. La définition de ces références anonymes contient les entités sélectionnées lors de la construction du réseau.

 

;; la référence de bloc dynamique contenant le réseau
(setq blockRef (entget (car (entsel "\nSélectionnez un réseau dynamique: "))))

;; la définition du bloc dynamique
(setq blockDef (tblsearch "block" (cdr (assoc 2 blockRef))))

;; la première référence de bloc anonyme contenant les entités mises en réseau
(setq nestedBlockRef (entget (cdr (assoc -2 blockDef))))

;; la définition du bloc anonyme
(setq nestedBlockDef (tblsearch "block" (cdr (assoc 2 nestedBlockRef))))

;; la liste des entités contenues dans la définiton du bloc anonyme
(setq ent (cdr (assoc -2 nestedBlockDef)))
(while ent
 (setq	lst (cons (entget ent) lst)
ent (entnext ent)
 )
)

 

Bonjour,

 

la liste des entités contenues dans la définition du bloc anonyme sont modifiables par les moyens qu'on veut. Si on modifie ces entités, on modifie l'aspect du réseau dans son ensemble.

 

je peux ainsi me passer de arrayedit pour ce que je voulais faire : j'ai un réseau formé à partir d'un bloc. Une fois que j'ai eu accès à ce bloc qui représente l'entité qui définit le réseau, je peux en modifier l'échelle, etc. je peux même changer le nom du bloc, pour autant qu'il existe, et changer radicalement l'aspect global du réseau.

 

Merci

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

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é