Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous,

 

Je doit souvent dessiner des longueurs de cable sur plan, et bien entendu il y a plusieurs longueurs différentes.

Actuellement j'utilise donc plusieurs types de ligne avec les différentes longueurs (1m,2m,3m,ect...).

 

Voici ma demande:

 

Serait-il possible que si je dessine un spline, que celle ci se modifie automatiquement en fonction de sa longueur (en définissant l'echelle du plan bien entendu)?

Bref je voudrai facilement pouvoir dessiner une spline d'un point A à un point B, et qu'il m'indique automatiquement la longueur au mètre près!

Je vous laisse en lien un exemple de ce dont je parle...

 

 

http://cjoint.com/?dfj721LldC

http://cjoint.com/?dfj721LldC

 

Merci!!!!!!!!!

 

[Edité le 5/3/2010 par bono05]

Posté(e)

J'allais simplement conseiller un CHAMP mais je m'aperçois avec effroi que le spline a un champ AIRE mais pas un champ LONGUEUR.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

 

Hello

 

A mon avis on ne va quand meme pas generer des types de ligne complexes pour chaque longueur de cable ! Donc pour moi la solution est la suivante ...

 

Un programme Lisp/VLisp (qui permet la selection de spline, polyligne, ligne, arc)

par la methode de selection classique d'AutoCAD

 

Question 1 : Nombre de decimales (0 par defaut)

Question 2 : Suffixe eventuel (m par defaut)

Question 3 : Espacement entre les textes (etiquettes)

Question 4 : Couleur de masquage pour le MText (Defaut = 2 = Jaune)

 

Le programme genere des MTEXT avec le texte "voulu" et un masque d'arriere plan de la couleur voulu sur tous les objets selectionnes et concernes et ce sur la calque courant !

 

Ainsi les splines, polylignes, etc ne sont pas coupees mais simplement recouvertes par les MTEXT et leur rectangle de masquage ...

 

Par contre il faudra analyser la courbure des splines : bonjour la complexite !

- Ne pourrais tu pas utiliser plutot des polylignes classiques splinees,

cela pourrait s'averer plus simple pour le developpement !?

 

Mais bon, je ne suis pas developpeur !

 

Le Decapode "fort interesse par ce programme futur"

 

Autodesk Expert Elite Team

Posté(e)

 (defun c:splm( / Space enti tex)
 (vl-load-com)
 (setq Space(vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))))
 (setq enti(vlax-ename->vla-object(car(entsel "\nSélectionnez une spline"))))
 (if enti
   (progn
     (while(not(=(vla-get-objectname enti)"AcDbSpline"))
       (setq enti(vlax-ename->vla-object(car(entsel "\nCet objet n'est pas une spline recommencez :")))))
     (setq long(vlax-curve-getDistAtParam enti(vlax-curve-getEndParam enti)))
     (setq tex (vla-addMtext Space (vlax-3d-point(getpoint "\nPoint D'insertion")) 0.0
                 (strcat(rtos(vlax-curve-getDistAtParam enti(vlax-curve-getEndParam spli))2 0)"m")))
     (vla-put-BackgroundFill tex :vlax-true))
    )
 )

 

Truc tout bête.

 

Tiens, c'est marrant, chez moi la couleur par défaut du masquage est rouge ! (Autodesk Mechanical Desktop 2010)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

@lecrabe

Pour ma part si c'est plus simple d'utiliser des polylignes splinées(?), je veux bien faire le test.

 

@Tramber

La commande de ce lisp n'est pas splm? Car cela ne fonctionne pas avec...

 

Merci de vos solutions, cela devient déjà très intéressant!!!! :D

Posté(e)

La commande de ce lisp n'est pas splm? Car cela ne fonctionne pas avec...

 

Une petite erreur de variable dans le code.

Remplace (vlax-curve-getEndParam spli) par (vlax-curve-getEndParam enti) et cela fonctionnera.

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

Posté(e)

J'aime bien quand tout le monde suit, reste attentif et ne bavarde pas. Bonus, 1 bon point !

 

