Aller au contenu

Styles de traits personnalisés


Bacon

Messages recommandés

Salut à tous,

 

 

Comme je viens juste de m'inscrire je crois que j'ai le droit de poser ma première question bête à laquelle il doit exister 100 000 réponses mais que j'ai pas encore trouvées.

 

Donc comme le dit le sujet, je cherche à trouver une aide sur comment créer un style de trait personnalisé avec AutoCAD, en particulier ce que veulent dire en détail les hiéroglyphes des fichiers ASCII

 

De plus, quand on récupère un fichier dwg, Acad lit les styles de traits qu'il contient et sait les exploiter même s'ils ne sont pas définis dans un fichier ".lin". Existe-t-il une routine pour exporter toutes les définitions de styles de traits contenues dans un fichier graphique vers un fichier ".lin" ?

 

Evidemment, comme n'importe quel crétin, je suis pressé :calim:

 

En espérant un coup de pouce,

 

Merci et à+,

 

 

Bacon

Seuls les fous savent qu'ils ne sont pas fous...

 

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Essaye le code suivant, en espérant qu'il fasse ce que tu souhaite. ;)

 

(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)
)

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

Merci bonuscad,

 

 

 

Cependant, il y a un tout petit hic, c'est que du Lisp, moi y'en n'avoir jamais fait.

 

Bon, déja j'ai pigé que c'en était, ensuite j'ai créé un projet, j'ai copié le code et l'ai compilé. Je me retrouve au final avec un .lsp et un .fas

 

Comment j'exécute mon (excuse, "ton" ) code maintenant ? Je ne vois pas de bouton pour ça. Y'a pas de run ou de truc comme ça. Sinon, à la première lecture, ça a l'air sympa.

 

Si tu peux m'éclairer je suis preneur, ce serait dommage d'avoir fait tout ça pour rien maintenant...

 

Merci

 

Bacon

Seuls les fous savent qu'ils ne sont pas fous...

 

Lien vers le commentaire
Partager sur d’autres sites

Bonuscad,

 

J'ai un vlx comme fichier maintenant. Je l'ai chargé en tant qu'application Lisp, mais je ne connais pas la commande clavier (ou autre) qui permet de l'éxécuter.

 

D'avance merci... :P

 

Bacon

Seuls les fous savent qu'ils ne sont pas fous...

 

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Petit rappel: :exclam:

 

Pour charger une fonction lisp, les différente possibilités:

* la plus rapide; faire glisser depuis l'explorateur le fichier dans la zone écran d'autocad.

* la plus lente; taper à la ligne de commande

(load "/dossier du lisp/nom du lisp.lsp")

* par le menu "option" "charger application"

 

Pour lancer la fonction:

