CADxp: Remplacer multiligne par une autre multiligne - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Remplacer multiligne par une autre multiligne

#1 L'utilisateur est hors-ligne   fauxsuisse 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 924
  • Inscrit(e) : 01-septembre 04
  • LocationSuisse - Châtel St. Denis

Posté 08 mars 2012 - 07:55

Bonjour tout le monde.

J'ai dans un dessin toute une série de multiligne mais je voudrais les remplacer par un autre type de multiligne mais je ne vois pas comment, une fois utilisée elle ne peut plus être modiffiée ou remplacée.
0

#2 L'utilisateur est hors-ligne   GEGEMATIC 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 665
  • Inscrit(e) : 04-novembre 05

Posté 08 mars 2012 - 08:49

Avec autocad LT, je ne pense pas que ce soit possible.
C'est possible via des commandes lisp (comme Powerclic) mais il arrive que ça fasse planter Autocad.
Les multilignes ont été abandonnées par Autodesk, c'est bien domage.
---------------------------------------------------------------------- PowerClic sur http://www.g-eaux.com
0

#3 L'utilisateur est hors-ligne   fauxsuisse 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 924
  • Inscrit(e) : 01-septembre 04
  • LocationSuisse - Châtel St. Denis

Posté 08 mars 2012 - 09:22

Voir le messageGEGEMATIC, le 08 mars 2012 - 08:49 , dit :

Avec autocad LT, je ne pense pas que ce soit possible.
C'est possible via des commandes lisp (comme Powerclic) mais il arrive que ça fasse planter Autocad.
Les multilignes ont été abandonnées par Autodesk, c'est bien domage.


Oups je me suis trompé, j'ai pas posté dans la bonne rubique, je ne suis pas sous LT, mis à part ça les multilignes sont toujours là sous 2012 et aussi dans la 2013
0

#4 L'utilisateur est hors-ligne   GEGEMATIC 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 665
  • Inscrit(e) : 04-novembre 05

Posté 08 mars 2012 - 14:33

Je t'ai répondu dans Autocad 2012
concernant le terme "abandonné", je voulais dire qu'aucune nouvelle fonctionnalité n'a été ajoutée depuis la V14 !
il est domage qu'on ne puisse avoir des rayons de raccordement et des méthode de raccords plus précises.
---------------------------------------------------------------------- PowerClic sur http://www.g-eaux.com
0

#5 L'utilisateur est hors-ligne   fauxsuisse 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 924
  • Inscrit(e) : 01-septembre 04
  • LocationSuisse - Châtel St. Denis

Posté 08 mars 2012 - 14:48

Voir le messageGEGEMATIC, le 08 mars 2012 - 14:33 , dit :

Je t'ai répondu dans Autocad 2012
concernant le terme "abandonné", je voulais dire qu'aucune nouvelle fonctionnalité n'a été ajoutée depuis la V14 !
il est domage qu'on ne puisse avoir des rayons de raccordement et des méthode de raccords plus précises.


Tout à fait d'accord avec toi B)
0

#6 L'utilisateur est hors-ligne   philsogood 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2068
  • Inscrit(e) : 03-mars 10

Posté 09 mars 2012 - 08:08

hello faux suisse
tout a fait d'accord avec vous
les multilignes sont un outil très pratique et pourtant d'une lourdeur à l'utilisation sans précédent... en même temps faute d'avoir trouver mieux je continue à les utiliser (laborieusement!)
++
Phil
Projeteur génie énergétique - traitement de l'air
0

#7 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7408
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 11 mars 2012 - 10:45

Hello

Je confirme que les multi-lignes n'ont pas bouge "ou presque" depuis 1997 (AutoCAD R14)

Par contre je crois avoir deja vu un Lisp/VLisp qui permettait de selectionner N multi-lignes
pour les "tripatouiller" ... A verifier ou plutot a farfouiller !?

Le Decapode (lecrabe)

PS: si tu as simplement un AutoCAD LT, tu peux installer un AutoCAD ou MAP ou Autodesk Architectural Desktop ou CIVIL
relativement recent (version 201x) qui tournera 30 jours !
Autodesk Expert Elite Team
0

#8 L'utilisateur est hors-ligne   bonuscad 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 4465
  • Inscrit(e) : 20-juin 03

Posté 11 mars 2012 - 11:57

Bonjour,

