Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 13/04/2016 dans toutes les zones

  1. Bonjour DenisH, Tu as utilisé des polylignes légères alors que (gile) à fait un code pour de la polyligne 3d (ce qui parait plus logique en topo) Pour obtenir un texte. (defun c:cmd (/ s i) (if (setq s (ssget '((0 . "LWPOLYLINE")))) (repeat (setq i (sslength s)) (printCurveLength (ssname s (setq i (1- i)))) ) ) ) Pour obtenir un champs. (defun c:cmd (/ s i) (if (setq s (ssget '((0 . "LWPOLYLINE")))) (repeat (setq i (sslength s)) (lengthField (ssname s (setq i (1- i)))) ) ) ) Pour le dernier code, je maitrise pas bien le VLISP donc je préfère laissé quelqu'un de plus compétent regarder. Olivier
    1 point
  2. La même en 'Visual LISP' (pour ceux qui préfèrent). (defun lengthField (curve / text) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (if (= (type curve) 'ENAME) (setq curve (vlax-ename->vla-object curve)) ) (setq text (vla-AddText (vla-ObjectIDToObject *acdoc* (vla-get-OwnerId curve)) (strcat "%<\\AcObjProp Object(%<\\_ObjId " (vla-getObjectIdString (vla-get-Utility *acdoc*) curve :vlax-false ) ">%).Length \\f \"%lu2%pr2\">%" ) (vlax-3d-point '(0. 0. 0.)) (getvar 'textsize) ) ) (vla-put-Alignment text acAlignmentMiddleCenter) (vla-put-TextAlignmentPoint text (vlax-3d-point (vlax-curve-getPointAtDist curve (/ (vlax-curve-getDistAtParam curve (vlax-curve-getEndParam curve) ) 2. ) ) ) ) (command-s "_UPDATEFIELD" (entlast) "") )
    1 point
  3. La même avec un champ dynamique (defun lengthField (curve / l p) (setq l (vlax-curve-getDistAtParam curve (vlax-curve-getEndParam curve) ) p (vlax-curve-getPointAtDist curve (/ l 2.)) ) (entmake (list '(0 . "TEXT") (cons 10 p) ; premier point d'alignement (cons 40 (getvar 'textsize)) ; hauteur de texte (cons 11 p) ; deuxième point d'alignement (cons 1 ; valeur de texte (champ dynamique) (strcat "%<\\AcObjProp Object(%<\\_ObjId " (vla-getObjectIdString (vla-get-Utility (vla-get-ActiveDocument (vlax-get-acad-object)) ) (if (= (type curve) 'VLA-OBJECT) curve (vlax-ename->vla-object curve) ) :vlax-false ) ">%).Length \\f \"%lu2%pr2\">%" ) ) '(7 . "Standard") ; style de texte '(72 . 1) ; justification horizontale '(73 . 2) ; justification verticale ) ) (command-s "_UPDATEFIELD" (entlast) "") ) (defun c:cmd (/ s i) (if (setq s (ssget '((0 . "POLYLINE") (-4 . "&") (70 . 8)))) (repeat (setq i (sslength s)) (lengthField (ssname s (setq i (1- i)))) ) ) )
    1 point
  4. Salut, Un petit truc vite fait. Pour placer un texte avec la longueur au milieu de l'entité curviligne (tout type sauf droites et demi-droite bien sûr). Tu peux modifier les valeurs DXF du texte créé (ici, hauteur courante, style "standard" et justification MC) (defun printCurveLength (curve / l p) (setq l (vlax-curve-getDistAtParam curve (vlax-curve-getEndParam curve) ) p (vlax-curve-getPointAtDist curve (/ l 2.)) ) (entmake (list '(0 . "TEXT") (cons 10 p) ; premier point d'alignement (cons 40 (getvar 'textsize)) ; hauteur de texte (cons 11 p) ; deuxième point d'alignement (cons 1 (rtos l 2 2)) ; longueur avec 2 décimales '(7 . "Standard") ; style de texte '(72 . 1) ; justification horizontale '(73 . 2) ; justification verticale ) ) ) Appelle la fonction ci-dessus pour toutes les polylignes 3d sélectionnées (defun c:cmd (/ s i) (if (setq s (ssget '((0 . "POLYLINE") (-4 . "&") (70 . 8)))) (repeat (setq i (sslength s)) (printCurveLength (ssname s (setq i (1- i)))) ) ) )
    1 point
×
×
  • 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é