Invité Sylvainhinard Posté(e) le 6 décembre 2004 Posté(e) le 6 décembre 2004 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
Patrick_35 Posté(e) le 6 décembre 2004 Posté(e) le 6 décembre 2004 SalutC'est un fichier texte, un copier/coller peut suffire @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 6 décembre 2004 Posté(e) le 6 décembre 2004 SalutSi 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
Tramber Posté(e) le 6 décembre 2004 Posté(e) le 6 décembre 2004 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 ./__\. (.°=°.)
Patrick_35 Posté(e) le 6 décembre 2004 Posté(e) le 6 décembre 2004 Bon, je crois que j'ai compris la question au vu des réponses des autres. Je pense que j'ai tout faux.Peut être avec la fonction crtligne des express-tools @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
kallain Posté(e) le 6 décembre 2004 Posté(e) le 6 décembre 2004 et une huitième étoile pour Bonuscad ;) me dites pas que c'est pas vrai !mais juskou vatil saréter ;) BravoChapeau bas (ça fait des années que je mer.. avec ces satanées lignes complexes)
bonuscad Posté(e) le 7 décembre 2004 Posté(e) le 7 décembre 2004 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
Invité Sylvainhinard Posté(e) le 8 décembre 2004 Posté(e) le 8 décembre 2004 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. @+
Invité linkin01 Posté(e) le 6 mai 2011 Posté(e) le 6 mai 2011 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]
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant