CADxp: multiplier ou divisé la valeur d'un champs - CADxp

Aller au contenu

  • 2 Pages +
  • 1
  • 2

multiplier ou divisé la valeur d'un champs créer un texte pente

#1 L'utilisateur est hors-ligne   BenhuR 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 36
  • Inscrit(e) : 21-août 07

Posté 10 février 2018 - 16:44

Bonjour , sans faire de lisp , ni tableau , créer un champs automatique qui combine deux information champs , les divisé multiplier et indiqué la valeur .
le but créer un texte pente lié a une ligne .
j'arrive a affiché la distance de cette ligne , l’écart de Z entre les 2 sommets , et donc je me dis que que l'on combiné ces valeurs ? non ? sans lisp ni tableau , je vous vois venir , simple ,simple toujours simple.

du concret :
la distance : %<\AcObjProp Object(%<\_ObjId 140702321951504>%).Length \f "%lu2%pr2">%

ecart Z : %<\AcObjProp Object(%<\_ObjId 140702321951504>%).Delta \f "%lu2%pt4%pr2">%

Comment récupérer les valeurs les multiplier diviser et afficher un résultat.
ya que se qui ne cherche pas , qui ne trouve rien
0

#2 L'utilisateur est hors-ligne   lecrabe 

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

Posté 10 février 2018 - 18:00

Hello

En theorie avec les champs et une formule de calcul avec les champs, on doit y arriver !

Mais je n'y arrive pas sur une simple ligne 2D ... Peut etre suis je trop fatigue !?

Formule theorique en 2D = 100 x DeltaY / DeltaX

DeltaY = %<\AcObjProp.16.2 Object(%<\_ObjId 702541984>%).Delta \f "%lu6%pt2%zs8">%
DeltaX = %<\AcObjProp.16.2 Object(%<\_ObjId 702541984>%).Delta \f "%lu6%pt1%zs8">%


**** Merci Gilles pour ta routine Lisp ****

(defun c:PentePC (/ p1 p2 a)

(if
(and
(setq p1 (getpoint "\nPremier point: "))
(setq p2 (getpoint "\nDeuxieme point: "))
(setq a (angle p1 p2))
)
(entmake
(list
'(0 . "TEXT")
'(100 . "AcDbEntity")
'(100 . "AcDbText")
'(10 0. 0. 0.)
(cons 40 (getvar 'textsize))
(cons 1
(strcat (rtos (abs (* 100 (/ (sin a) (cos a)))) 2 2) " %")
)
(cons 50
(if (minusp (cos a))
(+ pi a)
a
)
)
'(72 . 1)
(cons 11 (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2.)) p1 p2))
'(73 . 1)
)
)
)
(princ)
)


Bye, lecrabe
Autodesk Expert Elite Team
0

#3 L'utilisateur est hors-ligne   lecrabe 

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

Posté 10 février 2018 - 18:10

Hello

