Aller au contenu

MLINE


dfbiagio

Messages recommandés

Comme on dit chez nous, "Beato te"

 

Essaie de corriger, mettre 45° au début et à la fin.

Bien à toi.

 

Hello

 

Avec mon AutoCAD MAP 2019.1.1, je viens de creer un Nouveau Style de MLINE

(du genre Triple Ligne Rouge/Bleue) puis je l'ai utilise sans probl particulier !

 

Bye, lecrabe

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

No problem avec ma Triple Ligne et Angles = 45 degres

( 2 Rouge en Exterieurs , 1 Bleu en Interieur )

Voir ci-apres mon fichier M.mln

 

Bye, lecrabe

 

>>>

MLSTYLE

2

M

70

0

3

M

62

256

51

45.00000000000000

52

45.00000000000000

71

3

49

0.5000000000000000

62

1

6

BYLAYER

49

0.000000000000000

62

5

6

BYLAYER

49

-0.5000000000000000

62

1

6

BYLAYER

0

  • Upvote 1

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Ok, c'est bien, mais moi je ne sais pas modifier les angles ;-(

Bien à toi

@+

 

Hello

 

No problem avec ma Triple Ligne et Angles = 45 degres

( 2 Rouge en Exterieurs , 1 Bleu en Interieur )

Voir ci-apres mon fichier M.mln

 

Bye, lecrabe

 

>>>

MLSTYLE

2

M

70

0

3

M

62

256

51

45.00000000000000

52

45.00000000000000

71

3

49

0.5000000000000000

62

1

6

BYLAYER

49

0.000000000000000

62

5

6

BYLAYER

49

-0.5000000000000000

62

1

6

BYLAYER

0

<<<

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

Desole mais je ne te suis pas du tout !?

 

Est ce que mon Style de Multi-Lignes est OK chez toi ?

Il te suffit de le copier/coller dans un fichier text TEST.MLN

et de le charger puis de l'utiliser ... C BETON ! ... J'ai teste ...

 

En fait ne veux tu pas changer APRES le Style de MLN de tes Multi-Lignes existantes ???

Si OUI: il te faut simplement la bonne routine LSP ...

 

La routine CMLS du Grand Matre Gilles est indispensable des que l'on utilise les MLINEs ...

 

MERCI Gilles, Bye, lecrabe

 

 


;; 
;; Modif/Patch for versions 2015/2016/etc 
;; 
;; Par GC (gile) - Changer le style de Multi-Lignes ... Change MultiLines Style ... 
;; 
;; Routine/Command : CMLS
;; 


