Aller au contenu

Suite insertion en masse sur autocad


Messages recommandés

Posté(e)

Comme c'est mon premier message je l'ai l'ai mis au mauvais endroit c'est pouquoi je le renvoie

 

Bonjour à tous

Etant interressé par cette routine http://www.cadxp.com/sujetXForum-9385.htm

,je l'ai testée ,elle insère tous les blocs d'un répertoire

avec un pas constant horizontal dans le sens de X. j'aimerai pouvoir les insérer suivant une longueur max définie et continuer l'insertion en se décallant verticalement en Y et ainsi de suite.

pour etre plus précis faire rentrer n blocs dans un format (A4 ou A3 exct... au choix) avec autant de formats prédéfinis que nécessaire. Pour plus de clareté on peut créer le format par un rectangle.

Le but recherché est le mème que "grand_sapin" excepté que j'aimerai ensuite les imprimer

proprement et rajouter au-dessus de chaque bloc son nom dwg avec le contenu des attributs s'ils en possède.

Si quelqu'un peut m'aider sur ce sujet ,je le remercie d'avance .

 

Posté(e)

avec un pas constant horizontal dans le sens de X.

Non pas constant, mais calculé sur l'encombrement du bloc.

 

Ce que tu demande est, je pense, réalisable mais cela demande un développement plus approfondi (donc du temps)

 

Un problème se pose par rapport a ton format imposé, c'est l'échelle d'insertion du bloc.

Il se peut très bien que le bloc une fois inséré dépasse de ton format imposé.

Si l'échelle n'a pas d'importance, on peut envisager une insertion ajustée à la page.

 

J'espère que tu concois que ça devient vraiment une demande, bien qu' interressante, qui demande pas mal d'investissement pour un programmeur.

 

Personnelement je suis pas "très chaud" pour réaliser ceci. D'autant plus qu'il est plus judicieux de ce créer un menu bibliothéque ou l'insertion pourrait se faire à travers des clichés contenus dans une boite de dialogue. On voit ce qu'on insère....

 

Par contre on peut envisager d'automatiser la création des clichés du dossier bibliothéque. Sur ce point je pourrais te donner un coup de main je pense.

 

 

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

Posté(e)

merci pour ta reponse bonuscad

L'échelle du bloc doit etre de 1,si un bloc depasse le format imposé,il est ignoré.

Le but est de traiter des centaines de blocs pour les imprimer en les mettant en pages avec

tous les renseignements qu'ils possèdent.Je suis conscient du temps que cela peut prendre.

mais je compte m'y mettre et une fois terminée la mettre a disposition sur le site .

l'aide dont j'ai besoin est juste un principe de décalage suivant un format quelconque.

En ce qui concerne la création des clichés ,c'est fait .La gestion d'affichage je m'y attaque ensuite mais je me demande si c'est encore nécessaire avec les nouvelles version d'autocad

et des palettes.C'est pourquoi je préfére avoir des outils de gestions de blocs (pour constituer

des livrets,pour faire des mises a jour exct...)

 

 

Posté(e)

Voici un 1er jus de ce que j'ai pu faire.

 

(defun des_vec (lst col / lst_sg)
(setq lst_sg (list (cadr lst) (car lst)))
(setq lst (cdr lst))
(while lst
	(if (cadr lst)
		(setq lst_sg (cons (cadr lst) (cons (car lst) lst_sg)))
		(setq lst_sg (cons (last lst_sg) (cons (car lst) lst_sg)))
	)
	(setq lst (cdr lst))
)
(setq lst_sg (cons col lst_sg))
(grvecs lst_sg)
)
(defun c:cahier_bloc ( / old_osmd prefix pt_ins pt_tmp lst_dwg n dx dy loop key pt pt_last obj ll ur lg)
(setvar "cmdecho" 0)
(setvar "attreq" 0)
(setq old_osmd (getvar "osmode"))
(setvar "osmode" 0)
(vl-load-com)
(setq prefix (strcat (vl-filename-directory (getfiled "Sélectionner un fichier DWG TEMOIN" "" "dwg" 16)) "\\"))
(setq pt_ins (getpoint "\nPoint d'insertion pour le 1er Bloc? <0.0,0.0,0.0>: "))
(if (null pt_ins) (setq pt_ins '(0.0 0.0 0.0)))
(setq pt_tmp pt_ins lst_dwg (vl-directory-files prefix "*.dwg" 1))
(setq n (length lst_dwg))
(initget "A4 A3")
(setq dx (if (eq (getkword "\nQuel format [A4/A3]? < A4 >: ") "A3") 420.0 210.0) dy (* 210.0 (sqrt 2)) loop T)
(command "_.zoom" "_window" pt_ins (list (* dx n) (* dy n)))
(while (and (setq key (grread T 4 0)) (/= (car key) 3) loop)
	(cond
		((eq (car key) 5)
			(setq pt (cadr key))
			(redraw)
			(repeat n
				(des_vec
					(list
						(list (car pt_ins) (cadr pt_ins))
						(list (+ (car pt_ins) dx) (cadr pt_ins))
						(list (+ (car pt_ins) dx) (+ (cadr pt_ins) dy))
						(list (car pt_ins) (+ (cadr pt_ins) dy))
					)
					3
				)
				(if (> (car pt) (car pt_ins))
					(setq pt_ins (list (+ (car pt_ins) dx) (cadr pt_ins)))
					(setq pt_ins (list 0.0 (+ (cadr pt_ins) dy)))
				)
			)
			(setq pt_ins pt_tmp pt_last pt)
		)
		((or (member key '((2 13) (2 32))) (eq (car key) 25))
			(setq loop nil)
			(repeat n
				(command "_.rectang" (list (car pt_ins) (cadr pt_ins)) (list (+ (car pt_ins) dx) (+ (cadr pt_ins) dy)))
				(if (> (car pt_last) (car pt_ins))
					(setq pt_ins (list (+ (car pt_ins) dx) (cadr pt_ins)))
					(setq pt_ins (list (car pt_tmp) (+ (cadr pt_ins) dy)))
				)
			)
		)
	)
)
(redraw)
(foreach dwg lst_dwg
	(setq Obj
		(vla-InsertBlock
			(vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
			(vlax-3d-point (mapcar '/ (mapcar '+ (list (car pt_ins) (cadr pt_ins)) (list (+ (car pt_ins) dx) (+ (cadr pt_ins) dy))) '(2.0 2.0)))
			(strcat prefix dwg)
			1
			1
			1
			0
		)
	)
	(vla-GetBoundingBox Obj 'll 'ur)
	(setq ll (safearray-value ll))
	(setq ur (safearray-value ur))
	(command "_.rectang" (list (car pt_ins) (cadr pt_ins)) (list (+ (car pt_ins) dx) (+ (cadr pt_ins) dy)))
	(command "_.text" "_justify" "_tleft" (list (car pt_ins) (+ (cadr pt_ins) dy)) "5.0" "0.0" dwg)
	(if (> (car pt) (car pt_ins))
		(setq pt_ins (list (+ (car pt_ins) dx) (cadr pt_ins)))
		(setq pt_ins (list 0.0 (+ (cadr pt_ins) dy)))
	)
)
(command "_.zoom" "_all")
(command "_.zoom" "_extents")
(setvar "osmode" old_osmd)
(setvar "attreq" 1)
(setvar "cmdecho" 1)
(prin1)
)

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

Posté(e)

merci bonuscad

je viens de tester ,je te remercie ,l'insertion de chaque bloc se fait dans un format définit,ce que je cherchais est de mettre un max de blocs par format.Je n'ai sans doute pas été assez précis dans ma demande et je m'en excuse.

Un 1er format est créé avec autant de blocs qu'il peut contenir et ainsi de suite.

Ce que tu as fait est déja une bonne base de travail ,je vais essayer de continuer par contre

je ne suis pas aussi rapide,faute de temps et de maitrise.

Ce site d'entraide est super ,merci bonne journée

 

J'allais oublier ta méthode pour permettre d'orienter les formats c'est parfait .

 

[Edité le 4/4/2006 par sergeluc]

Posté(e)

Je n'ai sans doute pas été assez précis dans ma demande et je m'en excuse.

 

Hé oui, d'où l'importance d'être explicite sur ce que l'on veut obtenir, maintenant que l'on peut joindre plus facilement des images, ne pas hésiter.

 

Un dessin vaut mieux qu'un long discours mal fichu :mad:

 

Sans rancune ;)

 

PS: Si j'ai un peu de temps, j'essayerais de réfléchir à cette disposition

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

Posté(e)

bonjour Bonuscad

J'ai regarder un peu ta routine ,je n'ai pas ton niveau en lisp et j'arrive a en décortiquer

60% ,pour pouvoir le complèter afin d'obtenir :

 

je viens de tester ,je te remercie ,l'insertion de chaque bloc se fait dans un format définit,ce que je cherchais est de mettre un max de blocs par format.Je n'ai sans doute pas été assez précis dans ma demande et je m'en excuse.

Un 1er format est créé avec autant de blocs qu'il peut contenir et ainsi de suite.

 

Il me manque quelques commentaires entr'autre sur:

"defun des_vec " et

'loop" et

"(vlax-3d-point (mapcar '/ (mapcar '+ (list (car pt_ins) (cadr pt_ins)) (list (+ (car pt_ins) dx) (+ (cadr pt_ins) dy))) '(2.0 2.0)))"

 

 

merci d'avance si c'est possible

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é