Mais comme je suis Vieux et Tetu, j'ai reussi !
(En fait j'ai cherche en Mode "Je me complique la Vie" )

Formule theorique en 2D = 100 x DeltaY / DeltaX

Le BON DeltaY = %<\AcObjProp Object(%<\_ObjId 702541984>%).Delta \f "%lu2%pt2%pr2">%
Le BON DeltaX = %<\AcObjProp Object(%<\_ObjId 702541984>%).Delta \f "%lu2%pt1%pr2">%

Bye, lecrabe
Autodesk Expert Elite Team
0

#4 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8375
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 10 février 2018 - 18:14

Pour la distance, on peut mettre un facteur de conversion, c'est facile dans les options du champ.
Mais on voit bien, en manuel sur les différences en X,Y ou Z ou les trois, qu'il n'est pas possible de spécifier le facteur.
Donc distance oui, différence non !

Ici j'ai un [0.01], il suffit peut-être de le tricher par prog et l'injecter dans le code pour la différence. Je sais que cela se pratique.
(jamais fait).

%<\AcObjProp.16.2 Object(%<\_ObjId 2130039712>%).Length \f "%lu2%ct8[0.01]">%
Image IPB

Bureau d'études dessin.
Spécialiste Escaliers
Développement - Formation

./__\.
(.°=°.)
0

#5 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10819
  • Inscrit(e) : 02-septembre 05

Posté 10 février 2018 - 18:29

Salut,

D'abord, il me semble qu'il faut corriger une petite erreur de raisonnement.
La pente c'est le rapport entre la différence d'altitudes entre les deux points et la distance horizontale (donc pas la longueur de la ligne.

Ceci dit, on peut quand même y arriver, je te propose deux formules.

La première en calculant la distance horizontale avec Pythagore :
Delta.Z / sqrt(Delta.X * Delta.X + Delta.Y * Delta.Y)

La seconde en utilisant la trigonométrie
tang(asin(Delta.Z / Length))

Pour construire la formule de champ :
  • tu lances la commande CHAMP
  • tu choisis Objet dans le panneau de gauche et tu sélectionnes la ligne
  • tu choisis Différence (Delta) dans le panneau central et décoches tout sauf Z dans celui de droite
  • tu copies l'expression de champ (panneau du bas)
  • dans le panneau de gauche, tu choisis maintenant : Formule
  • dans la case Formule: tu colles l'expression de champ (c'est le résultat qui s'affiche)
  • tu ajoutes derrière ce champ le signe diviser : /, puis sqrt (pour racine carrée) et enfin une parenthèse ouvrante : (
  • dans la panneau de gauche tu reviens à Objet (la ligne est toujours sélectionnée)
  • tu coches X et décoches Z pour avoir le Delta X
  • tu copies l'expression de champ
  • tu retournes dan la Formule
  • à la suite de ce que tu as déjà entré, tu colles le nouveau champ puis * (multiplier) puis à nouveau le champ (mise au carré) et enfin un +
  • retour dans Objet pour copier le Delta Y
  • et enfin, de retour dans Formule, tu fais comme pour X et tu fermes la parenthèse )


L'expression de champ dans la boite de dialogue devrait ressembler à ça (FldPtr est un pointeur sur un champ):
%<\AcExpr (%<\_FldPtr 729000976>%/sqrt(%<\_FldPtr 728999792>%*%<\_FldPtr 728999120>%+%<\_FldPtr 728997744>%*%<\_FldPtr 728996048>%)) \f "%lu2">%

en développé c'est ça :
%<\\AcExpr (%<\\AcObjProp Object(%<\\_ObjId 8796087805376>%).Delta \\f \"%lu2%pt4\">%/sqrt(%<\\AcObjProp Object(%<\\_ObjId 8796087805376>%).Delta \\f \"%lu2%pt1\">%*%<\\AcObjProp Object(%<\\_ObjId 8796087805376>%).Delta \\f \"%lu2%pt1\">%+%<\\AcObjProp Object(%<\\_ObjId 8796087805376>%).Delta \\f \"%lu2%pt2\">%*%<\\AcObjProp Object(%<\\_ObjId 8796087805376>%).Delta \\f \"%lu2%pt2\">%)) \\f \"%lu2\">%


Pour l'autre formule, je te laisse faire (c'est plus rapide).
L'expression dans la boite de dialogue est plus simple:
%<\AcExpr (tang(asin(%<\_FldPtr 728769280>%/%<\_FldPtr 728769152>%))) \f "%lu2">%

De même que l'expression développée :
%<\\AcExpr (tang(asin(%<\\AcObjProp Object(%<\\_ObjId 8796087805376>%).Delta \\f \"%lu2%pt4\">%/%<\\AcObjProp Object(%<\\_ObjId 8796087805376>%).Length \\f \"%lu2\">%))) \\f \"%lu2\">%

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#6 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10819
  • Inscrit(e) : 02-septembre 05

Posté 10 février 2018 - 19:22

J'avais oublié, pour une valeur en pourcentage, il suffit d'ajouter 100* au début des formules (pour multiplier le résultat par 100) ou d'affecter un facteur de conversion de 100 au champ formule (il faut faire Evaluer avant) et ont peut aussi modifier ce format (précision, suffixe).
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#7 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10819
  • Inscrit(e) : 02-septembre 05

Posté 10 février 2018 - 20:54

Comme le processus est un peu fastidieux, voici un petit LISP qui crée le champ pour la ligne sélectionnée et insère un texte multiligne contenant le champ au point spécifié.

Le LISP utilise les paramètre de texte courant et un formatage de champ basique.
Libre à chacun de l'adapter pour ses besoins spécifiques.

;; SLOPEFIELD
;; Insère un texte multiligne contenant un champ indiquant la pente (3D) de la ligne sélectiionnée
(defun c:slopefield (/ line pt doc id)
  (vl-load-com)
  (and
    (setq line (car (entsel "\nSélectionnez une ligne: ")))
    (setq line (vlax-ename->vla-object line))
    (= (vla-get-ObjectName line) "AcDbLine")
    (setq pt (getpoint "\nSpecifiez le point d'insertion: "))
    (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
    (setq id (vla-GetObjectIdString (vla-get-Utility doc) line :vlax-false))
    (vla-AddMText
      (vla-get-Block (vla-get-ActiveLayout doc))
      (vlax-3d-point pt)
      0.0
      (strcat
        "%<\\AcExpr (100*tang(asin(%<\\AcObjProp Object(%<\\_ObjId "
        id
        ">%).Delta \\f \"%lu2%pt4\">%/%<\\AcObjProp Object(%<\\_ObjId "
        id
        ">%).Length>%))) "
        "\\f \"%lu2%pr2%ps[,%]\">%"               ; <- formatage du texte
      )
    )
  )
  (princ)
)


Format de champ :
%lu2 : unités décimales (CF la variablle système LUNITS)
%pr2 : précision (2 décimales)
%ps[,%] : [préfixe,suffixe]
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#8 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8375
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 10 février 2018 - 21:32

Génial !
J'utilise les champs depuis toujours mais je n'avais travaillé, je l'avoue, la zone de formule.
Il faut dire qu'ici on a parlé en large et en travers notamment ces années où l'on avait découvert comment bien manipuler tout cela par lisp mais que je lisais aussi en travers.

J'ai fait la procédure et me dis vraiment que j'ai manqué un chapitre sur ce tout petit carré de formule où l'on travaille vraiment ses données d'objet en collant d'autres formules :P
Juste le sentiment d'avoir jamais fait assez gaffe à l’existence d'une bonne fonctionnalité.
Merci pour le rappel.
Image IPB

Bureau d'études dessin.
Spécialiste Escaliers
Développement - Formation

./__\.
(.°=°.)
0

#9 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10819
  • Inscrit(e) : 02-septembre 05

Posté 10 février 2018 - 22:12

Le problème, c'est qu'il n'existe pas, à ma connaissance de documentation sur les fonctions utilisables dans les formules. On donc un peu obligé d'y aller par tâtonnement.

Par exemple, pour la tangente, j'ai d'abord essayé tan (comme dans les langages que je connais) et ça ne marchait pas ; j'ai ensuite essayé tg comme on écrivait quand j'étais au collège, pas mieux ; puis tangente en toutes lettres, non plus ; finalement tang a marché, mais j'ai l'impression d'avoir eu de la chance, c'est bien la première fois que je je vois ce symbole pour la tangente d'un angle.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#10 L'utilisateur est en ligne   didier 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7647
  • Inscrit(e) : 18-décembre 02
  • LocationPlanète : Terre

Posté 11 février 2018 - 07:57

Coucou

Fantastique, bravo (gile)
Je n'ai pas besoin de ce genre de champ ayant des outils mais ça ne m'empêche pas de bayer devant tant de virtuosité
J'ai lu la question, j'ai séché très vite (après la distance) et j'ai conclu que je ne viendrais pas répondre simplement pour dire que je n'y arrivait pas
Et quand j'ai vu que (gile) avait répondu je n'ai pas retenu ma souris qui piaffait de cliquer sur le lien et elle a bien fait.
Encore bravo d'apporter la preuve que la ténacité, basée sur une connaissance parfaite des arcanes logicielles, paye et est rentable.

Amicalement

Éternel débutant ...
Les bases AutoLisp
0

#11 L'utilisateur est hors-ligne   lili2006 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11707
  • Inscrit(e) : 21-décembre 05

Posté 11 février 2018 - 10:31

Bonjour à toutes et tous,

Salut Gilles,

Chez moi =>

Image IPB

Il semble qu'il ne reconnaisse pas Delta Z =>

Image IPB

Pourquoi passer par la trigo alors que l'on pourrait écrire simplement:

Citation

Pente = DeltaZ/dh ?


Merci d'avance,
AutoCAD MAP 3D 2018 - Covadis 16.0d
Forum : http://genie-civil.bbactif.com/
0

#12 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10819
  • Inscrit(e) : 02-septembre 05

Posté 11 février 2018 - 11:04

Salut lili2006

Citation

Il semble qu'il ne reconnaisse pas Delta Z

Il semble tout simplement que ton delta Z est égal à 0.0, autrement dit que ta ligne est horizontale (parallèle au plan XY).

Citation

Pourquoi passer par la trigo alors que l'on pourrait écrire simplement:

Citation

Citation
Pente = DeltaZ/dh ?

Personnellement je n'ai pas trouvé de moyen d'obtenir directement la distance horizontale (dh), mais si tu as vu un truc qui m'aurait échappé, dis nous où ça se trouve.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#13 L'utilisateur est hors-ligne   lecrabe 

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

Posté 11 février 2018 - 11:45

Hello

1) MERCI Gilles pour la Routine VLisp !

GRRR, j'avais deja essaye tan & tangente mais pas TANG !!

2) RAPPELs : les champs dynamiques sont apparus avec la version 2005 et les Formules avec la 2006 ...

3) Je connais les champs dynamiques depuis "toujours" mais je les ai reellement utilises qu'a partir de la version 2008/2009 (Pourquoi je ne sais pas !?)

4) Lors de "mes" formations AutoCAD, j'essaye de parler des champs dynamiques (si j'ai le temps) au niveau 1 : recuperation des longueurs / surfaces ... avec un eventuel facteur d'echelle pour les conversions M / CM / MM ...

5) Et si j'ai "un poil de temps", (dans l'Espace PAPIER) je fais realiser la formule : 1000 / Echelle_Personnalisee_de_la_Fenetre_FMULT (Avec ZERO decimale) ainsi on dispose d'un champ dynamique refletant l'Echelle de Trace/Impression de la FMULT concernee ...
NOTE: 1000 pour les DWG en M -- 10 pour les DWG en CM -- 1 pour les DWG en MM

