Aller au contenu

Récupérer un calque de bloc à bue multiples


Messages recommandés

Posté(e)

Bonjour

 

Nous avons créé des murs composés de plusieurs éléments répartis sur plusieurs calques. Ces objets sont posés sur le calque Autodesk Architectural Desktop Insert.

Du coup les menus express pour geler ou désactiver le calque de l'objet cliqué ne marchent plus (ils agissent sur Autodesk Architectural Desktop Insert et "effacent" tous les éléments)

 

Connaissez-vous un moyen de récupérer l'info sur le calque d'un élément d'un bloc à vue multiple pour n'agir que sur un des calques utilisés dans le bloc ?

 

[Edité le 30/11/2006 par vpl]

Posté(e)

le code autoLISP à enregistrer dans un fichier texte avec extension .LSP

 

(defun table_entete (TB / TBLIST TBLIST TBNAME RES)
 (setq TBNLIST nil)
 (setq TBLIST (tblnext TB T))
 (while TBLIST
   (setq TBNAME (cdr (assoc 2 TBLIST)))
   (setq TBNLIST (append TBNLIST (list TBNAME)))
   (setq TBLIST (tblnext TB))
 )
 (setq RES TBNLIST)
)

(defun Programmation (ARG_TYPE	      /		      PRIVE_RESULTAT
	      n		      PRIVE_ENTITE    PRIVE_FILE
	      PRIVE_BOUCLE    PRIVE_ENTETE
	     )
 (cond
   ((= ARG_TYPE 1)			; Entité Variable Entité
    (progn
      (setq PRIVE_ENTITE nil)
      (while (not PRIVE_ENTITE)
 (setq PRIVE_ENTITE (entsel "Entité:"))
      )
      (setq PRIVE_ENTITE (entget (car PRIVE_ENTITE)))
      (if (assoc 7 PRIVE_ENTITE)
 (progn
   (Princ "\nBibliothèque :")
   (foreach n
	      (tblsearch "STYLE" (cdr (assoc 7 PRIVE_ENTITE)))
     (print n)
   )
 )
      )
      (if (assoc 7 PRIVE_ENTITE)
 (Princ "\n\nEntité :")
      )
      (foreach n PRIVE_ENTITE (print n))
      (setq PRIVE_RESULTAT PRIVE_ENTITE)
      (if
 (and
   (= (cdr (assoc 0 PRIVE_ENTITE)) "INSERT")
   (assoc -2 (tblsearch "BLOCK" (cdr (assoc 2 PRIVE_ENTITE))))
 )
  (progn
    (Princ "\n\nEntité(s) dans le bloc:")
    (setq PRIVE_ENTITE
	   (entget
	     (cdr
	       (assoc
		 -2
		 (tblsearch "BLOCK"
			    (cdr (assoc 2 PRIVE_ENTITE))
		 )
	       )
	     )
	   )
    )
    (foreach n PRIVE_ENTITE (print n))
    (while (entnext (cdr (assoc -1 PRIVE_ENTITE)))
      (princ "\n")
      (setq PRIVE_ENTITE
	     (entget
	       (entnext (cdr (assoc -1 PRIVE_ENTITE)))
	     )
      )
      (foreach n PRIVE_ENTITE (print n))
    )
  )
      )
    )
   )
   ((= ARG_TYPE 2)			; Table de l'entité selectionnée
    (progn
      (setq PRIVE_ENTITE nil)
      (while (not PRIVE_ENTITE)
 (setq PRIVE_ENTITE (entsel "Entité: "))
      )
      (setq PRIVE_ENTITE (entget (car PRIVE_ENTITE)))
      (if (or (= (cdr (assoc 0 PRIVE_ENTITE)) "TEXT")
       (= (cdr (assoc 0 PRIVE_ENTITE)) "MTEXT")
   )
 (progn
   (print (cdr (assoc 0 PRIVE_ENTITE)))
   (setq PRIVE_RESULTAT (TABLE_ENTETE "STYLE"))
 )
      )
      (if (or (= (cdr (assoc 0 PRIVE_ENTITE)) "LINE")
       (= (cdr (assoc 0 PRIVE_ENTITE)) "LWPOLYLINE")
       (= (cdr (assoc 0 PRIVE_ENTITE)) "CIRCLE")
       (= (cdr (assoc 0 PRIVE_ENTITE)) "XLINE")
   )
 (progn
   (print (cdr (assoc 0 PRIVE_ENTITE)))
   (foreach n
	      (tblsearch "LTYPE" (cdr (assoc 6 PRIVE_ENTITE)))
     (if n
       (print n)
     )
   )
   (setq PRIVE_RESULTAT (TABLE_ENTETE "LTYPE"))
 )
      )
      (if (= (cdr (assoc 0 PRIVE_ENTITE)) "INSERT")
 (progn
   (print (cdr (assoc 2 PRIVE_ENTITE)))
   (setq PRIVE_RESULTAT (TABLE_ENTETE "BLOCK"))
 )
      )
      (if PRIVE_RESULTAT
 (progn
   (princ "\nListe des Entêtes: ")
   (foreach n PRIVE_RESULTAT (Print n))
 )
      )
    )
   )
   ((= ARG_TYPE 3)			; Voler le type de ligne de l'archi format DXF
    (progn
      (setq PRIVE_FILE (open "C:\\LTYPE.CSV" "w"))
      (foreach	n (TABLE_ENTETE "LTYPE")
 (progn
   (setq PRIVE_BOUCLE 0)
   (setq PRIVE_RESULTAT "")
   (setq PRIVE_ENTETE (entget (tblobjname "LTYPE" n)))
   (if (assoc -1 PRIVE_ENTETE)
     (setq PRIVE_ENTETE
	    (vl-remove (assoc -1 PRIVE_ENTETE)
		       PRIVE_ENTETE
	    )
     )
   )
   (if (assoc 5 PRIVE_ENTETE)
     (setq PRIVE_ENTETE
	    (vl-remove (assoc 5 PRIVE_ENTETE)
		       PRIVE_ENTETE
	    )
     )
   )
   (if (assoc 330 PRIVE_ENTETE)
     (setq PRIVE_ENTETE
	    (vl-remove (assoc 330 PRIVE_ENTETE)
		       PRIVE_ENTETE
	    )
     )
   )
   (if (assoc 340 PRIVE_ENTETE)
     (setq PRIVE_ENTETE
	    (vl-remove (assoc 340 PRIVE_ENTETE)
		       PRIVE_ENTETE
	    )
     )
   )
   (while (< PRIVE_BOUCLE (length PRIVE_ENTETE))
     (setq PRIVE_ENTITE
	    (vl-string-subst
	      ":"
	      " . "
	      (vl-princ-to-string
		(nth PRIVE_BOUCLE PRIVE_ENTETE)
	      )
	    )
     )
     (setq PRIVE_ENTITE (strcat "[" (substr PRIVE_ENTITE 2)))
     (setq PRIVE_ENTITE
	    (strcat (substr PRIVE_ENTITE
			    1
			    (- (strlen PRIVE_ENTITE) 1)
		    )
		    "]"
	    )
     )
     (setq PRIVE_RESULTAT
	    (strcat PRIVE_RESULTAT
		    (if	(/= "" PRIVE_RESULTAT)
		      ";"
		      ""
		    )
		    PRIVE_ENTITE
	    )
     )
     (setq PRIVE_BOUCLE (1+ PRIVE_BOUCLE))
   )
   (if (/= (cdr (assoc 2 PRIVE_ENTETE)) "Continuous")
     (write-line PRIVE_RESULTAT PRIVE_FILE)
   )
 )
      )
      (close PRIVE_FILE)
    )
   )
   (t nil)
 )
 PRIVE_RESULTAT
)

 

après avoir créer à l'aide du bloc note ce fichier - enregistrer.

glisser le fichier dns la fenêtre de dessin d'Autodesk Autodesk Architectural Desktop et

créer un bouton pour avoir toutes les entités dans le le bloc sélectionné

^C^C (setq PUBLIC_PROGRAM (Programmation 1))(princ)

 

à l'aide de la touche F2 vous voyer un listing avec des codes :

pour chaque sous entité

(0 . "xxxxxxxx") est le type d'entité

(2 . "xxxxxxxx") est le nom du bloc

(8 . "xxxxxxxx") est le calque dans lequel il est dessiné

 

 

[Edité le 30/11/2006 par Maximilien]

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Posté(e)

Merci pour cette réponse.

 

Honnêtement je vais transmettre au développeur qui bosse pour nous parce que pour moi c'est du chinois...

Je suis quand même impressionné par la réactivité et la précision de la réponse, du coup je relance une autre question ! paf !

Posté(e)

La suite...

 

En fait on cherche à récupérer ces données pour des objets AEC ijnsérés dans le fichier, et la méthode donnée est pour les blocs. Une idée ?

 

Merci d'avance

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é