litelsousa Posté(e) le 8 juin 2016 Posté(e) le 8 juin 2016 Bonjour, Est-il possible de créer un type de ligne fait d'une ligne continue supérieure, d'une ligne discontinue au milieu (prenant toute l'épaisseur entre la première et la troisième) et d'une ligne continue inférieur? Après recherche, il me semble que c'est impossible, mais sait-on jamais... Ma ligne ressemblerait à ça... en gros.__________llllll llllll llllll------------------ Merci Citer
didier Posté(e) le 8 juin 2016 Posté(e) le 8 juin 2016 Coucou Ce que tu demandes ressemble quelque peu aux multilignes.Mais pas tout à fait car ce n'est pas possible de faire les lignes perpendiculaires au milieu.Sans compter que les multilignes ne supportent pas les segments courbes! À suivre... Citer Éternel débutant... Mon site perso : Programmer dans AutoCAD
DenisHen Posté(e) le 8 juin 2016 Posté(e) le 8 juin 2016 Salut. Je pense qu'on peut faire des "lignes perpendiculaires" entre deux lignes d'une les multilignes. En créant un style de ligne type "talus" qui sera la ligne de gauche et une ligne simple qui sera la droite. J'ai ça quelque-part... Voici deux types de ligne comprenant des "lignes perpendiculaires" (qui sont en fait le caractère "|" obtenu avec AltGr+6)... :*VGT_TALUS_DROITE,VGT_TALUS A,0.1,["|",Standard,s=0.1,y=-0.12],0.2,["|",Standard,s=0.3,y=-0.36],0.1 *VGT_TALUS_GAUCHE,VGT_TALUS A,0.1,["|",Standard,s=0.1,y=-0.12],0.2,["|",Standard,s=0.3,y=-0.36],0.1 Citer 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)
litelsousa Posté(e) le 8 juin 2016 Auteur Posté(e) le 8 juin 2016 En effet, j'ai fait comme ça avec le type de ligne "rail", mais c'est seulement des traits verticaux tout fin, je n'arrive pas à ce que ça donne des traitillés Citer
DenisHen Posté(e) le 8 juin 2016 Posté(e) le 8 juin 2016 Je pense que tu peux t'inspirer de ce type de ligne (à placer dans un .lin) :*RAIL_GAUCHE,_____|||_____|||_____|||_____ A,0.1,["|",Standard,s=0.1,y=-0.12],["|",Standard,s=0.1,y=-0.12],["|",Standard,s=0.1,y=-0.12],1 Cette ligne devra être intégrée dans ton type de multiligne. Citer 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)
didier Posté(e) le 8 juin 2016 Posté(e) le 8 juin 2016 Coucou Je veux bien voir un exemple car ça me paraît capilotracté, mais en jouant avec les espaces c'est peut-être possible. Les lignes perpendiculaires à l'axe avec le caractère I (i majuscule en simplex), ça j'y arrive depuis longtempsC'est joindre ça à une multiligne qui me semble pas gagnéEt toujours pas de segments courbes avec ces multilignes ! À suivre... Citer Éternel débutant... Mon site perso : Programmer dans AutoCAD
philous2 Posté(e) le 8 juin 2016 Posté(e) le 8 juin 2016 Salut. Je pense qu'on peut faire des "lignes perpendiculaires" entre deux lignes d'une les multilignes. En créant un style de ligne type "talus" qui sera la ligne de gauche et une ligne simple qui sera la droite. J'ai ça quelque-part... Voici deux types de ligne comprenant des "lignes perpendiculaires" (qui sont en fait le caractère "|" obtenu avec AltGr+6)... :*VGT_TALUS_DROITE,VGT_TALUS A,0.1,["|",Standard,s=0.1,y=-0.12],0.2,["|",Standard,s=0.3,y=-0.36],0.1 *VGT_TALUS_GAUCHE,VGT_TALUS A,0.1,["|",Standard,s=0.1,y=-0.12],0.2,["|",Standard,s=0.3,y=-0.36],0.1Bjr Denis,quelle différence entre les 2 ! j'ai testé c'est identique droite ou gauche "même coté" est-ce normal !Dans la description de tes 2 lignes je ne vois pas de différence apparente Phil Citer
litelsousa Posté(e) le 8 juin 2016 Auteur Posté(e) le 8 juin 2016 C'est un type donnant ce résultat que je cherche, mais la c'est un bloc, ça me plaît pas trop. Concernant les multilingnes, c'est très mal vu avec certains de nos partenaires...traitillé.zip Citer
Tramber Posté(e) le 8 juin 2016 Posté(e) le 8 juin 2016 Pour faire des traits verticaux faites comme moi !Je prends un trait pointillé (ACAD_ISO07W100) et je l'applique à une polyligne large.C'est tout bête. B) Malheureusement on ne peut pas glisser cette astuce dans une multiligne... Citer Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
didier Posté(e) le 8 juin 2016 Posté(e) le 8 juin 2016 Coucou Rien à voir avec la question initiale ! Les traits verticaux perpendiculaires entre deux lignes sont où dans ton fichier exemple ?Il fallait commencer par là ! Remarque que je n'ai pas de réponse non plus pour ta nouvelle demande. À suivre ... Citer Éternel débutant... Mon site perso : Programmer dans AutoCAD
philous2 Posté(e) le 9 juin 2016 Posté(e) le 9 juin 2016 Bjr, J'ai trouvé cela hier soir, intéressant, testez et donnez votre impressionPar contre il n'enregistre pas le type de ligne créé dans un fichier lin, uniquement dans le fichier dwg ou se trouve la ligne en questionPhil ;;; Ron Perez ( ronjonp );;; Updated original code posted to Cadalyst http://cadtips.cadalyst.com/2d-operations/create-custom-linetype;;; 05.13.2014 Added DCL and rewrote most of the code;;; 05.20.2014 Added better input error trapping and some recommendations @ TheSwamp;;; http://www.theswamp.org/index.php?topic=47058.msg520876#msg520876;;; 05.23.2014 Put current layer at top of list per AlanJT;;; 07.01.2014 Added a filter for layer names and different dash types (defun c:makelt (/ *error* _dcl _showlt _readreg _writereg _get rjp-txtwdth _rtos _foo _getnumber _filterstrings _addlist _ltdesc $value ch dashlength dashtype dt e exprt file filter flayers fltr fn go id layers ltdef ltdesc ltname ltypes plays regkey strw textgap textheight textstring tmp tstyles txtstyle x ) (vl-load-com) (defun _dcl (filename / file) (if (findfile filename) filename (cond ((and (eq 'str (type filename)) (setq file (open filename "w"))) (foreach line '("//07.01.2014" "//Copyright© 2014 Ron Perez (ronperez ( AT ) gmail.com)" "b1 : button { width = 35; fixed_width = true; alignment = centered; }" "eb : edit_box { edit_width = 15; }" "MakeLT : dialog" "{" " label = \"M a k e L T by RJP\"; spacer;" " : row" " {" " : boxed_column" " {" " label = \"- L i n e t y p e O p t i o n s -\";" " : column" " {" " : eb" " {" " key = \"LtDef\"; label = \"L i n e t y p e N a m e\";" " }" " : eb" " {" " key = \"TextString\"; label = \"T e x t S t r i n g\";" " }" " : eb" " {" " key = \"DashLength\"; label = \"D a s h L e n g t h\";" " }" " : eb" " {" " key = \"TextHeight\"; label = \"T e x t H e i g h t\";" " }" " : eb" " {" " key = \"TextGap\"; label = \"T e x t G a p\";" " }" " }" " : popup_list" " {" " key = \"TextStyles\"; label = \"T e x t S t y l e\"; edit_width = 14;" " }" " : popup_list" " {" " key = \"DashType\"; label = \"D a s h T y p e\"; edit_width = 14;" " }" " spacer;" " }" " : boxed_column" " {" " label = \"- A p p l y t o L a y e r ( s ) -\";" " : list_box" " {" " key = \"Layers\"; width = 20; multiple_select = true;" " }" " : column" " {" " label = \"L a y e r N a m e F i l t e r\";" " : edit_box" " {" " key = \"LayerFilter\"; width = 20;" " }" " }" " }" " }" " spacer;" " : row" " {" " alignment = centered;" " : b1" " {" " key = \"DoIt\"; is_default = true; label = \" - C r e a t e L i n e t y p e - \";" " }" " : b1" " {" " key = \"Cancel\"; is_cancel = true; label = \"- C a n c e l -\";" " }" " }" " errtile;" "}" ) (write-line line file) ) (close file) filename ) ) ) ) (defun *error* (msg) (and id (unload_dialog id)) (and exprt (setvar 'expert exprt)) (and file (vl-file-delete file)) (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")) (princ (strcat "\nError: " msg)) ) (princ) ) (defun _readreg (folder keyname value / regpath) (setq regpath (strcat "HKEY_CURRENT_USER\\Software\\" folder)) (if (not (vl-registry-read regpath keyname)) (vl-registry-write regpath keyname value) (vl-registry-read regpath keyname) ) ) (defun _writereg (folder keyname value / regpath) (setq regpath (strcat "HKEY_CURRENT_USER\\Software\\" folder)) (vl-registry-write regpath keyname value) ) (defun _get (item / out) (vlax-for x (vlax-get (vla-get-activedocument (vlax-get-acad-object)) item) (setq out (cons x out)) ) out ) (defun rjp-txtwdth (text height style / d e i pts) ;; Check if style has a width other than 1 otherwise gap is incorrect (if (and (setq e (tblobjname "style" style)) (setq i (cdr (assoc 41 (entget e))))) (setq i (/ 1. i)) (setq i 1.) ) ;;Returns textstring width, gap from insertion point to start of text, and height (if (setq pts (textbox (list (cons 1 text) (cons 7 style) (cons 40 height)))) (progn (setq d (* i (distance (car pts) (list (caadr pts) (cadar pts))))) (list d (caar pts) (- (cadadr pts) (abs (cadar pts)))) ) ) ) (defun _foo (string / e) (cond ((= "" string) (mode_tile "LtDef" 2) (set_tile "error" (strcat "Linetype Name Cannot Be Empty!")) ) ((null (snvalid string)) (mode_tile "LtDef" 2) (set_tile "error" (strcat "Invalid Characters Found in Linetype Name '" string "'!")) ) ((null (tblobjname "ltype" string)) (set_tile "error" (strcat "Linetype '" string "' " (_showlt) " will be CREATED...")) ) ((setq e (tblobjname "ltype" string)) (set_tile "error" (strcat "Linetype '" string "' " (_showlt) " will be REDEFINED...")) ) ((set_tile "error" (_showlt))) ) ) (defun _showlt (/ msg txt dt) (if (and (setq txt (get_tile "TextString")) (setq dt (get_tile "DashType")) (setq dt (cadr (nth (read dt) ltypes))) (setq dt (apply 'strcat (_ltdesc dt))) ) (strcat dt txt dt txt dt txt dt) "Cannot Display Linetype!" ) ) (defun _rtos (real) (vl-prin1-to-string real)) (defun _getnumber (key default) (cond ((<= (atof (get_tile key)) 0.0) (set_tile "error" "Invalid Data! Using Last Value...") (set_tile key default) ) ((wcmatch (get_tile key) ".*") (set_tile key (strcat "0" (get_tile key)))) ((_showlt) (vl-princ-to-string (atof (get_tile key)))) ) ) (defun _filterstrings (listofstrings filter / out) (if (setq out (vl-remove-if-not (function (lambda (x) (wcmatch (strcase x) (strcase filter)))) listofstrings ) ) (progn (mode_tile "Layers" 0) out) (progn (mode_tile "Layers" 1) '("Nothing Matches Filter!")) ) ) ;; (_filterstrings layers "~*|*") (defun _addlist (key l) (start_list key) (mapcar 'add_list l) (end_list)) (defun _ltdesc (l / tmp) (mapcar '(lambda (x) (cond ((zerop x) ".") ((minusp x) (setq tmp "") (repeat (if (zerop (fix x)) 1 (fix (* 10. (abs x))) ) (setq tmp (strcat tmp " ")) ) ) ((<= x 0.1) "-") ((setq tmp "") (repeat (fix (* 10. x)) (setq tmp (strcat tmp "-")))) ) ) l ) ) ;; (apply 'strcat (_ltdesc '(0 -0.25 0 -0.25 0 -0.25 0 -0.25 0))) (cond ((not (setq fn (_dcl (strcat (getenv "temp") "\\MakeLT_07.01.2014.dcl")))) (princ "\nDialogue could not be created!") ) ((null (setq id (load_dialog fn))) (princ "\nDialogue created but could not be loaded!")) ((setq regkey "MakeLT") (setq tstyles (vl-remove-if '(lambda (x) (wcmatch x "*|*")) (acad_strlsort (mapcar 'vla-get-name (_get "textstyles"))) ) ) (setq layers (acad_strlsort (mapcar 'vla-get-name (_get "layers")))) ;; Append current clayer to top of list (setq layers (cons (getvar 'clayer) (vl-remove (getvar 'clayer) layers))) ;; Percentage of dashlength, each sublist should add up to 1 and not exceed 10 entries ;; Positive entries are dashes, negative entries are gaps (setq ltypes (list (list "Continuous" '(1.0)) (list "Center" '(0.35 -0.10 0.10 -0.10 0.35)) (list "Dashdot" '(0.35 -0.15 0 -0.15 0.35)) (list "Dashdot2" '(0.2 -0.1 0 -0.1 0.2 -0.1 0 -0.1 0.2)) (list "Dashed" '(0.3 -0.1 0.3 -0.1 0.3)) (list "Dashed2" '(0.25 -0.125 0.25 -0.125 0.25)) (list "Dot" '(0 -0.25 0 -0.25 0 -0.25 0 -0.25 0)) (list "Hidden" '(0.2 -0.2 0.2 -0.2 0.2)) (list "Hidden2" '(0.143 -0.143 0.143 -0.143 0.143 -0.143 0.143)) (list "Phantom" '(0.3 -0.08 0.08 -0.08 0.08 -0.08 0.3)) (list "3Dash" '(0.325 -0.05 0.05 -0.05 0.05 -0.05 0.05 -0.05 0.325)) (list "2Dots" '(0.35 -0.10 0 -0.10 0 -0.10 0.35)) (list "3Dots" '(0.3 -0.10 0 -0.10 0 -0.10 0 -0.10 0.3)) ) ) ;; (mapcar '(lambda (x) (apply '+ (mapcar 'abs x)))(mapcar 'cadr ltypes)) ;; Setq defaults based on metric vs imperial (if (zerop (getvar 'measurement)) (mapcar 'set '(dashlength textheight textgap) '("0.25" "0.075" "0.025")) (mapcar 'set '(dashlength textheight textgap) '("12.5" "2.5" "0.65")) ) (new_dialog "MakeLT" id) (_addlist "TextStyles" tstyles) (_addlist "DashType" (mapcar 'car ltypes)) ;; Set values (setq ch (_readreg regkey "TextStyles" "0")) (set_tile "TextStyles" (cond ((nth (read ch) tstyles) ch) ((setq ch "0")) ) ) (set_tile "DashType" (setq dashtype (_readreg regkey "DashType" "0"))) (set_tile "TextString" (setq textstring (_readreg regkey "TextString" "X"))) (set_tile "LtDef" (setq ltdef (_readreg regkey "LtDef" "X"))) (set_tile "DashLength" (setq dashlength (_readreg regkey "DashLength" dashlength))) (set_tile "TextHeight" (setq textheight (_readreg regkey "TextHeight" textheight))) (set_tile "TextGap" (setq textgap (_readreg regkey "TextGap" textgap))) (set_tile "LayerFilter" (setq fltr (_readreg regkey "LayerFilter" "~*|*"))) (_addlist "Layers" (setq flayers (_filterstrings layers fltr))) (_foo ltdef) ;; Update values on change (action_tile "Layers" "(setq plays $value)") (action_tile "TextStyles" "(setq ch $value)") (action_tile "DashType" "(setq dashtype $value)(_foo ltdef)") (action_tile "LtDef" "(setq ltdef $value) (_foo ltdef)") (action_tile "TextString" "(setq TextString $value) (_foo ltdef)") (action_tile "DashLength" "(setq DashLength (_getnumber \"DashLength\" DashLength))") (action_tile "TextHeight" "(setq TextHeight (_getnumber \"TextHeight\" TextHeight))") (action_tile "TextGap" "(setq TextGap (_getnumber \"TextGap\" TextGap))") (action_tile "DoIt" "(setq go T) (_foo ltdef) (setq ltdesc (_showlt)) (done_dialog 1)") (action_tile "LayerFilter" "(setq fltr $value)(setq flayers (_filterstrings layers fltr))(_addlist \"Layers\" flayers))" ) (action_tile "Cancel" "(done_dialog 0)") (start_dialog) (unload_dialog id) (if go (progn ;; Write defaults to registry (_writereg regkey "TextStyles" ch) (_writereg regkey "DashType" dashtype) (_writereg regkey "LtDef" ltdef) (_writereg regkey "TextString" textstring) (_writereg regkey "DashLength" dashlength) (_writereg regkey "TextHeight" textheight) (_writereg regkey "TextGap" textgap) (_writereg regkey "LayerFilter" fltr) (setq txtstyle (nth (read ch) tstyles)) (setq ltname ltdef) (if (and (setq strw (rjp-txtwdth textstring (atof textheight) txtstyle)) (setq file (strcat (getenv "temp") "\\_tempmakelt.lin")) (setq fn (open file "w")) (setq exprt (getvar 'expert)) (setq dt (cadr (nth (read dashtype) ltypes))) (setq textgap (atof textgap)) (setq dashtype (mapcar '(lambda (x) (strcat (_rtos (* (atof dashlength) x)) ",")) dt) ) ) (progn (setq ltdef (strcat "\n*" ltdef "," ltdesc "\nA," (apply 'strcat dashtype) "-" (_rtos (abs (- textgap (cadr strw)))) ",[\"" textstring "\"," txtstyle ",S= textheight ",R=0.0,X=-0.0,Y=-" (_rtos (* (caddr strw) 0.5)) ],-" (_rtos (+ textgap (car strw) (cadr strw))) ) ) (write-line ltdef fn) (close fn) (setvar 'expert 5) ;; Update : "load" => "_load" (command "._-linetype" "_load" "*" file "") (princ ltdef) (setvar 'expert exprt) (vl-file-delete file) ) ) (if (and plays (tblobjname "ltype" ltname)) (foreach i (read (strcat "(" plays ")")) (if (and (nth i flayers) (setq e (tblobjname "layer" (nth i flayers)))) (vla-put-linetype (vlax-ename->vla-object e) ltname) ) ) ) (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acallviewports) ) ) ) ) (princ)) Citer
bonuscad Posté(e) le 9 juin 2016 Posté(e) le 9 juin 2016 C'est un type donnant ce résultat que je cherche, mais la c'est un bloc, ça me plaît pas trop. Concernant les multilingnes, c'est très mal vu avec certains de nos partenaires... Regarde si tu peut t'inspirer de ce type de ligne. Donnée à mettre dans le fichier transport.lin *transport,alterné A,0,["\U+25A0",transport,S=1,R=0,X=-0.595,Y=-0.3215],-0.6435,["\U+25A1",transport,S=1,R=0,X=-0.595,Y=-0.3215],-0.6435 Avant de chargé ce type de ligne, tu dois IMPERATIVEMENT, pour que ça fonctionne, CREER un style de texte nommé "transport" avec la fonte ARIAL.ttf, laisser les valeurs par défaut, (hauteur 0) Ceci fait tu pourra alors chargé ton type de ligne. Ne pas prendre le fichier "acadiso.lin" par défaut, mais cliquer sur le bouton "Fichier..." et avec l'explorateur, aller chercher ton fichier "transport.lin" dans le dossier où tu auras enregistrer ta défintion ci-dessus. Citer Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Tramber Posté(e) le 9 juin 2016 Posté(e) le 9 juin 2016 Ma ligne ressemblerait à ça... en gros.__________llllll llllll llllll------------------ Je trouve que mon astuce devrait bien marcher.Ici j'ai ajouté une multiligne sur les mêmes points que la polyligne.Ok, ca fait deux objets mais c'est quand même pas mal et ça répond bien s'il faut les modifier. litelsousa, tu dis que les multilignes sont mal vues par tes partenaires.Elles sont touefois sans danger puisqu'on ne peut en éditer le style. (malheureusement d'ailleurs) Citer Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
DenisHen Posté(e) le 9 juin 2016 Posté(e) le 9 juin 2016 Salut, philous2 : effectivement, c'était issu d'une ancienne configuration, maintenant, elle n'a plus lieu d'être... Citer 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)
lecrabe Posté(e) le 9 juin 2016 Posté(e) le 9 juin 2016 Hello 1) Certains disent : on ne peut pas changer le Style d'une Multi-Ligne ! ... EXACT !! 2) Cependant suite a une vieille demande de votre cher et vieux Decapode, Gilles avait realise ce qu'il fallait et de plus suite a ma demande recente, il a modifie sa routine pour les versions 2015/2016/etc ... Donc ci joint une excellente routine CMLS de Gilles (gile) ... MERCI Gilles, Bye, lecrabeCMLS__v200_GC.zip Citer Autodesk Expert Elite Team
Messages recommandés