(J'ai même pas testé mon gribouilli !)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

J'ai testé et maintenant c'est ok...

 

Maintenant je constate des solutions en selection de splines, mais aucune en créatiion de splines?

N'est-ce peut-être tout simplement pas possible alors, vous en pensez quoi?

 

Enfin si seule la selection serait possible , je serai plutôt attiré par l'idée de Lecrabe...désolé Tramber. ;)

Posté(e)
Enfin si seule la selection serait possible , je serai plutôt attiré par l'idée de Lecrabe...désolé Tramber. ;)

C'est la même puisque j'ai écrit en programme ce qu'il expirmait, cher ami.

 

mais aucune en créatiion de splines

 

Esay is the word, smile is the action !

 

(defun c:splm( / Space enti tex)
 (vl-load-com)
 (setq Space(vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))))
 (command "_.spline"(while (not (zerop (getvar "cmdactive")))(command pause)))
 (setq enti(vlax-ename->vla-object(entlast)))
 (if enti
   (progn
     (while(not(=(vla-get-objectname enti)"AcDbSpline"))
       (setq enti(vlax-ename->vla-object(car(entsel "\nCet objet n'est pas une spline recommencez :")))))
     (setq long(vlax-curve-getDistAtParam enti(vlax-curve-getEndParam enti)))
     (setq tex (vla-addMtext Space (vlax-3d-point(getpoint "\nPoint D'insertion")) 0.0
                 (strcat(rtos(vlax-curve-getDistAtParam enti(vlax-curve-getEndParam enti))2 0)"m")))
     (vla-put-BackgroundFill tex :vlax-true))
    )
 ) 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Salut,

 

En retard mais un peu plus abouti (options nombre de décimales, suffixe, espacement moyen et couleur de fond paramétrables et conservées dans le dessin).

Deux commandes : SPLM pour dessiner des splines 'à la volée' et SSPLM pour traiter un jeu de sélection

 

Nouvelle version : correction d'un bug avec le choix de la couleur, ajout d'une option "Réserve"

 

Nouvelle version : ajout d'une option "conVersion"

 

;; Paramètres conservés dans le dessin

(defun splmParams (flag / prec suf spc col rsv cvr opt)
 (setq	prec (cond
       ((vlax-ldata-get "splmParams" "prec"))
       ((vlax-ldata-put "splmParams" "prec" 0))
     )
suf  (cond
       ((vlax-ldata-get "splmParams" "suf"))
       ((vlax-ldata-put "splmParams" "suf" "m"))
     )
spc  (cond
       ((vlax-ldata-get "splmParams" "spc"))
       ((vlax-ldata-put "splmParams" "spc" 2.))
     )
col  (cond
       ((vlax-ldata-get "splmParams" "col"))
       ((vlax-ldata-put "splmParams" "col" 2))
     )
rsv  (cond
       ((vlax-ldata-get "splmParams" "rsv"))
       ((vlax-ldata-put "splmParams" "rsv" 0.))
     )
cvr  (cond
       ((vlax-ldata-get "splmParams" "cvr"))
       ((vlax-ldata-put "splmParams" "cvr" 1.))
     )
 )
 (princ (strcat "\nParamètres courant Décimales: "
	 (itoa prec)
	 " Suffixe: \""
	 suf
	 "\" Espacement: "
	 (rtos spc)
	 " Couleur: "
	 (itoa col)
	 " Réserve: "
	 (rtos rsv)
	 " Conversion: "
	 (rtos cvr)
 )
 )
 (if flag
   (while (or (initget
	 "Couleur Décimales Espace Suffixe Réserve conVersion"
       )
       (setq opt
	      (getkword
		"\nSpécifiez une option [Couleur/Décimales/Espace/Suffixe/Réserve/conVersion] : "
	      )
       )
   )
     (cond
((= opt "Couleur")
 (if (setq col (acad_colordlg col nil))
   (vlax-ldata-put "splmParams" "col" col)
   (setq col (vlax-ldata-get "splmParams" "col"))
 )
)
((= opt "Décimales")
 (if (setq
       prec
	(getint
	  (strcat "\nNombre de décimales : ")
	)
     )
   (vlax-ldata-put "splmParams" "prec" prec)
   (setq prec (vlax-ldata-get "splmParams" "prec"))
 )
)
((= opt "Espace")
 (if
   (setq
     spc (getdist (strcat "\nEspacement : "))
   )
    (vlax-ldata-put "splmParams" "spc" spc)
    (setq spc (vlax-ldata-get "splmParams" "spc"))
 )
)
((= opt "Suffixe")
 (if (setq suf (getstring (strcat "\nSuffixe : ")))
   (vlax-ldata-put "splmParams" "suf" suf)
   (setq suf (vlax-ldata-get "splmParams" "suf"))
 )
)
((= opt "Réserve")
 (if
   (setq
     rsv (getdist (strcat "\nRéserve : "))
   )
    (vlax-ldata-put "splmParams" "rsv" rsv)
    (setq rsv (vlax-ldata-get "splmParams" "rsv"))
 )
)
((= opt "conVersion")
 (initget 2)
 (if
   (setq
     cvr (getdist (strcat "\nConversion : "))
   )
    (vlax-ldata-put "splmParams" "cvr" cvr)
    (setq crv (vlax-ldata-get "splmParams" "cvr"))
 )
)
     )
   )
 )
 (list prec suf spc col rsv cvr)
)

