Aller au contenu

Exportation de Type de ligne


Messages recommandés

Posté(e)

Bonjour a tous, je vous expose mon souhait, je viens de récuperer un dessin sous autocad 2004, et celui comporte des types de lignes non-ordinaires du genre --EU--EU--, et bien d'autre encore, et je voudrais savoir si il possible d'enregistrer ces types de ligne quelque part (car ca m'eviterais de les recréer) afin que je puisse les réutiliser plus tard sur un autre dessin.

Si cela est possible, pouvez vous me dire la marche a suivre svp.

D'avance merci

Posté(e)

Bonjour,

 

Essaye ce qui suit,

Pour que ça fonctionne, le type de ligne doit être assigné à un objet et non au calque.

 

 
(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 fais un copier-coller du résultat de l'écran texte dans un fichier .LIN

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

Posté(e)

Salut,

 

Comme je ne sais pas ce que tu connais ou pas de l'utilisation des LISP je vais expliquer comme si tu étais un débutant complet, ne t'en offusque pas si ce n'est pas le cas.

 

Tu fais un copier/coller du code de Bonuscad dans le bloc note (attention de ne pas oublier une paranthèse !).

Tu l'enregistres avec l'extention .lsp (typline.lsp par exemple)

Dans le menu outils d'AutoCAD, choisis Charger une application... et charge le fichier que tu viens de créer.

À la ligne de commande, tape : model_typline (ce qui écrit après (defun c: dans le code).

Puis tu réponds aux invites comme pour les commandes AutoCAD.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

(gile) à répondu avant moi.

 

Je rajouterais juste que tu peux faire aussi le coller directement en ligne de commande Autocad, suivi d'un éventuel "return".

 

C'est pratique quand tu veux juste essayer et pas forcément garder le code dans un fichier.

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

Posté(e)

oki merci a vous 2 mais j'avais deja reussi a faire le copier-coller (<acronym class=dict title=) et a le charger sur autocad, mais c ensuite, de part les questions quil me demande que j'ai du mal a comprendre !!!!

Creer, charger, actuel ?????

Voila quoi, apres plusieur essaie je n'arrive pas a ce que je voulais faire au départ alors est-ce que je me suis mal exprimé ?????

J'ai aussi reussi a obtenir un fichier en .las et un autre en .lin , mais qd je les ouvrent avec un nouveau dessin je n'est pas mon type de ligne du départ !

[Edité le 5/1/2006 par doberman]

 

[Edité le 5/1/2006 par doberman]

Posté(e)

Salut,

 

Les lignes du type

--EU--EU--

utilisent une certaine police de caratères.

Pour pouvoir les utiliser dans un dessin, il faut que la même police

soit déjà présente dans le dessin.

Posté(e)

Bah alors là je ne sais pas quel police a eté utilisé pour créer ces type de lignes !!

Et moi lors de mon essai je sui parti d'un nouveau dessin vierge, donc rien de charger, et je n'est pas reussi a importer le type de ligne !

 

Posté(e)

J'ai aussi reussi a obtenir un fichier en .las et un autre en .lin , mais qd je les ouvrent avec un nouveau dessin je n'est pas mon type de ligne du départ !

 

Fichier .las ???? .lsp tu veux dire.

 

Voici un exemple de déroulement.

Dans ton dessin origine où tu veux récupérer la définition du type de ligne.

Dessine une ligne quelconque, en lui affectant le type de ligne qui t'interesse

-Tu charges le lisp.

Au message commande, tu devrais avoir dans la dernière ligne de l'historique:

C:MODEL_TYPLINE

Commande:

Tu tapes alors cette nouvelle commande, exemple:

Commande: model_typline

Choix du TypeLigne modèle: Sélection de ta ligne

Précision décimale désirée<4>:

 

*GAZ,Gaz ----GAZ----GAZ----GAZ----GAZ----GAZ----GAZ-

A,12.7000,-5.0800,["GAZ",Standard,S=2.5400,R=0.0000,x=-2.5400,y=-1.2700],-6.3500

 

Commande:

Tu fais un copier-coller de l'astérisque à la 1ère ligne-vierge dans le bloc-note et tu l'enregistre (ici GAZ.LIN)

 

 

Dans un nouveau dessin

Commande: -typeligne

 

Type de ligne courant: "DuCalque"

Entrez une option [?/CRéer/Charger/Actuel]: charger

 

Entrez les types de ligne à charger: gaz (Sélection du fichier LIN à utiliser)

 

Type de ligne "GAZ" chargé.

 

Entrez une option [?/CRéer/Charger/Actuel]: a

 

Spécifiez le nom du type de ligne ou [?] : gaz

 

Entrez une option [?/CRéer/Charger/Actuel]:

 

Commande:

 

 

Ca va pour les manips ?...

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

Posté(e)

le style de plolice utilisé est là

Commande: model_typline

Choix du TypeLigne modèle: Sélection de ta ligne

Précision décimale désirée<4>:

 

*GAZ,Gaz ----GAZ----GAZ----GAZ----GAZ----GAZ----GAZ-

A,12.7000,-5.0800,["GAZ", [surligneur] Standard[/surligneur],S=2.5400,R=0.0000,x=-2.5400,y=-1.2700],-6 .3500

 

mais attention tu n'obtiendras pas le même résultat

que l'original si le style de police a été renommée.

Posté(e)

Ok ca yest ca marche presque, ca ne marchais pas car javais mal interpreté : "Tu fais un copier-coller du résultat de l'écran texte dans un fichier .LIN", Donc betement moi j'ai coller le texte(que tu ma donner Bonuscad) ds le bloc note avec l'extension en .lin, ensuite j'ai voulu exporté le calque..... enfin bref (des conneries quoi)!!

Là c'est bon j'ai bien coller le texte ds le blos note en .lsp, le lisp se charge correctement, je le lance, je pointe ma ligne concernée et la le verdict : "Impossible de récuperer le type de ligne de l'objet pointé.".

Donc .......:casstet:

 

 

 

 

Ps : Non non Bonuscad je voulais bien dire en .LAS et non pas LSP !!!!!!!!! (<acronym class=dict title=) C'est ca d'etre ignorant (je parle pour moi)!

Posté(e)

Heuuuuuuuuu

En fait ca marche, je c pas pourquoi mais apres plusieur essai sa fonctionne parfaitement.

Merci a vous tous.

Juste une derniere question pour la route, je ne peu pas modifié directement le fichier AutoCAD.lin au lieu de creer plusieur fichier pour chaque type de ligne que je veu sauvegarder ?

Posté(e)

Juste une derniere question pour la route, je ne peu pas modifié directement le fichier AutoCAD.lin au lieu de creer plusieur fichier pour chaque type de ligne que je veu sauvegarder ?

 

Oui, tu peux les rajouter dans AutoCAD.LIN ou ACADISO.LIN , mais je te le déconseille car c'est le meilleur moyen pour perdre ses sources. Il vaut mieux les conserver distinctement tu pourras par exemple les faire migrer plus facilement sur une version ultérieure d'Autocad.

 

enfin bref (des conneries quoi)!!

Il n'ai pas toujours facile d'expliquer les choses correctement quand pour nous, ça nous semble évident.

 

Donc faute partagée

 

;)

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

Posté(e)

Ok en tout cas merci pour votre aide tres tres reactive.

 

Je pense que Bonuscad, je pourrais facilement te surnommer Zorro, celui qui tire, plus vite que son ombre, car pour repondre a un sujet 10min apres sa sortie, là moi je dit qd meme Chapeau !!

 

Encore merci pour tout, à tous !

 

Posté(e)

10 min, c'est plus qu'assez pour faire un copier-coller. ;)

 

J'avais répondu il y a longtemps à cette demande (je ne sais plus où). Moi même j'ai été confronté à ce genre de problème.

 

En remarque: Si le type de ligne contient des formes, dans ce cas, bien que la définition du type de ligne soit correcte, il manquera le fichier de forme SHX. Ceci est beaucoup plus génant que pour une police car aucune substitution approchante ne peut être faite.

 

L'usage de "etransmit" devrait être systématique lors de livraison de fichiers pour ne pas être confronté a ce genre de problèmes.

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

  • 9 mois après...
Posté(e)

La création d'un type de ligne se déroule comme suit :

-typeligne

Type de ligne courant:"DuCalque"

Entrez une option [?/CRéer/CHarger/Actuel]: cr

Entrez le nom du type de ligne à créer: NomTypeLigne

[surligneur]Vérification des types de lignes déjà définis...

veuillez patienter SVP... [/surligneur]

Texte de description: ---- . ----- . ----

Entrez le motif du type de ligne (sur la ligne suivante):

---A,1.5,-0.5,0,-0.5,0.5,-0.5,0,-0.5

Nouvelle description du type de ligne enregistrée dans le fichier.

Entrez une option [?/CRéer/CHarger/Actuel]: ?

Types de lignes définis dans le fichier C:\Documents.....\acad.lin:

 

Mais il demande un fichier lin... Mais je ne veux pas lui en donner un... Car je créé mon type à chaque dessin, et s'il le trouve déjà dans un lin... AutoCAD va me chercher des noises ;)

 

Alors comment faire... Je ne voix pas comment je pourrais m'en sortir...

 

J'ai vu un truc avec (vl-add c "clayer"... Mais peut-on faire de même avec un type de ligne ?

 

Car je ne trouve absolument rien dans l'aide sur (vl-add...

 

Je suis en train de réécrire tout mon code (25xx lignes ! !) et j'ai besoin de savoir celà pour le faire correctement.

 

Merci d'avance pour tous conseils ou astuces,

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Salut,

 

Un petit bout de code pour faire une liste de tous les types de ligne du fichier acadiso.lin.

 

(setq f (open (findfile "acadiso.lin") "r"))
 (while (setq l (read-line f))
   (if	(= (substr l 1 1) "*")
     (setq lst (cons (substr l 2 (1- (vl-string-position 44 l))) lst))
   )
 ) 

 

tu peux ensuite évaluer si le nom du style que tu crées est déjà présent dans la liste avec la fonction MEMBER.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

heu... je crois que l'on va se croiser au vu du nombre de messages déposé par Denis sur ce sujet

J'ai aussi donné une réponse mais je pense que le plus simple serait que Denis fasse un nouveau sujet

 

@+

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

Posté(e)

J'hésite toujours à créer un sujet, je ne veux pas monopoliser le site...

 

Mais si on me le demande.

 

Merci à tous les deux,

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

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é