Aller au contenu

Type de ligne vers fichiers LIN


Invité Sylvainhinard

Messages recommandés

Invité Sylvainhinard

Bonjour,

 

J'ai récemment trouvé comment créer un fichier LIN avec des formes. Je souhaiterais aussi savoir comment extraire un type de ligne vers un fichiers ligne

 

Quelqu'un peut m'eclaircir?

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

Salut

Si j'ai bien compris ta demande?

Le code suivant te permettra de récupérer la définition d'un type de ligne utilisé d'un dessin dont tu ne possède pas la source (dans le cas où "Etransmit" n'a pas été utilisé)

Si le type de ligne comporte des formes, il va de soi que la routine ne vas pas te fabriquer le SHX dépendant. elle ne se charge que du fichier .LIN.

Je n'ais jamais testé ce code sous 2005, tiens moi au courant s'il y a un problème. (pour information)

 

(defun c:model_typline ( / 
ent ent_dxf nam_tl def_tl prec m_adir m_abas nam_lin def_lin nbr_lin w_line lg_tiret tp_cpx cod_shx
ss_ent styl_tl file_shx scal_motif rot_motif x_motif y_motif str_motif)
(setvar "cmdecho" 0)
(while (not (setq ent (entsel "\nChoix du TypeLigne modèle: "))))
(setq ent_dxf (entget (car ent)) nam_tl (assoc 6 ent_dxf))
(cond
	((and (cdr nam_tl) (/= (cdr nam_tl) "ByLayer") (/= (cdr nam_tl) "ByBlock"))
		(initget 4)
		(setq
			def_tl (entget (tblobjname "Ltype" (cdr nam_tl)))
			prec (getint (strcat "\nPrécision décimale désirée<" (itoa (getvar "LUPREC")) ">: "))
		)
		(if (not prec) (setq prec (getvar "LUPREC")))
		(setq
			m_adir (getvar "angdir")
			m_abas (getvar "angbase")
			nam_lin (strcat "*" (cdr (assoc 2 def_tl)))
			def_lin (strcat "," (cdr (assoc 3 def_tl)))
			lg_lin (cdr (assoc 40 def_tl))
			nbr_line (cdr (assoc 73 def_tl))
			w_line "\nA"
		)
		(setvar "angdir" 0)
		(setvar "angbase" 0)
(textscr)
(princ (strcat "\n" nam_lin def_lin))
(princ w_line)
		(while (/= (caar def_tl) 49)
			(setq def_tl (cdr def_tl))
		)
		(while def_tl
			(cond
				((eq 49 (caar def_tl))
					(setq lg_tiret (cdar  def_tl))
(princ (strcat "," (rtos lg_tiret 2 prec)))
				)
				((eq 74 (caar def_tl))
					(setq tp_cpx (cdar  def_tl))
				)
				((eq 75 (caar def_tl))
					(setq cod_shx (cdar  def_tl))
(cond
((zerop cod_shx)
(princ (strcat ",[\"" (cdr (assoc 9 def_tl)) "\""))
)
((eq tp_cpx 4)
(princ ",[*")
)
)
				)
				((eq 340 (caar def_tl))
					(setq
						ss_ent (entget (cdr (assoc 340  def_tl)))
						styl_tl (cdr (assoc 2 ss_ent))
						file_shx (cdr (assoc 3 ss_ent))
					)
(if (eq styl_tl "")
(princ (strcat (itoa cod_shx) "," file_shx))
(princ (strcat "," styl_tl))
)
				)
				((eq 46 (caar def_tl))
					(setq scal_motif (cdr (assoc 46 def_tl)))
(princ (strcat ",S=" (rtos scal_motif 2 prec)))
				)
				((eq 50 (caar def_tl))
					(setq rot_motif (cdr (assoc 50 def_tl)))
(princ (strcat ",R=" (angtos rot_motif 0 prec)))
				)
				((eq 44 (caar def_tl))
					(setq x_motif (cdr (assoc 44 def_tl)))
(princ (strcat ",x=" (rtos x_motif 2 prec)))
				)
				((eq 45 (caar def_tl))
					(setq y_motif (cdr (assoc 45 def_tl)))
(princ (strcat ",y=" (rtos y_motif 2 prec) "]"))
				)
				((eq 9 (caar def_tl))
					(setq str_motif (cdr (assoc 9 def_tl)))
				)
			)
			(setq def_tl (cdr def_tl))
		)
		(setvar "angdir" m_adir)
		(setvar "angbase" m_abas)
	)
	(T (princ "\nImpossible de récuperer le type de ligne de l'objet pointé."))
)
(setvar "cmdecho" 1)
(prin1)
)

 

Tu n'as plus qu'a faire un copier-coller du résultat de la fonction (depuis l'écran texte "F2") dans un fichier LIN de nom adéquat.

 

Bruno V.

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

Lien vers le commentaire
Partager sur d’autres sites

Moi non plus, j'ai pas compris.

 

Mais,...j'utilise parfois -typeligne au lieu de typeligne pour générer depuis la lgine de commande, il propose d'écrire ou non dans le fichier LIN.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

mais juskou vatil saréter

 

Ca ne vas pas tarder, j'ai fais a peu près le tour de ce que je pouvais partager.

 

Mais il restera toujours de bonnes questions à résoudre, ou de bonnes idées à exploiter.

Et à l'aide des intervenants de ce forum, il y aura toujours de quoi se mettre sous la dent et de l'aide quand on "coince" ;)

 

 

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

Lien vers le commentaire
Partager sur d’autres sites

Invité Sylvainhinard

A l'attention de BonusCad,

 

Ton LISP fonctionne très bien (Autocad 2005), mais je tient à dire que si on veut récuperer le type de ligne, la polyligne que l'on choisi ne doit pas être en DUCALQUE. A part ça super LISP, tout mes felicitation et merci.

 

@+

Lien vers le commentaire
Partager sur d’autres sites

  • 6 ans après...
Invité linkin01

je déterre mais cette routine me remonte le moral ce vendredi matin :)

 

Fonctionne sur autocad 2009

 

merci !

 

[Edité le 6/5/2011 par linkin01]

Lien vers le commentaire
Partager sur d’autres sites

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é