;; Ajout des Mtextes sur l'entité

(defun splmAddMtext (ent params / len txt inc div dist pt ang)
 (vl-load-com)
 (setq	len  (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent))
txt  (strcat (rtos (/ (+ len (nth 4 params)) (nth 5 params))
		   2
		   (car params)
	     )
	     (cadr params)
     )
inc  (if (zerop (setq div (atof (rtos (/ len (caddr params)) 2 0))))
       len
       (/ len div)
     )
dist (/ inc 2.)
pt   (vlax-curve-getPointAtDist ent dist)
 )
 (while (and (setq pt (vlax-curve-getPointAtDist ent dist))
      (	 )
   (setq ang (angle '(0. 0. 0.)
	     (vlax-curve-getFirstDeriv
	       ent
	       (vlax-curve-getParamAtPoint ent pt)
	     )
      )
   )
   (and (minusp (cos ang)) (setq ang (+ ang pi)))
   (entmake
     (list
'(0 . "MTEXT")
'(100 . "AcDbEntity")
'(100 . "AcDbMText")
(cons 10 pt)
(cons 40 (getvar 'textsize))
'(71 . 5)
(cons 1 txt)
(cons 7 (getvar 'textstyle))
(cons 50 ang)
'(90 . 1)
(cons 63 (cadddr params))
     )
   )
   (setq dist (+ dist inc))
 )
)

;; Commande SPLM
;; Ajout de mtextes sur une spline dessinée à la volée
(defun c:splm (/ params pt)
 (setq params (splmParams nil))
 (while
   (not
     (or
(initget "Paramètres")
(vl-consp
  (setq
    pt (getpoint
	 "\nSpécifiez le premier point ou [Paramètres] 
: "
       )
  )
)
     )
   )
    (setq params (splmParams T))
 )
 (vl-cmdf "_.spline" pt)
 (while (    (vl-cmdf pause)
 )
 (splmAddMtext (entlast) params)
 (princ)
)

;; Commande PLM
;; Ajout de mtextes sur une spline dessinée à la volée
(defun c:plm (/ params pt)
 (setq params (splmParams nil))
 (while
   (not
     (or
(initget "Paramètres")
(vl-consp
  (setq
    pt (getpoint
	 "\nSpécifiez le premier point ou [Paramètres] 
: "
       )
  )
)
     )
   )
    (setq params (splmParams T))
 )
 (vl-cmdf "_.pline" pt)
 (while (    (vl-cmdf pause)
 )
 (splmAddMtext (entlast) params)
 (princ)
)

;; Commande SSPLM
;; Ajout de mtextes sur les objets sélectionnés

(defun c:ssplm (/ params n ss)
 (vl-load-com)
 (or *acdoc*
     (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
 )
 (setq	params (splmParams T)
n      -1
 )
 (if (setq ss
     (ssget '((-4 . "		      (0 . "ARC,CERCLE,ELLIPSE,LINE,LWPOLYLINE,SPLINE")
	      (-4 . "		      (0 . "POLYLINE")
	      (-4 . "		      (-4 . "&")
	      (70 . 112)
	      (-4 . "not>")
	      (-4 . "and>")
	      (-4 . "or>")
	     )
     )
     )
   (while (setq ent (ssname ss (setq n (1+ n))))
     (splmAddMtext ent params)
   )
 )
 (princ)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

 

Hello Gilles

 

Sorry mais sous MAP 2006 & MAP 2008, j'ai l'erreur :

 

Commande: splm

 

Paramètres courant Décimales: 0 Suffixe: "m" Espacement: 2 Couleur: 2

Spécifiez le premier point ou [Paramètres]

: _.spline

Spécifiez le premier point ou [OBjet]:

Spécifiez le point suivant:

Spécifiez le point suivant ou [Clore/Tolérance] :

Spécifiez le point suivant ou [Clore/Tolérance] :

Spécifiez le point suivant ou [Clore/Tolérance] :

Spécifiez le point suivant ou [Clore/Tolérance] :

Spécifiez le point suivant ou [Clore/Tolérance] :

 

Spécifiez la tangente de départ:

 

Spécifiez la tangente de fin:

 

Commande: ; erreur: groupe DXF incorrect: (63)

 

SVP pourrais tu gerer AUSSI nos cheres Polylignes ?

 

Merci d'avance, Le Decapode

 

Autodesk Expert Elite Team

Posté(e)

Oupss !...

 

Il y avait effectivement un petit oubli de ma part (le code 63 est celui de la couleur pour le fond)

 

J'ai ajouté la commande PLM pour dessiner des polylignes 'à la volée'.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

 

 

Hello

 

Super ca fonctionne BIEN ! :)

 

Mais SVP je sollicite une fonction PLMS pour traiter N Polylignes deja existantes !!

comme je peux traiter N Splines existantes avec SSPLM

 

Encore Merci, Le Decapode "fretillant avec ses etiquettes de longueur"

 

 

Autodesk Expert Elite Team

Posté(e)

 

ReHello

 

Je suis une TRUFFE, je viens en effet de m'apercevoir que SSPLM

fonctionne avec tout ou presque ! :cool:

 

Honte au vieux Decapode, Mille Mercis, Le Decapode

 

Autodesk Expert Elite Team

Posté(e)

Bonjour à tous,

 

Heureux de vous retrouver en forme en ce lundi matin!

Je constate que vous n'avez pas chômé sur mon problème... :D

Et je vous en remercie.

 

 

Après un petit test j'aurai les remarques suivantes:

 

-Comment , a l'avance, pouvoir choisir la taille du texte? Car je l'ai essayé sur un plan et l'échelle du texte est beaucoup trop grande?!

Dans mon cas ce sont souvent des petites longueurs et donc avec le problème de grandeur du texte cela ne fonctionne pas?

Et en bonus une petite option ou il rajouterai 1 ou 2 m automatiquement (ou non) à la taille du spline? Dans mon cas un spline represente un cable et le trait comprend une reserve de 1 ou 2M en fonction de sa taille.

 

Enfin quand je change la couleur dans l'option...elle reste jaune! Alors je la change dans le lisp...

 

Voilà...merci!!!!!

 

 

[Edité le 8/3/2010 par bono05]

Posté(e)

Salut,

 

-Comment , a l'avance, pouvoir choisir la taille du texte? Car je l'ai essayé sur un plan et l'échelle du texte est beaucoup trop grande?!

La taille du texte est la taille courante (TEXTSIZE)

 

Et en bonus une petite option ou il rajouterai 1 ou 2 m automatiquement (ou non) à la taille du spline?

Option rajoutée dans la nouvelle version

 

Enfin quand je change la couleur dans l'option...elle reste jaune!

Réparé dans la nouvelle version

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Cher Gile,

 

Retest....et questions:

 

La spline devrait faire 6M...et elle en fait 600m! J'ai changé les unités mais cela ne modifie rien? Ai-je raté quelque chose?

 

Peux-tu faire en sorte que les mtext suivent la spline si on modifie sa longeur? autant en mesure que en alignement (texte sur la spline?)

 

Encore merci!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Posté(e)

La spline devrait faire 6M...et elle en fait 600m! J'ai changé les unités mais cela ne modifie rien? Ai-je raté quelque chose?

 

La valeur affichée dans le mtexte est la longueur de la spline en unités de dessin.

Ce que tu as raté, c'est de préciser : "je travaille en centimètres et je voudrais afficher le résultat en mètres" ce qui n'est pas forcément évident (je travaille le plus souvent en millimètres et lecrabe en mètres par exemple).

Je vais voir si j'ai le temps de rajouter une option...

 

Peux-tu faire en sorte que les mtext suivent la spline si on modifie sa longeur? autant en mesure que en alignement (texte sur la spline?)

Ce que tu demandes là est faisable, mais pas en 5mn. Ça nécessite l'utilisation de réacteurs et devient du coup plus complexe. Je crains de ne pas pouvoir te faire ça.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Gile,

 

Je resterai donc encre attentif à la première demande...concernant la deuxième je comprend tout à fait que cela peut être compliqué.

 

Sache que je te remercie pour le travail accompli et suis déjà très heureux d'avoir les options présentes.

 

Merci!!!!!!!!!!!!!!!!! :)

Posté(e)

C'est super gile....puis-je encore te demander un truc?

 

Le fait est que l'on utilise uniquement les longueurs pairs...

Donc je ne devrai pas avoir de 7m (par ex), mais 8m alors... :exclam:

Je comprendrai si cela ne serai pas facilement réalisable.

 

Et enfin...est-ce possible qu'il n'affiche qu'une seule fois sa longueur au milieu sur le cable (donc pas comme l'option "espace"), l'idée est par après de faire un décompte avec toutes les longueurs en reprenant ce texte. Mais comme il est parfois marqué plusieurs fois cela ne va pas.

 

Encore et encore merci !!!!!!!

Posté(e)

 

Hello

 

En l'etat actuel, la routine de notre "cher et indispensable" Gilles fonctionne

tres bien sous MAP 2006 et sous MAP 2010 ! :)

 

Elle me convient parfaitement :D

 

Encore Merci a Gilles pour son "devouement", Le Decapode

 

Autodesk Expert Elite Team

Posté(e)

Le fait est que l'on utilise uniquement les longueurs pairs...

Donc je ne devrai pas avoir de 7m (par ex), mais 8m alors...

Je comprendrai si cela ne serai pas facilement réalisable.

 

Après discussion, ce n'est pas vraiment nécessaire....et tant mieux!!

 

Et enfin...est-ce possible qu'il n'affiche qu'une seule fois sa longueur au milieu sur le cable (donc pas comme l'option "espace"), l'idée est par après de faire un décompte avec toutes les longueurs en reprenant ce texte. Mais comme il est parfois marqué plusieurs fois cela ne va pas.

 

J'ai constaté que si je faisait un espace de texte très important...il ne s'affiche qu'une seule fois au milieux! Donc problème également réglé pour moi! :D

 

 

Maintenant concernant le block de couleur autour du texte...serait-il possible de le rendre transparent? un peu comme la commande (express tools) textmask?

 

Milles merci !!!!!!!!

 

Ps: maintenant je constate que mon idée de départ est très apprécié par d'autres...et tant mieux!

 

[Edité le 9/3/2010 par bono05]

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é