Ce que je peux proposer avec une version pleine est de retracer une Multiligne avec le style courant, une façon de changer sont style de ligne!...
Voici (écrit rapidement) le code:
(vl-load-com)
(defun l-coor2l-pt (lst flag / )
  (if lst
    (cons
      (list
        (car lst)
        (cadr lst)
        (if flag
          (+ (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0) (caddr lst))
          (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0)
        )
      )
      (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag)
    )
  )
)
(defun c:change_mline ( / js ent ename l_pt cur_lay closed)
  (princ "\nSélectionner une multiligne.")
  (while (null (setq js (ssget "_+.:E:S" '((0 . "MLINE")))))
    (princ "\nCe n'est pas une multiligne!")
  )
  (setq
    ent (ssname js 0)
    ename (vlax-ename->vla-object ent)
    l_pt (l-coor2l-pt (vlax-get ename 'Coordinates) T)
    cur_lay (getvar "CLAYER")
  )
  (initget "Fermée Ouverte _Closed Open")
  (if (eq (getkword "\nMultiligne [Fermée/Ouverte] <Ouverte>: ") "Closed")
    (setq closed T)
  )
  (setvar "clayer" (vlax-get ename 'Layer))
  (command "_.mline")
  (foreach n l_pt (command "_none" (trans n 0 1)))
  (if closed (command "_close") (command ""))
  (entdel ent)
  (setvar "CLAYER" cur_lay)
  (prin1)
)


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

#9 L'utilisateur est hors-ligne   fauxsuisse 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 924
  • Inscrit(e) : 01-septembre 04
  • LocationSuisse - Châtel St. Denis

Posté 12 mars 2012 - 06:59

Merci Bonuscad,

C'est parfait, c'est exactement ce que je cherchais.

Bonne journée et merci encore :D
0

#10 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7408
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 12 mars 2012 - 08:36

Hello

J'ai farfouille dans mon stock et j'ai trouve cette routine de notre indispensable Gilles !

Le Decapode (lecrabe)

PS: SVP si tu peux la tester !?

 
 

;; Pac GC - Changer le style de Multi-Lignes ...
;; http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=30135#pid130971
;; Commande : 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))
    )
     (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)
	 (mapcar '(lambda (x)
		    (vl-cmdf (trans x 0 1))
		  )
		 (massoc 11 elst)
	 )
	 (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
;; 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
0

#11 L'utilisateur est hors-ligne   fauxsuisse 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 924
  • Inscrit(e) : 01-septembre 04
  • LocationSuisse - Châtel St. Denis

Posté 12 mars 2012 - 09:45

Lecrabe je n'ai qu'un mot à dire,
Woaww c'est plus que parfait avec se choix de multiligne que l'on peut choisir, c'est exactement ça que j'attendais.

Je confirme que je ne suis pas sous LT je m'étais trompé en postant le sujet, je suis sous version pleine 2012 et MEP 2012

Merci encore pour votre travaille ça m'enlève une grosse épine du pied. :D
0

#12 L'utilisateur est hors-ligne   La Lozère 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2247
  • Inscrit(e) : 28-juin 06
  • LocationVienne (38) - Etude APA - A480

Posté 21 novembre 2017 - 08:36

Bonjour,
J'ai un collègue qui doit transformer une 10aine de km de multilignes en une polyligne passant par l'axe. Bonjour la galère...

Je comptais utiliser le bout de lisp de (gile), mais voici ce que ça me retourne:

Citation

Sélectionner des objets: VVC: Internal Error

Une idée?

Sinon, j'ai essayé le code de bonuscad. Après avoir créer un style constitué d'une simple ligne, j'ai pu transformer ma multiligne dans le nouveau style.
Mais j'ai 2 problèmes. 1, on ne peut modifier que multiligne par multiligne. Pas possible de faire de sélection multiple. Donc quand on en a des 10aines et des 10aines..... Et 2, une foie explosée la nouvelle multiligne, quand je fais joindre tout les morceaux de ligne, il y en a qui refuse de ce joindre. :blink:

En tout cas merci à vous.

PS: Toujours autant la m... ces multilignes.
www.cad-is.fr
Autocad Map 2016/2018 - Covadis/Autopiste V16.0b - Mensura Genius V8
Nous n’héritons pas de la Terre de nos ancêtres, nous l’empruntons à nos enfants
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)