CadXP: créer un type de ligne avec forme - CadXP

Aller au contenu

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

créer un type de ligne avec forme

#1 L'utilisateur est hors-ligne   chachageo 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 11
  • Inscrit(e) : 03-juin 20

Posté 03 juin 2020 - 10:15

Bonjour!

Je suis nouvelle sur ce forum, j'ai déjà trouvé pas mal de réponse à mes questions mais la je sèche!
N'ayant pas covadis, je souhaite crée des types de lignes 'complexes'. J'ai trouvé par l'onglet express tool comment créer des linéaires avec texte, que j'ai utilisé dans certains cas pour contourner mon problème, ex pour un mur j'ai utilisé une répétition de ZZZ mais cela n'est pas applicable à tous. Je souhaiterais par exemple créer un type de ligne 'ligne arbres' avec un trait un arbre un trait ... et également une ligne avec trait double (voir captures).

Merci pour votre aide!

Fichier(s) joint(s)

  • Fichier joint  Capture4.JPG (46,98 Ko)
    Nombre de téléchargements : 15
  • Fichier joint  Capture3.JPG (36,43 Ko)
    Nombre de téléchargements : 15

0

#2 L'utilisateur est hors-ligne   jerome.s 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 189
  • Inscrit(e) : 13-juillet 05

Posté 03 juin 2020 - 10:25

Bonjour tu peux zieuter cette video qui répond bien à ta demande : type de ligne complexe

Cordialement
0

#3 L'utilisateur est hors-ligne   chachageo 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 11
  • Inscrit(e) : 03-juin 20

Posté 03 juin 2020 - 11:44

Voir le messagejerome.s, le 03 juin 2020 - 10:25 , dit :

Bonjour tu peux zieuter cette video qui répond bien à ta demande : type de ligne complexe

Cordialement


merci beaucoup!
j'ai cependant encore un soucis car je n'ai pas la commande SHAPE
0

#4 L'utilisateur est hors-ligne   Steven 

  • ceinture rouge et blanche 7em dan
  • Groupe : Membres
  • Messages : 3 790
  • Inscrit(e) : 03-mars 03
  • LocationDans le TARDIS

Posté 03 juin 2020 - 11:52

Salut,

Il faut avoir les Express Tools d'installés.
Steven________________________________________
Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.
Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.
En rêve; AutoCAD sous Linux.
0

#5 L'utilisateur est hors-ligne   jerome.s 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 189
  • Inscrit(e) : 13-juillet 05

Posté 03 juin 2020 - 12:13

Bonjour, tapes la commande au clavier.
Cordialement
0

#6 L'utilisateur est hors-ligne   dilack 

  • ceinture noire
  • Groupe : Membres
  • Messages : 498
  • Inscrit(e) : 26-avril 04

Posté 03 juin 2020 - 13:40

salut,
a la vue de tes formes complexes suivant tes captures, je te conseil de bien choisir la résolution de ta ligne. Pour ton exemple je pencherai plus vers une résolution de 256 voir 512.
Ce qui faut savoir aussi, c'est plus tu as de type de ligne complexe dans tes dwg plus tu alourdi ton dwg.
0

#7 L'utilisateur est hors-ligne   chachageo 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 11
  • Inscrit(e) : 03-juin 20

Posté 03 juin 2020 - 13:43

Voir le messageSteven, le 03 juin 2020 - 11:52 , dit :

Salut,

Il faut avoir les Express Tools d'installés.