* Si la fonction est définie comme ceci : (defun c:mafonction .... taper MAFONCTION

* Si la fonction est définie comme ceci : (defun mafonction .... taper (MAFONCTION)

sur la ligne de commande

 

NB: Le resultat de la fonction model_typeline est affiché sur l'écran de texte.

 

Faire un copier-coller dans le fichier .LIN voulu (voir l'aide à propos des fichiers type de ligne)

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

Merci pour votre aide,

 

J'ai bien réussi à lancer l'appli, mais 3impossible de récupérer le type de ligne de l'objet pointé", et ceci arrive sur n'importe quel type de ligne, que ce soit du custom ou du simple trait continu ou tireté... :mad2:

 

Pas de bol !

 

Sinon le principe de récupération était idéal, c'est exactement ce que je cherchais...

 

Une autre idée ?

 

Bacon

Seuls les fous savent qu'ils ne sont pas fous...

 

Lien vers le commentaire
Partager sur d’autres sites

Précision,

 

Tu as certainement des entités qui se logent dans un calque dont le type de ligne et celui qui t'interresse. Crée simplement une ligne et "CHANGE" sa propriété en lui affectant ce type de ligne et non celui du calque. Et alors, j'espère, la routine pourra te renseigner. ;)

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

Bi joué Mister BonusCad ! :D

 

Ca tourne, en fait il ne faut pas apparemment que le style de trait soit en propriété du calque, sinon ça claque...

 

Bon, maintenant j'ai un tas de styles de traits à la noix, j'espère au moins qu'avec ce super joujou je vais pouvoir à traiter un maximum.

 

Encore un grand merci pour ce grand coup de main.

 

A charge de revanche...

 

Bacon ;)

Seuls les fous savent qu'ils ne sont pas fous...

 

Lien vers le commentaire
Partager sur d’autres sites

Bonuscad, :casstet:

 

 

Voici un extrait de deux définitions de styles de traits récupérés. Le shadok, c'est que quand je crée un nouveau fichier, il me renvoie balader au moment de charger les styles (mauvaise définition).

 

*GS_ClotureCroix,Cloture croix

A,0.5,[*4,dgnlstyle.shx,S=0.0016,R=0.0,x=0.0,y=0.0],0.5

*GS_Cloturelegere,Cloture legere

A,0.75,-0.05,[*2,dgnlstyle.shx,S=0.0008,R=0.0,x=0.0,y=0.0],-0.05

 

En fait, je crains que le *4 et le *2 ne soient pas interprétés, ou qu'il ne sache pas aller cherche le fichier dgnstyle.shx tout seul comme un grand.

 

Visuellement, la clôture croix est un trait continu avec des croisillons( des X) le long du trait.

La clôture légère c'est pareil mais avec des ronds, le trait conitnu étant alors partiellement interrompu.

 

Any idea ?

 

Bacon

 

 

 

Seuls les fous savent qu'ils ne sont pas fous...

 

Lien vers le commentaire
Partager sur d’autres sites

Là ce n'est plus le domaine des style de trait : *.LIN

mais celui des formes *.SHX sous forme compilé et *.SHP pour les sources.

 

Une possibilité te reste accessible si tu as les outils Express d'Autodesk.

Redessine par dessus ta forme avec des lignes (limitation de la routine des express qui ne produit pas de vrais vecteurs arrondis)

Bien sur fait cela à l'échelle 1 pour les type de ligne :exclam:

et lance la routine "MKSHAPE.lsp des Express

Ton problème majeure va être de deviné où et la base de la forme. :P

Et compiler ton fichier obtenu avec le même non que celui réclamé.

 

 

 

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

En fait, je pense que je devrais pouvoir m'en sortir aussi si jamais j'arrivais à éditer un fichier .shx. Mais UltraEdit32 ne sait pas faire, ni même Visual Studio. Connais-tu un logiciel gratuit qui le fait ou tout autre moyen ?

 

Bacon

Seuls les fous savent qu'ils ne sont pas fous...

 

Lien vers le commentaire
Partager sur d’autres sites

Il me semple qu'avec la version complète des Express en Anglais.

Il y ait un fichier DUMPSHX.EXE pour regénèrer un SHP

 

Nous sommes tenus par la langue à diverse mise à dispositions d'outils :(

 

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

Il me semple qu'avec la version complète des Express en Anglais.

Il y ait un fichier DUMPSHX.EXE pour regénèrer un SHP

 

Nous sommes tenus par la langue à diverse mise à dispositions d'outils :(

 

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

En fait je n'ai pas les outils express. J'ai bien trouvé dumpshx.exe, mais j'ai pas d'aide pour savoir comment l'utiliser.

 

Je crois que je vais devoir me résigner à comprendre comment se fait le lien avec les shx pour la définition des styles et me les palucher à la main...

 

Dommage mais là je crois que ça s'enfonce dans l'impossibilité...

 

Ceci dit, encore merci pour ton aide.

 

Bacon

 

PS ; si une idée de génie te venais, je reste quand même preneur...

Seuls les fous savent qu'ils ne sont pas fous...

 

Lien vers le commentaire
Partager sur d’autres sites

Si tu as dumpshex.exe ce n'est plus très compliqué.

Regroupe l'exe et les shx dans un dossier à nom court (pour le DOS Ex SHX)

Tu lance une fenêtre d'éxecution Ms DOS

Tu te plaçe dans ton dossier ex:

C:\>CD\SHX

Puis

C:\SHX>DUMPSHX CADxp.SHX>CADxp.SHP

Et voilà, magique tu as ton SHP que tu peux éditer avec le bloc - note ou UltraEdit ;)

 

 

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

Merci du tuyau.

 

J'ai réussi à faire ainsi des shp que je peux lire. Il ne me reste plus qu'à décrypter :

 

*00001,22,ATLSTYLE_CLOTLEGERE

2,8,(63,0),1,12,(-125,0,127),12,(125,0,127),2,9,(-31,0),(-31,0),(0,0),0

 

ou encore

 

*00004,25,ATLSTYLE_CROIXCLOT

2,8,(-61,61),1,8,(125,-125),2,8,(0,125),1,8,(-125,-125),2,9,(30,32),(30,32),(0,0),0

 

Il y a des chiffres qui si répètent. Mais c'est tout ce que je puis dire. Connais-tu toi-même ou quelqu'un qui sait déchiffrer ça, car il fautdrait que je m'en crée à la mano ?

 

Sinon c'est pas grave...

 

Et encore merci

 

Bacon

Seuls les fous savent qu'ils ne sont pas fous...

 

Lien vers le commentaire
Partager sur d’autres sites

Menu ? -> Aide aux Développeurs

 

Dans

Guide de personnalisation

->Formes, polices et support PostScript

-->Création de fichiers de définition de formes

--->Descriptions des formes.

 

Et là il n'y a plus cas!

 

Hormis l'aide c'est assez complexe. Il y a l'outil des express MkShape.lsp comme cité avant.

 

Moi même je me suis créer une routine pour pouvoir créer des formes (arrondies notement)

Mais celle-ci comporte des bugs, necessite d'utiliser le mode menu Ecran comme sous les versions anciennes d'autoCAD et demande une compréhension déjà du language des formes.

Bref d'être un utilsateur averti des formes.

 

Mais si tu y tiens je peux te passer le code sans soutient. On se débrouille ;)

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

Allez, je veux bien récupérer le code, comme tu dis, on verra bien si j'y arriverai. De toute manière, ce sera ma dernière tentative. Apparemment je vois que tu t'y es déjà cassé les dents. Les miennes étant devenues fragiles, je vais essayer de les protéger alors :D

 

Encore merci pour tout BonusCad !

 

Bacon

Seuls les fous savent qu'ils ne sont pas fous...

 

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é