(defun c:CMLS (/ *error* echo osnp slst ss styl ent)
 (vl-load-com)
 (defun *error* (msg)
   (or	(not msg)
(= msg "Fonction annulée")
(princ (strcat "Erreur: " msg))
   )
   (setvar 'cmdecho echo)
   (setvar 'osmode osnp)
   (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
   (princ)
 )
 (setq	echo (getvar 'cmdecho)
osnp (getvar 'osmode)
slst (gc:GetDictEntries (dictsearch (namedobjdict) "ACAD_MLINESTYLE"))
 )
 (if
   (and
     (setq n  -1
    ss (ssget '((0 . "MLINE")))
     ) 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;    (setq styl (gc:ListBox "Styles de multiligne" "Choisissez un style"  (mapcar 'car slst) 0)) 
     (setq styl (gc:ListBox "MultiLines Styles"    "Select a Style"       (mapcar 'car slst) 0)) 


   )
    (progn
      (vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
      (setvar 'cmdecho 0)
      (setvar 'osmode 0)
      (while (setq ent (ssname ss (setq n (1+ n))))
 (setq elst (entget ent))
 (vl-cmdf "_.mline" "_style" styl)
 (foreach p (mapcar '(lambda (x) (trans x 0 1)) (massoc 11 elst))
   (vl-cmdf p)
 )
 (vl-cmdf (if (= 2 (logand 2 (cdr (assoc 71 elst))))
	    "_close"
	    ""
	  )
 )
 (if (setq xd (assoc -3 (entget ent '("*"))))
   (entmod (append (entget (entlast)) (list xd)))
 )
 (entdel ent)
      )
    )
 )
 (*error* nil)
)


;; 
;; gc:ListBox  par GC (gile) 
;; Boite de dialogue permettant un ou plusieurs choix dans une liste
;;
;; Arguments
;; title : le titre de la boite de dialogue (chaîne)
;; msg ; message (chaîne), "" ou nil pour aucun
;; lbls : une liste de chaînes (sans doublons)
;; flag : 0 = liste déroulante
;;        1 = liste choix unique
;;        2 = liste choix multipes
;;
;; Retour : l'option (flag = 0 ou 1) ou la liste des options (flag = 2)
;;
;; Exemple d'utilisation
;; (listbox "Présentation" "Choisir une présentation" (layoutlist) 1) 
;; 

(defun gc:ListBox (title msg lbls flag / tmp file dcl_id choice)
 (setq	tmp  (vl-filename-mktemp "tmp.dcl")
file (open tmp "w")
 )
 (write-line
   (strcat "ListBox:dialog{label=\"" title "\";")
   file
 )
 (if (and msg (/= msg ""))
   (write-line (strcat ":text{label=\"" msg "\";}") file)
 )
 (write-line
   (cond
     ((= 0 flag) "spacer;:popup_list{key=\"lst\";")
     ((= 1 flag) "spacer;:list_box{key=\"lst\";")
     (T "spacer;:list_box{key=\"lst\";multiple_select=true;")
   )
   file
 )
 (write-line "}spacer;ok_cancel;}" file)
 (close file)
 (setq dcl_id (load_dialog tmp))
 (if (not (new_dialog "ListBox" dcl_id))
   (exit)
 )
 (start_list "lst")
 (mapcar 'add_list lbls)
 (end_list)
 (action_tile
   "accept"
   "(or (= (get_tile \"lst\") \"\")
   (if (= 2 flag) (progn
   (foreach n (gc:str2lst (get_tile \"lst\") \" \")
   (setq choice (cons (nth (atoi n) lbls) choice)))
   (setq choice (reverse choice)))
   (setq choice (nth (atoi (get_tile \"lst\")) lbls))))
   (done_dialog)"
 )
 (start_dialog)
 (unload_dialog dcl_id)
 (vl-file-delete tmp)
 choice
)


;; 
;; gc:str2lst
;; Transforme un chaine avec séparateur en liste de chaines
;;
;; Arguments
;; str : la chaine à transformer en liste
;; sep : le séparateur
;;
;; Exemples
;; (str2lst "a b c" " ") -> ("a" "b" "c")
;; (str2lst "1,2,3" ",") -> ("1" "2" "3")
;; (mapcar 'read (str2lst "1,2,3" ",")) -> (1 2 3)
;; 

(defun gc:str2lst (str sep / pos)
 (if (setq pos (vl-string-search sep str))
   (cons (substr str 1 pos)
  (gc:str2lst (substr str (+ (strlen sep) pos 1)) sep)
   )
   (list str)
 )
)


;; gc:GetDictEntries
;; Retourne la liste des entrées du dictionnaire
;; sous forme de paires pointées (Nom . ENAME)
;;
;; Argument : dict le dictionnaire (ENAME ou liste DXF)

(defun gc:GetDictEntries (dict / result)
 (and (= (type dict) 'ENAME) (setq dict (entget dict)))
 (while
   (setq dict (vl-member-if (function (lambda (x) (= (car x) 3))) (cdr dict)))
    (setq result (cons (cons (cdar dict) (cdadr dict)) result))
 )
 (reverse result)
)


;; massoc
;; Retourne la liste de toutes les valeurs pour le code spécifié
;; dans une liste d'association
;;
;; Arguments
;; code : le code de groupe pour les entrées
;; alst : la liste d'association

(defun massoc (code alst / pair)
 (if (setq alst (member (assoc code alst) alst))
   (cons (cdar alst) (massoc code (cdr alst)))
 )
) 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

:(rires forts):

 

Bravo Lecrabe, tu as réussis a résoudre un problème avec un interlocuteur confu ! Juste Bravo

 

(Aparté-on) hé ben t'es du 42 ? Quand aurons nous la chance de te voir dans nos regroupements totodesk Lyonnais

En gros on parle AutoCAD/REVIT et on boit de la bierre

(Aparté-off)

Lien vers le commentaire
Partager sur d’autres sites

alors j'ai pas envie de rentrer dans le débats de guerre des villes, (Paris/Marseille ; Lyon/Saint-Etienne ; Metz/Nancy), mais ce genre de chose me passe par dessus la tête ! Ça n'a aucun intérêt ! De plus nG Hebus est du 42 me semble t'il est il est déjà venu et y a pas eu de soucis !!!! B) B) B)

Lien vers le commentaire
Partager sur d’autres sites

  • 11 mois après...

Bonjour Lecrabe et Gilles,merci pour ce lisp.J'ai l'ai utilisé une fois et il a fonctionné parfaitement.Malheureusement la fois d’après il m'a retourné une erreur et il veut plus fonctionner !Voici le message :

Commande: CMLS

Erreur: no function definition: GC:GETDICTENTRIES

Commande:

Je ne sais pas pourquoi ça fait ça mais ça m’énerve parce que ça me sauvait la vie sad.gifS'il vous plait avait vous une solution ?Merci bcp, bcp d'avance.

PS. je travaille avec AutoCAD 2019

" Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "

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é