Aller au contenu

passer de 2D en 3D


Messages recommandés

Posté(e)

Bonjour,

 

J'aimerai savoir si il existe un lisp qui permettrait de passer des blocs avec attributs (pour renseigner des altitudes TN) en 2D vers la 3D c'est à dire avec le Z renqseigné automatiquement en sachant que dans les attributs on connait le Z (format texte).

Merci de répondre rapidement car on est un peu bloqué à cause de ça !!!

 

A +

Posté(e)

La commande s'appelle ATTEXT et permet d'extraire la valeur Z d'un attribut.

 

Mais la question n'est pas claire. Tu veux déplacer en Z tes blocs ?

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

J'ai bien une routine que j'ai écrite depuis fort longtemps, elle n'est pas à jours pour les versions actuelles, mais je pense qu'elle peut répondre a ton problème pour des entités "INSERT".

Essaye, ca ne mange pas de pain!

(defun mdf_10 (lst cod / nw_pt)
(setq nw_pt (trans (cdr (assoc cod lst)) (cdar lst) 0))
(subst
	(cons cod (list (car nw_pt) (cadr nw_pt) 0.0))
	(assoc cod lst)
	lst
)
)
(defun mdf_210 (lst / )
(subst
	'(210	0.0	0.0 1.0)
	(assoc 210 lst)
	lst
)
)
(defun chg_lst (dx_lst dx_cod / )
(while dx_cod
	(cond
		((eq (car dx_cod) 10)
			(setq dx_lst (mdf_10 dx_lst 10))
		)
		((eq (car dx_cod) 11)
			(setq dx_lst (mdf_10 dx_lst 11))
		)
		((eq (car dx_cod) 12)
			(setq dx_lst (mdf_10 dx_lst 12))
		)
		((eq (car dx_cod) 13)
			(setq dx_lst (mdf_10 dx_lst 13))
		)
		((eq (car dx_cod) 210)
			(setq dx_lst (mdf_210 dx_lst))
		)
	)
	(setq dx_cod (cdr dx_cod))
)
(entmod dx_lst)
)
(defun id_ent (name / )
(setq dxflst (entget name))
(setq dxfnam (cdr (assoc 0 dxflst)))
(cond
	((eq dxfnam "LINE")
		(chg_lst dxflst '(10 11 210))
	)
	((or
		(eq dxfnam "POINT")
		(eq dxfnam "CIRCLE")
		(eq dxfnam "ARC")
		(eq dxfnam "ATTDEF")
		(eq dxfnam "SHAPE")
	 )
		(chg_lst dxflst '(10 210))
	)
	((eq dxfnam "TEXT")
		(if (assoc 11 dxflst)
			(chg_lst dxflst '(10 11 210))
			(chg_lst dxflst '(10 210))
		)
	)
	((or
		(eq dxfnam "TRACE")
		(eq dxfnam "SOLID")
		(eq dxfnam "3DFACE")
	 )
	 (chg_lst dxflst '(10 11 12 13 210))
	)
	((eq dxfnam "POLYLINE")
		(setq s_lst (entget (entnext (cdar dxflst))))
		(while (/= (cdr (assoc 0 s_lst)) "SEQEND")
			(chg_lst s_lst '(10))
			(setq s_lst (entget (entnext (cdar s_lst))))
		)
		(setq dxflst (subst '(10 0.0 0.0 0.0) (assoc 10 dxflst) dxflst))
		(entmod dxflst)
		(chg_lst dxflst '(210))
		(entupd (cdar dxflst))
	)
	((eq dxfnam "INSERT")
		(cond
			((and (assoc 66 dxflst) (not (zerop (cdr (assoc 66 dxflst)))))
				(setq s_lst (entget (entnext (cdar dxflst))))
				(while (= (cdr (assoc 0 s_lst)) "ATTRIB")
					(if (assoc 11 s_lst)
						(chg_lst s_lst '(10 11 210))
						(chg_lst s_lst '(10 210))
					)
					(setq s_lst (entget (entnext (cdar s_lst))))
				)
			)
		)
		(chg_lst dxflst '(10 210))
		(entupd (cdar dxflst))
	)
	((eq dxfnam "VIEWPORT")
		(prompt "\nNe peut modifier une entitée fenêtre, valeurs inchangées.")
	)
	((eq dxfnam "DIMENSION")
	)
)
)
(defun c:3DTO2D ()
(setq ind 0)
(setq js (ssget))
(repeat (sslength js)
	(setq n_ent (ssname js ind))
	(setq ind (1+ ind))
	(if (= ind 32768)
		(setq ind (float ind))
	)
	(id_ent n_ent)
)
(prin1)
)

 

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

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é