oui je les ai et je tap la commande au clavier mais il me renvoi vers MKSHAPE (la première que j'ai déjà effectué donc)
0

#8 L'utilisateur est hors-ligne   chachageo 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 11
  • Inscrit(e) : 03-juin 20

Posté 03 juin 2020 - 13:44

Voir le messagedilack, le 03 juin 2020 - 13:40 , dit :

salut,
a la vue de tes formes complexes suivant tes captures, je te conseil de bien choisir la résolution de ta ligne. Pour ton exemple je pencherai plus vers une résolution de 256 voir 512.
Ce qui faut savoir aussi, c'est plus tu as de type de ligne complexe dans tes dwg plus tu alourdi ton dwg.


en effet je n'avais pas pensé à cela! je vais certainement simplifié mais forme alors, un trait un rond un trait pour ma ligne d'arbre? et concernant la haie un simple rectangle vert suffit peut-être?
0

#9 L'utilisateur est hors-ligne   dilack 

  • ceinture noire
  • Groupe : Membres
  • Messages : 498
  • Inscrit(e) : 26-avril 04

Posté 03 juin 2020 - 13:51

Citation

concernant la haie un simple rectangle vert suffit peut-être?


Ca dépend de ta méthode de travail et du rendu souhaité. Chacun à ses petite habitudes.
Personnellement je ne passe pas par une polyligne de type complexe mais un bloc dynamique avec récupération des longueurs en attribut si j'ai besoin de les quantifier, quand je n'ai pas covadis sous la main.
0

#10 L'utilisateur est hors-ligne   chachageo 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 11
  • Inscrit(e) : 03-juin 20

Posté 03 juin 2020 - 14:33

Voir le messagedilack, le 03 juin 2020 - 13:51 , dit :

Ca dépend de ta méthode de travail et du rendu souhaité. Chacun à ses petite habitudes.
Personnellement je ne passe pas par une polyligne de type complexe mais un bloc dynamique avec récupération des longueurs en attribut si j'ai besoin de les quantifier, quand je n'ai pas covadis sous la main.


c'est à dire?
0

#11 L'utilisateur est hors-ligne   bonuscad 

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

Posté 05 juin 2020 - 15:19

Bonjour,

En copiant directement ce qui suit en ligne de commande, tu auras un type de ligne nommé "Haie" qui sera disponible dans ton dessin.
Ce code s'occupe de créer la forme SHP et de la compiler en SHX ainsi que d'écrire le fichier LIN utilisant cette forme.
Tu auras désormais les fichiers nécessaires et plus besoin d'utiliser le code proposé.

((lambda ( / f_shp f_lin doc)
	(if (not (findfile "haie.shp"))
		(progn
			(setq f_shp (open (strcat (getvar "ROAMABLEROOTPREFIX") "support\\haie.shp") "w"))
			(write-line "*128,66,HAIE" f_shp)
			(write-line "1,12,(2,1,-54),2,018," f_shp)
			(write-line "1,12,(4,1,-91),2,018," f_shp)
			(write-line "1,12,(2,0,-126),2,01C," f_shp)
			(write-line "1,12,(3,-1,-127),2,025," f_shp)
			(write-line "1,12,(2,-2,-79),2,02C," f_shp)
			(write-line "1,12,(-3,1,-52),2,020," f_shp)
			(write-line "1,12,(-5,1,-76),2,02F," f_shp)
			(write-line "1,12,(-3,-1,-126),2,010," f_shp)
			(write-line "1,12,(-4,0,-78)," f_shp)
			(write-line "2,8,(10,2),0" f_shp)
			(close f_shp)
		)
	)
	(command "_.compile" (strcat (getvar "ROAMABLEROOTPREFIX") "support\\haie.shp"))
	(if (not (tblsearch "STYLE" ""))
		(entmakex
			'(
				(0 . "STYLE")
				(100 . "AcDbSymbolTableRecord")
				(100 . "AcDbTextStyleTableRecord")
				(2 . "")
				(70 . 1)
				(40 . 0.0)
				(41 . 1.0)
				(50 . 0.0)
				(71 . 0)
				(42 . 2.5)
				(3 . "haie.shx")
				(4 . "")
		     )
		)
	)
	(entmake
		(list
			'(0 . "LTYPE")
			'(100 . "AcDbSymbolTableRecord")
			'(100 . "AcDbLinetypeTableRecord")
			'(2 . "HAIE")
			'(70 . 0)
			'(3 . "Haies-arbuste")
			'(72 . 65)
			'(73 . 2)
			'(40 . 1.0)
			'(49 . 0.0)
			'(74 . 0)
			'(49 . -1.0)
			'(74 . 4)
			'(75 . 128)
			(CONS 340 (TBLOBJNAME "STYLE" ""))
			'(46 . 0.1)
			'(50 . 0.0)
			'(44 . -1.0)
			'(45 . 0.0)
		)
	)
	(if (not (findfile "haie.lin"))
		(progn
			(setq f_lin (open (strcat (getvar "ROAMABLEROOTPREFIX") "support\\haie.lin") "w"))
			(write-line "*HAIE, Haies-arbuste" f_lin)
			(write-line "A,0,-1,[HAIE,haie.shx,x=-1,s=.1]" f_lin)
			(close f_lin)
		)
	)
	(setq doc (vla-get-activedocument (vlax-get-acad-object)))
	(if
		(and
			(not
				(vlax-for item (vla-get-linetypes doc)
					(if (= (strcase (vla-get-name item)) (strcase "haie")) T)
				)
			)
			(vl-catch-all-error-p
				(vl-catch-all-apply
					'vla-load
					(list (vla-get-Linetypes doc) "haie" "haie.lin")
				)
			)
		)
		nil
		T
	)
	(princ "\nCréation de Type de Ligne \"haie\" effectué!")
	(prin1)
))

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

