Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

je chercge un moyen d'acceder aux données de types "BLOCK_RECORD".

 

je n'y arrive pas avec un ssget ou avec tblnext.

 

une idée ?

 

Merci d'avance !

 

[Edité le 23/11/2006 par pingoo666]

Posté(e)

Merci mais ca amrche pas (ou en tous cas je m'y prend mal)

 

en gros j'ai besoin de créer un tableau avec des blocs dedans.

 

en étudant un (entget) du tableau on voie que pour une cellule c'est le code 340 qui définit le bloc inséré. il pointe vers une entité.

 

Le problème est que je n'arrive pas à accéder (ou a créer) a ces données autrement qu'avec un :

 (entget (cdr (assoc 340 (entget (car (entsel))))))

 

sur le tableau.

 

donc je ne peut pas mettre mes blocs dans le tableau.

 

Pour les intéressés la finalité de ce lisp est de créer un tableau avec le nombre d'occurence de chaque bloc inséré.

Posté(e)

Au fait, je m'en sers sur des dessins contenant au delà de 200 blocs, c'est monstrueusement lourd pour l'unité centrale !

Combien de fois j'ai planté la machine ?!

 

Voici une version qui découpe l'opération en plusieurs tableaux.

Je vous le garantie, c'est indispensable quand la quantité est importante,... et les blocs complexes.

On ne sait jamais.

 

code vite fait, comme d'hab. (je ne m'appelle pas Gile ou Patrick !).

(defun c:tabloblo (/ libloc liidbloc ss col liref ptins tableVL cont)
 (vl-load-com)
 (princ "\nSélectionnez les blocs à lister ou ")
 (if (not (setq ss (ssget '((0 . "INSERT")))))
   (setq ss (ssget "_X" '((0 . "INSERT")))
  col T
  )
   )
 (setq liref(if ss
       (mapcar '(lambda (x)
		  (setq x (vlax-ename->vla-object x))
		  (if (vlax-property-available-p x 'EffectiveName)(vla-get-EffectiveName x)(vla-get-Name x)))
	       (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))nil))  
 (if col
   (vlax-for i (vla-get-Blocks (vla-get-activedocument (vlax-get-acad-object)))
     (if (and (/= (substr (vla-get-name i) 1 1) "*") (= :vlax-false (vla-get-IsXref i)) )
(setq libloc (append libloc (list (vla-get-name i)))
      liidbloc (append liidbloc (list (vla-get-ObjectID i))))))
   (setq libloc (remove_doubles liref)
  liidbloc (mapcar
	     '(lambda (x)(vla-get-ObjectID(vla-item(vla-get-Blocks(vla-get-activedocument(vlax-get-acad-object)))x)))libloc)))

 (setq long(length libloc))
 (princ(strcat"\nLongueur de liste = "(itoa long)))
 (setq nb(getint"  nombre de tableaux désiré ? : "))

 (setq petilong (/ long nb))
 (setq reste(- long(* nb petilong)))
 (setq compt 1)(setq petitcont -1)
 (setq petilong2(if(zerop reste)nb(+ nb reste)))

 (repeat nb
   (initget 1)
   (setq ptins (trans (getpoint "\nPoint d'insertion: ") 1 0))
   (setq tableVL (vla-addtable (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)) )
	    (vlax-3d-point ptins)
	    (if(		    3
	    100
	    100))
   (vla-put-TitleSuppressed tableVL :vlax-true)
   (setq cont -1)
   (repeat (vla-get-Rows tableVL)
     (setq petitcont (1+ petitcont))
     (vla-settext	tableVL	(setq cont (1+ cont))	0	(nth petitcont libloc)	)
     (vla-settext	tableVL	cont	1	(length (vl-remove-if-not '(lambda (n) (= n (nth petitcont libloc)))  liref )))
     (vla-SetBlockTableRecordId	tableVL	cont	2	(nth petitcont liidbloc)	:vlax-true)
     (vla-setcellalignment tableVL cont 0 5)
     (vla-setcellalignment tableVL cont 1 5)
     )
   (setq compt(1+ compt))
   )
 (princ)
 )

;;; REMOVE_DOUBLES - Suprime tous les doublons d'une liste

(defun REMOVE_DOUBLES (lst)
 (cond
   ((atom lst) lst)
   (T
    (cons (car lst) (REMOVE_DOUBLES (vl-remove (car lst) lst)))
    )
   )
 )

 

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

La perfection n'est pas de ce monde ;)

Ca me rapelle cette pensée

 

La forme même des pyramides d'Egypte montre que déjà les ouvriers avaient tendance à en faire de moins en moins.

Will Cuppy

 

@+

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

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é