6) Voir l'Image : http://dl.free.fr/odikPQ7XS

7) Question pour Gilles (ou autre Grand Maitre du Lisp/VLisp/Dotnet, etc sous AutoCAD): y a t-il une limite physique a la longueur d'un champ dynamique en terme d'expression ??
J'ai deja mis dans un champ dynamique (en formule) la somme de 2/3/4 Longueurs/Surfaces ...

8) Demande pour Gilles - SVP serait il possible d'envisager une routine LSP qui :
- Selection classique de N Polylignes (Closes ou NON) (2D ou 3D) - Mais pas les 3DMesh !
- Construction des N champs dynamiques permettant de recuperer la Longueur
- Construction et placement de la formule de la Somme des N champs ...

9) NOTE: j'ai deja utilise les champs dynamiques sur les Volumes 3D ACIS d'AutoCAD !
En essayant des proprietes NON proposees et CA MARCHE !!

Ainsi on peut recuperer en Formule le VOLUME et AREA d'un Solid 3D ACIS alors que ces proprietes ne sont pas proposees par AutoCAD !!!
%<\AcObjProp Object(%<\_ObjId 702329024>%).Area \f "%lu2">%
%<\AcObjProp Object(%<\_ObjId 702329024>%).Volume \f "%lu2">%

Et avec des Formules (sur les objets 2D ou 3D) on peut faire des JOLIES choses ...

