Aller au contenu

Messages recommandés

Posté(e)

Salut, je viens vous déranger car j'aurai besoin d'informations, actuellement je réalise mes plan en utilisant des  XREF et j'aimerai savoir si je peux récupéré le x et y d'un block ce trouvant dans un des XREF afin de l'incorporé directement dans un bloc ce trouvant dans la mise en page.

exemple en photo :

bloc xyz.png

Posté(e)

Hello

Ci joint une variante amelioree de NCOPY que j utilise de temps en temps ...

Routine VLisp "NCOPY_MULTIPLE" qui permet de selectionner N objets (1 par 1) dans la XREF

pour les importer dans le DWG principal !

Je l ai testé sur AutoCAD LT 2024 ... C OK

Bye, lecrabe

 



;; 
;; https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/how-to-ncopy-multiple-at-same-place-or-pause-the-ncopy-command/td-p/10932882
;; 
;; ---- How to ncopy multiple at same place or pause the ncopy command ? ----
;; 
;; Not so easy to do. Possibly like this : 
;; (while (setq e (cadr (nentsel))) (command "ncopy" e "" "" ""))
;; 
;; But is it really necessary? I mean, how difficult is it to hit enter a couple of times.
;; 
;; Anyway, just a few threads lower @pbejse posted a nice example of code 
;; how this could be done without the need to fight with ncopy. HERE
;; https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/is-there-alisp-to-pick-polyline-from-apoly-line-in-or-out-block/m-p/10931411/highlight/true#M426966
;; 
 
(vl-load-com)

(defun c:NCopy_Multiple (/ obj tmp)
  (while (setq obj	(nentselp "\nSelect (One by One) Objects to copy from XREF ... "
		) ;_ end of nentselp
      )
    (progn
      (setq tmp (entmakex (entget (car obj))))
      (vla-transformby
	(vlax-ename->vla-object tmp)
	(vlax-tmatrix (caddr obj))
      )
      (Vla-put-layer (vlax-ename->vla-object (entlast)) (getvar 'clayer))
    )
  )
)

 

Autodesk Expert Elite Team

Posté(e)

Coucou @lecrabe,

Alors il me semble que NCOPIE (tout comme (nentsel) d'ailleurs) creusent aussi loin qu'elles peuvent. Autrement dit, si ici le but est de récupérer le bloc d'une XREF et de copier le BLOC de l'XREF directement dans le dessin, alors ni NCOPIE ni NCOPY_Multiple fonctionnent..
Car elle iront copier l'entité sélectionnée dans le bloc et vont donc copier un objet (ligne, texte, etc...) mais pas le bloc...

Pour accéder aux informations du bloc, il faut vérifier la longueur de

(nentsel)

car si elle mesure 4, cela signifie que l'entité sélectionnée appartient à un bloc. Et le détail des nested blocks est donné dans

(last (nentsel))

J'avais un programme pour vérifier le calque et nom de bloc des objets d'un (nentsel) donc globalement par exemple cela permet d'avoir la liste des blocs/XREF avec une liste d'association correspondant à l'EffectiveName du bloc/XREF suivi du nom d'entité de la référence de bloc:

(setq nlst (nentsel))
(setq name (car nlst))
(if (= 4 (length nlst)) ;; entity is inside a block/XREF
  (mapcar '(lambda (e) (cons (vla-get-EffectiveName (vlax-ename->vla-object e)) e)) blst)
)

Je ne maîtrise pas suffisamment les matrices de transformation pour savoir s'il est possible d'insérer un bloc avec ses attributs correctement. Mais en tout cas il faut utiliser la dernière liste d'entité fournie par (nentsel) pour avoir la liste des blocs/XREF liés à l'objet sélectionné. A savoir que la première entité est le bloc/XREF contenant directement le sous-objet sélectionné, et le dernier nom d'entité correspond donc au bloc/XREF directement implanté dans notre dessin.

Bisous,
Luna

Posté(e)

Bonjour,

J'ai la vague impression qu'on est au bord du hors sujet ...

La question de base de filou ne parlais pas de sortir les blocs de la XREF. Le sujet était plutôt exploiter les coordonnés XY des blocs et les faire apparaitre dans une présentation. Le fait que ce soit un bloc dans une Xref relève plus du contexte que de la demande il me semble.

 

 

Lispeur éternel débutant!
Autocad Map3D 2023
Covadis-Autopist 18.2

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é