Aller au contenu

ligne complexe


litelsousa

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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

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)

Lien vers le commentaire
Partager sur d’autres sites

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.

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)

Lien vers le commentaire
Partager sur d’autres sites

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 longtemps

C'est joindre ça à une multiligne qui me semble pas gagné

Et toujours pas de segments courbes avec ces multilignes !

 

À suivre...

Lien vers le commentaire
Partager sur d’autres sites

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

Bjr 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

Lien vers le commentaire
Partager sur d’autres sites

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...

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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 ...

Lien vers le commentaire
Partager sur d’autres sites

Bjr,

 

J'ai trouvé cela hier soir, intéressant, testez et donnez votre impression

Par 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 question

Phil

 

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

)

Lien vers le commentaire
Partager sur d’autres sites

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.

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

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.

ml.png

 

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)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

philous2 : effectivement, c'était issu d'une ancienne configuration, maintenant, elle n'a plus lieu d'être...

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)

Lien vers le commentaire
Partager sur d’autres sites

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, lecrabe

CMLS__v200_GC.zip

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é