Bon Dimanche, Bye, lecrabe
Autodesk Expert Elite Team
0

#14 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8375
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 11 février 2018 - 13:52

Voir le messagelecrabe, le 11 février 2018 - 11:45 , dit :

2) RAPPELs : les champs dynamiques sont apparus avec la version 2005 et les Formules avec la 2006 ...
Je comprends mieux car je me souviens très bien, 2005, avoir fait le tour. Je comprends mieux mon ignorance maintenant.

Citation

9) NOTE: j'ai deja utilise les champs dynamiques sur les Volumes 3D ACIS d'AutoCAD !
En essayant des proprietes NON proposees et CA MARCHE !!

Ainsi on peut recuperer en Formule le VOLUME et AREA d'un Solid 3D ACIS alors que ces proprietes ne sont pas proposees par AutoCAD !!!
%<\AcObjProp Object(%<\_ObjId 702329024>%).Area \f "%lu2">%
%<\AcObjProp Object(%<\_ObjId 702329024>%).Volume \f "%lu2">%

Ben ça alors !!!

Gilles dit :

Le problème, c'est qu'il n'existe pas, à ma connaissance de documentation sur les fonctions utilisables dans les formules. On donc un peu obligé d'y aller par tâtonnement.

C'est justement ce que j'allais demander. J'ai cherché un peu...