#12 L'utilisateur est hors-ligne   Steven 

  • ceinture rouge et blanche 7em dan
  • Groupe : Membres
  • Messages : 3 790
  • Inscrit(e) : 03-mars 03
  • LocationDans le TARDIS

Posté 05 juin 2020 - 16:23

Voir le messagechachageo, le 03 juin 2020 - 13:43 , dit :

oui je les ai et je tap la commande au clavier mais il me renvoi vers MKSHAPE (la première que j'ai déjà effectué donc)



Si tu tapes la commande en français, il faut taper FORMES.

Si tu veux taper la commande en anglais, il faut mettre un underscore (_) devant shape. = _shape.



Steven________________________________________
Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.
Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.
En rêve; AutoCAD sous Linux.
0

#13 L'utilisateur est hors-ligne   chachageo 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 11
  • Inscrit(e) : 03-juin 20

Posté 09 juin 2020 - 09:58

Merci, je viens juste de voir que j'avais des réponses :)
c'est parfait entre la première vidéo et ces deux commandes j'ai réussi à faire ce que je veux merci! :)
0

#14 L'utilisateur est hors-ligne   chachageo 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 11
  • Inscrit(e) : 03-juin 20

Posté 09 juin 2020 - 15:10

salut!
c'est encore moi :)

je progresse dans la création de mes linéaires, cependant j'aimerais savoir si il y a moyen d'obtenir une ligne avec double trait (créer à partir d'un shape) qui n'ait jamais de trou au début et à la fin (cf image)
car je vois que le linéaire prend exactement le gabarit de mon shape sans le réadapter mais si ma ligne n'est pas un multiple exact de mon shape il y a un vide.

Merci! ;)

Fichier(s) joint(s)

  • Fichier joint  Capture.JPG (57,68 Ko)
    Nombre de téléchargements : 17

0

#15 L'utilisateur est hors-ligne   chachageo 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 11
  • Inscrit(e) : 03-juin 20

Posté 11 juin 2020 - 09:04

salut! :)
je ne sais pas si qq a vu mon dernier message, donc je relance la conversation au cas où ^^
merci

bonne journée!
0

#16 L'utilisateur est hors-ligne   bonuscad 

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

Posté 11 juin 2020 - 13:27

Voir le messagechachageo, le 09 juin 2020 - 15:10 , dit :

salut!
c'est encore moi :)

je progresse dans la création de mes linéaires, cependant j'aimerais savoir si il y a moyen d'obtenir une ligne avec double trait (créer à partir d'un shape) qui n'ait jamais de trou au début et à la fin (cf image)
car je vois que le linéaire prend exactement le gabarit de mon shape sans le réadapter mais si ma ligne n'est pas un multiple exact de mon shape il y a un vide.

Merci! ;)


Salut,