Prochain coup, j'essaie de penser à tout ça et merci à l'auteur du sujet (s'il s'en sort) d'avoir fait tirer quelques tiroirs B)
Image IPB

Bureau d'études dessin.
Spécialiste Escaliers
Développement - Formation

./__\.
(.°=°.)
0

#15 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10819
  • Inscrit(e) : 02-septembre 05

Posté 11 février 2018 - 14:44

Voir le messagelecrabe, le 11 février 2018 - 11:45 , dit :

7) Question pour Gilles (ou autre Grand Maitre du Lisp/VLisp/Dotnet, etc sous AutoCAD): y a t-il une limite physique a la longueur d'un champ dynamique en terme d'expression ??
J'ai deja mis dans un champ dynamique (en formule) la somme de 2/3/4 Longueurs/Surfaces ...

Je n'en ai aucune idée.

Voir le messagelecrabe, le 11 février 2018 - 11:45 , dit :

8) Demande pour Gilles - SVP serait il possible d'envisager une routine LSP qui :
- Selection classique de N Polylignes (Closes ou NON) (2D ou 3D) - Mais pas les 3DMesh !
- Construction des N champs dynamiques permettant de recuperer la Longueur
- Construction et placement de la formule de la Somme des N champs ...

Tant qu'à utiliser un LISP, tu as TotalPerim (sur cette page) qui fait ça et même plus sans champ dynamique.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#16 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10819
  • Inscrit(e) : 02-septembre 05

Posté 11 février 2018 - 15:04

Voir le messagelecrabe, le 11 février 2018 - 11:45 , dit :

8) Demande pour Gilles - SVP serait il possible d'envisager une routine LSP qui :
- Selection classique de N Polylignes (Closes ou NON) (2D ou 3D) - Mais pas les 3DMesh !
- Construction des N champs dynamiques permettant de recuperer la Longueur
- Construction et placement de la formule de la Somme des N champs ...