A mon avis, il n'y a pas moyen de résoudre cd problème d'évidement en début et fin de ligne en utilisant une forme (shape), le type de ligne n'est qu'une répétition d'un motif et autocad ajuste celle-ci pour que les motif ne dépasse pas les points d'extrémitées
Autrement tu peut essayer de te tourner vers le multi-lignes.
Voici par exemple un lisp un peu ancien qui converti des objets curviligne en multi-ligne.
(defun def_bulg_pl (ls lb flag_closed / ls lb rad a l_new)
  (if (not (zerop flag_closed)) (setq ls (append ls (list (car ls)))))
  (while (cadr ls)
	(if (zerop (car lb))
  	(setq l_new (append l_new (list (car ls))))
  	(progn
    	(setq
      	rad (/ (distance (car ls) (cadr ls)) (sin (* 2.0 (atan (abs (car lb))))) 2.0)
      	a (- (/ pi 2.0) (- pi (* 2.0 (atan (abs (car lb))))))
    	)
    	(if (< a 0.0) (setq a (- (* 2.0 pi) a)))
    	(if (or (and (< (car lb) 0.0) (> (car lb) -1.0)) (> (car lb) 1.0))
      	(setq l_new (append l_new (reverse (cdr (reverse (bulge_pts (polar (car ls) (- (angle (car ls) (cadr ls)) a) rad) (car ls) (cadr ls) rad (car lb)))))))
      	(setq l_new (append l_new (reverse (cdr (reverse (bulge_pts (polar (car ls) (+ (angle (car ls) (cadr ls)) a) rad) (car ls) (cadr ls) rad (car lb)))))))
    	)
  	)
	)
	(setq ls (cdr ls) lb (cdr lb))
  )
  (append l_new (list (car ls)))
)
(defun bulge_pts (pt_cen pt_begin pt_end rad sens / inc ang nm p1 p2 lst)
  (setq
	inc (angle pt_cen (if (< sens 0.0) pt_end pt_begin))
	ang (+ (* 2.0 pi) (angle pt_cen (if (< sens 0.0) pt_begin pt_end)))
	nm (fix (/ (rem (- ang inc) (* 2.0 pi)) (/ (* pi 2.0) 36.0)))
  )
  (repeat nm
	(setq
  	p1 (polar pt_cen inc rad)
  	inc (+ inc (/ (* pi 2.0) 36.0))
  	lst (append lst (list p1))
	)
  )
  (setq
	p2 (polar pt_cen ang rad)
	lst (append lst (list p2))
  )
  (if (< sens 0.0) (reverse lst) lst)
)
(defun c:polyarc2ml ( / jspl nbr ent dxf_ent typent name_layer closed lst l_bulg e_next dxf_next oldlayer oldosm key_mod scale_ml)
  (princ "\nChoix des polylignes à transformer en multilignes: ")
  (setq
	jspl (ssget '((0 . "*POLYLINE,LINE,CIRCLE,ARC") (-4 . "<NOT") (-4 . "&") (70 . 124) (-4 . "NOT>")))
	nbr 0
  )
  (cond
	(jspl
  	(initget "Dessus Nulle dEssous _Top Zero Bottom")
  	(setq key_mod
    	(getkword
      	(strcat
        	"\nEntrez le type de justification [Dessus/Nulle/dEssous] <"
        	(cond
          	((eq (getvar "cmljust") 0)
            	"Dessus"
          	)
          	((eq (getvar "cmljust") 1)
            	"Nulle"
          	)
          	((eq (getvar "cmljust") 2)
            	"dEssous"
          	)
        	)
        	">: "
      	)
    	)
  	)
  	(if key_mod
    	(cond
      	((eq key_mod "Top") (setvar "cmljust" 0))
      	((eq key_mod "Zero") (setvar "cmljust" 1))
      	((eq key_mod "Bottom") (setvar "cmljust" 2))
    	)
  	)
  	(setq scale_ml (getdist (strcat "\nEntrez l'échelle de la multiligne <" (rtos (getvar "cmlscale")) ">: ")))
  	(if scale_ml (setvar "cmlscale" scale_ml))
  	(setq oldlayer (getvar "clayer") oldosm (getvar "osmode"))
  	(setvar "osmode" 0)
  	(setvar "cmdecho" 0)
  	(command "_.ucs" "_world")
  	(repeat (sslength jspl)
    	(setq
      	typent (cdr (assoc 0 (setq dxf_ent (entget (setq ent (ssname jspl nbr))))))
      	name_layer (cdr (assoc 8 dxf_ent))
    	)
    	(cond
      	((eq typent "LWPOLYLINE")
        	(setq
          	closed (boole 1 (cdr (assoc 70 dxf_ent)) 1)
          	lst (mapcar '(lambda (x) (trans x ent 1)) (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) dxf_ent)))
          	l_bulg (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 42)) dxf_ent))
          	lst (def_bulg_pl lst l_bulg closed)
        	)
      	)
      	((eq typent "POLYLINE")
        	(setq
          	closed (boole 1 (cdr (assoc 70 dxf_ent)) 1)
          	e_next (entnext ent)
        	)
        	(while (= "VERTEX" (cdr (assoc 0 (setq dxf_next (entget e_next)))))
          	(if (zerop (boole 1 223 (cdr (assoc 70 dxf_next))))
            	(setq
              	lst (cons (trans (cdr (assoc 10 dxf_next)) ent 1) lst)
              	l_bulg (cons (cdr (assoc 42 dxf_next)) l_bulg)
            	)
          	)
          	(setq e_next (entnext e_next))
        	)
        	(setq
          	lst (reverse lst)
          	l_bulg (reverse l_bulg)
          	lst (def_bulg_pl lst l_bulg closed)
        	)
      	)
      	((eq typent "LINE")
        	(setq
          	lst (list (trans (cdr (assoc 10 dxf_ent)) 0 1) (trans (cdr (assoc 11 dxf_ent)) 0 1))
          	closed 0
        	)
      	)
      	((eq typent "CIRCLE")
        	(setq
          	lst
            	(bulge_pts
              	(trans (cdr (assoc 10 dxf_ent)) ent 1)
              	(polar (trans (cdr (assoc 10 dxf_ent)) ent 1) 0.0 (cdr (assoc 40 dxf_ent)))
              	(polar (trans (cdr (assoc 10 dxf_ent)) ent 1) (- (* 2.0 pi) (/ (* pi 2.0) 36.0)) (cdr (assoc 40 dxf_ent)))
              	(cdr (assoc 40 dxf_ent))
              	1
            	)
          	lst (append lst (list (car lst)))
          	closed 1
        	)
      	)
      	((eq typent "ARC")
        	(setq
          	lst
            	(bulge_pts
              	(trans (cdr (assoc 10 dxf_ent)) ent 1)
              	(polar (trans (cdr (assoc 10 dxf_ent)) ent 1) (cdr (assoc 50 dxf_ent)) (cdr (assoc 40 dxf_ent)))
              	(polar (trans (cdr (assoc 10 dxf_ent)) ent 1) (cdr (assoc 51 dxf_ent)) (cdr (assoc 40 dxf_ent)))
              	(cdr (assoc 40 dxf_ent))
              	1
            	)
          	closed 0
        	)
      	)
    	)
    	(cond
      	(lst
        	(setvar "clayer" name_layer)
        	(command "_.mline")
        	(foreach n lst (command n))
        	(if (not (zerop closed)) (command "_close") (command ""))
        	(entdel ent)
      	)
    	)
    	(setq nbr (1+ nbr) lst nil l_bulg nil)
  	)
  	(command "_.ucs" "_previous")
  	(setvar "clayer" oldlayer)
  	(setvar "osmode" oldosm)
  	(setvar "cmdecho" 1)
	)
	(T (princ "\nSélection vide"))
  )
  (prin1)
)


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

#17 L'utilisateur est hors-ligne   lecrabe 

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

Posté 24 juin 2020 - 08:07

Hello Bruno

MERCI pour cette superbe routine !

LA SANTE (Stay Safe), Bye, lecrabe "triste"
Automne 2020, la retraite
Autodesk Expert Elite Team
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)