(defun c:PolyLength (/ doc expr ss)
  (vl-load-com)
  (if
    (and
      (ssget '((0 . "*POLYLINE") (-4 . "<NOT") (-4 . "&") (70 . 112) (-4 . "NOT>")))
      (setq pt (getpoint "\nSpécifiez le point d'insertion: "))
    )
     (progn
       (setq doc  (vla-get-ActiveDocument (vlax-get-acad-object))
             expr "%<\\AcExpr 0"
       )
       (vlax-for pl (setq ss (vla-get-ActiveSelectionSet doc))
         (setq expr (strcat
                      expr
                      "+%<\\AcObjProp Object(%<\\_ObjId "
                      (vla-GetObjectIdString (vla-get-Utility doc) pl :vlax-false)
                      ">%).Length>%"
                    )
         )
       )
       (vla-Delete ss)
       (setq expr (strcat expr " \\f \"%lu2%pr2%ps[longueur totale: ,m]\">%")) ; formatage du champ
       (terpri)
       (prompt expr)
       (vla-AddMText
         (vla-get-Block (vla-get-ActiveLayout doc))
         (vlax-3d-point pt)
         0.0
         expr
       )
     )
  )
  (princ)
)

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#17 L'utilisateur est hors-ligne   lili2006 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11707
  • Inscrit(e) : 21-décembre 05

Posté 11 février 2018 - 15:40

Re,

Citation

autrement dit que ta ligne est horizontale (parallèle au plan XY).


Bah non, elle est comme sur l'image du post

Citation

la distance horizontale (dh)


Oups, désolé, l'habitude de travailler sur des Profils,..On définit cette distance par différence d'abscisse curviligne, mais ce n'est pas le cas ici,...
AutoCAD MAP 3D 2018 - Covadis 16.0d
Forum : http://genie-civil.bbactif.com/
0

#18 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10819
  • Inscrit(e) : 02-septembre 05

Posté 11 février 2018 - 16:05

lili2006,

Relis bien le premier message et mes réponses.
J'ai dit : "parallèle au plan XY", pas "parallèle à l'axe X".

Nous parlons de la pente en 3D où le dénivelé correspond à la différence des coordonnées Z des points de départ et de fin et où la distance horizontale correspond à la longueur de la ligne projetée sur le plan XY. D'où l'utilisation de Pythagore ou de la trigonométrie.

Si on parle de la représentation 2D d'une pente (coupe, profil), il suffit de calculer le rapport entre le delta Y et le delta X

Un petit screencast.

En LISP:

(defun c:slope2d (/ line pt doc id)
  (vl-load-com)
  (and
    (setq line (car (entsel "\nSélectionnez une ligne: ")))
    (setq line (vlax-ename->vla-object line))
    (= (vla-get-ObjectName line) "AcDbLine")
    (setq pt (getpoint "\nSpecifiez le point d'insertion: "))
    (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
    (setq id (vla-GetObjectIdString (vla-get-Utility doc) line :vlax-false))
    (vla-AddMText
      (vla-get-Block (vla-get-ActiveLayout doc))
      (vlax-3d-point pt)
      0.0
      (strcat
        "%<\\AcExpr abs(100*%<\\AcObjProp Object(%<\\_ObjId "
        id
        ">%).Delta \\f \"%pt2\">%/%<\\AcObjProp Object(%<\\_ObjId "
        id
        ">%).Delta \\f \"%pt1\">%) "
        "\\f \"%lu2%pr2%ps[,%]\">%"               ; <- formatage du texte
      )
    )
  )
  (princ)
)

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#19 L'utilisateur est hors-ligne   lili2006 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11707
  • Inscrit(e) : 21-décembre 05

Posté 11 février 2018 - 16:15

Re,

Reoups, à force de faire trop de chose on finit par ne plus rien faire,..

ça va bien en 2D aussi avec les champs, merci !

Désolé du dérangement et merci pour slope2d,Image IPB


AutoCAD MAP 3D 2018 - Covadis 16.0d
Forum : http://genie-civil.bbactif.com/
0

#20 L'utilisateur est hors-ligne   lecrabe 

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

Posté 11 février 2018 - 16:50

Hello Lilian

Bosser un Dimanche: franchement tu es sur la Mauvaise Pente (ou Slope) !

Bye, lecrabe
Autodesk Expert Elite Team
0

Partager ce sujet :


  • 2 Pages +
  • 1
  • 2


Réponse rapide

  

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