Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous,

 

Est il possible de côter directement par un simple clic une polyligne 2d (fermée ou non) avec des cotations alignés distance et /ou des cotations angulaires et ceci quel que soit le nombre de sommets ?

 

Je dois tracer en fait un profil en long de 300 sommets et côter les segments de la polylignes en distances et en angles entre chaque sommet, ce qui est périlleux et surtout très long.

 

Surtout quand les segments font 5m de longueur mo, yenne, le risque de sélectionner un sommet erroné est grande.

 

Merci par avance de votre aide.

 

John.

Posté(e)

Dites moi si je me trompe.

La commande COTATION RAPIDE permet de côter un segment de polyligne et non la totalité de la polyligne

 

EN regardant dans les options et dans l'aide D'autocad,

NADA, il a des outils de cotations polylignes en lisp mais chaque fois entre deux points ou bien en créant des champs dynamiques mais aucun en cliquant sur un objet direct avec la cotation aligné sauf bien sûr d'avoir Covadis qui est onéreux.

 

 

 

Posté(e)

Bonjour,

 

je ne peux m'empêcher de te mettre en garde

pour la cotation des Profils en long !!

 

les échelles horizontales et verticales sont elles identiques?

tu veux les distances inclinées ou rabattues à l'horizontale ?

 

réfléchis bien avant de lancer la cotation ...

 

amicelemnt

Posté(e)

En fait pour le profil en long en lui même je n'ai pas de problème.

Ce que je veux, c'est à partir de l'axe en plan projet donc en 2D, le côter avec des distances et des angles .

 

Pour les côtes en distances, c'est bon je crois avoir trouvé un lisp que je dois un peu modifier mais je vais m'en sortir même si je commence en lisp. Par contre, pour la cotation augulaire à chaque sommet de la polyligne, ca devient un peu long de cliquer un à un les sommets.

 

De plus, il faudrait à chaque sommet indiqué l'angle à gauche ou à droite inférieur à 200g avec 3décimales et en grades.

 

Mon axe en plan fait 300 sommets environ d'où mon post.

 

John.

Posté(e)

Je ne sais pas si c'est possible mais voilà la méthode qu'il faudrait utiliser à mon sens pour côter angulairement une polyligne 2d non fermée :

 

1-Lister les sommets de la polyligne en coordonnées XYZ

2-Calculer l'angle entre 3 sommets consécutifs et dans l'ordre sous excel ou même dans le lisp sous autocad

3-Intégrer la valeur de l'angle calculé au sommet concerné

 

Je ne m'y connais pas asssez bien en lisp pour prgm un tel outil, c'est dommage.

Pour le lisp concernant le listing des sommets de la polyligne, sur CadXp il y en a mais le rest ???

 

 

Posté(e)

Un code sommaire pour coter une LWPolyligne.

Le code va coter en mode aligné les segments et aussi mettre en place les cotations angulaire des sommets.

 

Si la méthode semble convenir, tu peux affiner le code pour avoir un paramétrage personnalisé de la cotation.

Le code ci après utilise le style courant...

 

(defun c:Lw_dim ( / js ent dxf_ent lst_pt AcDoc Space)
 (princ "\nSélectionner la polyligne à coter. ")
 (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))
 (cond
   (js
     (vl-load-com)
     (setq
       dxf_ent (entget (setq ent (ssname js 0)))
       lst_pt (mapcar '(lambda (x) (trans x ent 1)) (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) dxf_ent)))
     )
     (setq
       AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
       Space
       (if (= 1 (getvar "CVPORT"))
         (vla-get-PaperSpace AcDoc)
         (vla-get-ModelSpace AcDoc)
       )
     )
     (while (cdr lst_pt)
       (vla-addDimAligned Space
         (vlax-3d-point (car lst_pt))
         (vlax-3d-point (cadr lst_pt))
         (vlax-3d-point
           (polar
             (mapcar '* (mapcar '+ (car lst_pt) (cadr lst_pt)) '(0.5 0.5 0.5))
             (+ (angle (car lst_pt) (cadr lst_pt)) (* pi 0.5))
             (* 10 (getvar "DIMTXT"))
           )
         )
       )
       (if (cddr lst_pt)
         (vla-addDimAngular Space
           (vlax-3d-point (cadr lst_pt))
           (vlax-3d-point (car lst_pt))
           (vlax-3d-point (caddr lst_pt))
           (vlax-3d-point (mapcar '* (mapcar '+ (caddr lst_pt) (car lst_pt)) '(0.5 0.5 0.5)))
         )
       )
       (setq lst_pt (cdr lst_pt))
     )
   )
 )
 (prin1)
)

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

Posté(e)

Bonjour à toutes et tous,

 

Fonctionne Nickel chez moi bonuscad,...

 

Si je suis amené à utiliser "Lw_dim ", il est clair que je modifierai le style de cotes pour se rapprocher de la façon "usuelle" du topo, mais pour des infos rapides (je l'ai testé sur un plan de bâtiment), c'est rudement pratique aussi,...

 

Merci, et je pense que tu répond à la question de chris_mtp,... ;)

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

C'est parfait ton lisp. C'est exactement ce que je voulais.

Merci pour ton aide.

Par contre, dis moi le bout de code à modifier pour avoir les distances alignées par rapport aux segments de la polyligne et avoir les angles en gr à 3 decimales.

 

Je l'ai testé avec le style de côtes selon mes besoins mais il continue de m'afficher les angles en degrés.

 

Merci tout de même.

Posté(e)

Oups

en fait c'est bon, j'vais mal enregistrer le style de côte.

 

Nickel crome.

Sérieusement, merci tout comme à gile qui m'aide souvent sur ce forum.

Mais les gars, faites concurrence à Covadis Sérieux

Arrêtez de travaillez, progm et dans 10 ans vous êtes les nouveaux Bill Gates.

Posté(e)

 

Hello

 

Encore merci pour cet excellent LW_DIM :)

 

Et bien sur en tant que M. Le Crabe, je me permet une micro-critique !

 

SVP serait-ilpossible que tu traites le dernier segment de la polyligne

si c'est une polyligne close !!

 

Le Decapode "critiquant"

 

Autodesk Expert Elite Team

Posté(e)

Salut,

 

J'ai juste ajouté 2 expressions au code de Bonuscad pour qu'il fonctionne avec les polylignes fermées (ou celles dont les premiers et derniers sommets sont confondus) et un positionnement des cotes angulaires plus semblble à celui des cotes alignées.

 

(defun c:Lw_dim	(/ js ent dxf_ent lst_pt AcDoc Space)
 (princ "\nSélectionner la polyligne à coter. ")
 (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))
 (cond
   (js
    (vl-load-com)
    (setq
      dxf_ent (entget (setq ent (ssname js 0)))
      lst_pt  (mapcar
	 '(lambda (x) (trans x ent 0))
	 (mapcar
	   'cdr
	   (vl-remove-if '(lambda (x) (/= (car x) 10)) dxf_ent)
	 )
       )
    )
    (if (= 1 (logand 1 (cdr (assoc 70 dxf_ent))))
      (setq lst_pt (reverse (cons (car lst_pt) (reverse lst_pt))))
    )
    (setq
      AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
      Space
     (if (= 1 (getvar "CVPORT"))
       (vla-get-PaperSpace AcDoc)
       (vla-get-ModelSpace AcDoc)
     )
    )
    (if (equal (car lst_pt) (last lst_pt) 1e-9)
      (vla-addDimAngular
 Space
 (vlax-3d-point (car lst_pt))
 (vlax-3d-point (cadr (reverse lst_pt)))
 (vlax-3d-point (cadr lst_pt))
 (vlax-3d-point
   (polar
     (car lst_pt)
     (angle
       (car lst_pt)
       (mapcar '*
	       (mapcar '+ (cadr (reverse lst_pt)) (cadr lst_pt))
	       '(0.5 0.5 0.5)
       )
     )
     (* 10 (getvar "DIMTXT"))
   )
 )
      )
    )
    (while (cdr lst_pt)
      (vla-addDimAligned
 Space
 (vlax-3d-point (car lst_pt))
 (vlax-3d-point (cadr lst_pt))
 (vlax-3d-point
   (polar
     (mapcar '*
	     (mapcar '+ (car lst_pt) (cadr lst_pt))
	     '(0.5 0.5 0.5)
     )
     (+ (angle (car lst_pt) (cadr lst_pt)) (* pi 0.5))
     (* 10 (getvar "DIMTXT"))
   )
 )
      )
      (if (cddr lst_pt)
 (vla-addDimAngular
   Space
   (vlax-3d-point (cadr lst_pt))
   (vlax-3d-point (car lst_pt))
   (vlax-3d-point (caddr lst_pt))
   (vlax-3d-point
     (polar
       (cadr lst_pt)
       (angle
	 (cadr lst_pt)
	 (mapcar '*
		 (mapcar '+ (caddr lst_pt) (car lst_pt))
		 '(0.5 0.5 0.5)
	 )
       )
       (* 10 (getvar "DIMTXT"))
     )
   )
 )
      )
      (setq lst_pt (cdr lst_pt))
    )
   )
 )
 (prin1)
) 

 

[Edité le 30/8/2008 par (gile)]

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

Posté(e)

un positionnement des cotes angulaires plus semblable à celui des cotes alignées.

 

C'est vrai que mon positionnement des cotes angulaires était à revoir :(

 

 

 

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

Posté(e)

Bjr,

 

J'ai essayé d'utiliser la routine modifier de Gile en l'a sauvardant ds un fichier lsp,

 

( [surligneur] defun c:Lw_dim (/ js ent dxf_ent lst_pt AcDoc Space)

(princ "\nSélectionner la polyligne à coter. ")

(setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))

(cond

(js

(vl-load-com)

(setq

dxf_ent (entget (setq ent (ssname js 0)))

lst_pt (mapcar

'(lambda (x) (trans x ent 0))

(mapcar

'cdr

(vl-remove-if '(lambda (x) (/= (car x) 10)) dxf_ent)

)

)

)

(if (= 1 (logand 1 (cdr (assoc 70 dxf_ent))))

(setq lst_pt (reverse (cons (car lst_pt) (reverse lst_pt))))

)

(setq

AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))

Space

(if (= 1 (getvar "CVPORT"))

(vla-get-PaperSpace AcDoc)

(vla-get-ModelSpace AcDoc)

)

)

(if (equal (car lst_pt) (last lst_pt) 1e-9)

(vla-addDimAngular

Space

(vlax-3d-point (car lst_pt))

(vlax-3d-point (cadr (reverse lst_pt)))

(vlax-3d-point (cadr lst_pt))

(vlax-3d-point

(polar

(car lst_pt)

(angle

(car lst_pt)

(mapcar '*

(mapcar '+ (cadr (reverse lst_pt)) (cadr lst_pt))

'(0.5 0.5 0.5)

)

)

(* 10 (getvar "DIMTXT"))

)

)

)

)

(while (cdr lst_pt)

(vla-addDimAligned

Space

(vlax-3d-point (car lst_pt))

(vlax-3d-point (cadr lst_pt))

(vlax-3d-point

(polar

(mapcar '*

(mapcar '+ (car lst_pt) (cadr lst_pt))

'(0.5 0.5 0.5)

)

(+ (angle (car lst_pt) (cadr lst_pt)) (* pi 0.5))

(* 10 (getvar "DIMTXT"))

)

)

)

(if (cddr lst_pt)

(vla-addDimAngular

Space

(vlax-3d-point (cadr lst_pt))

(vlax-3d-point (car lst_pt))

(vlax-3d-point (caddr lst_pt))

(vlax-3d-point

(polar

(cadr lst_pt)

(angle

(cadr lst_pt)

(mapcar '*

(mapcar '+ (caddr lst_pt) (car lst_pt))

'(0.5 0.5 0.5)

)

)

(* 10 (getvar "DIMTXT"))

)

)

)

)

(setq lst_pt (cdr lst_pt))

)

)

)

(prin1)

) [/surligneur]

 

mais ça ne marche pas chez moi pourtant j'ai bien chargé la macro comme d'hab mais tjrs ce message

"appload Lw_dim.LSP correctement chargé(s)

Commande: ; erreur: type d'argument incorrect: numberp: nil

Commande: Lw_dim

Commande inconnue "LW_DIM". Appuyez sur F1 pour obtenir de l'aide

 

Le code d ela routine es tbien lw_dim non ! ou est mon soucis alors !!!

Aurais-je oublié ou pas fait correcement quelque chose

 

Merci d'avance de vos lumières

 

Phil

 

Posté(e)

Bjr,

 

J'ai essayé d'utiliser la routine modifier de Gile en l'a sauvardant ds un fichier lsp,

 

[surligneur] ( defun c:Lw_dim (/ js ent dxf_ent lst_pt AcDoc Space)

(princ "\nSélectionner la polyligne à coter. ")

(setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))

(cond

(js

(vl-load-com)

(setq

dxf_ent (entget (setq ent (ssname js 0)))

lst_pt (mapcar

'(lambda (x) (trans x ent 0))

(mapcar

'cdr

(vl-remove-if '(lambda (x) (/= (car x) 10)) dxf_ent)

)

)

)

(if (= 1 (logand 1 (cdr (assoc 70 dxf_ent))))

(setq lst_pt (reverse (cons (car lst_pt) (reverse lst_pt))))

)

(setq

AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))

Space

(if (= 1 (getvar "CVPORT"))

(vla-get-PaperSpace AcDoc)

(vla-get-ModelSpace AcDoc)

)

)

(if (equal (car lst_pt) (last lst_pt) 1e-9)

(vla-addDimAngular

Space

(vlax-3d-point (car lst_pt))

(vlax-3d-point (cadr (reverse lst_pt)))

(vlax-3d-point (cadr lst_pt))

(vlax-3d-point

(polar

(car lst_pt)

(angle

(car lst_pt)

(mapcar '*

(mapcar '+ (cadr (reverse lst_pt)) (cadr lst_pt))

'(0.5 0.5 0.5)

)

)

(* 10 (getvar "DIMTXT"))

)

)

)

)

(while (cdr lst_pt)

(vla-addDimAligned

Space

(vlax-3d-point (car lst_pt))

(vlax-3d-point (cadr lst_pt))

(vlax-3d-point

(polar

(mapcar '*

(mapcar '+ (car lst_pt) (cadr lst_pt))

'(0.5 0.5 0.5)

)

(+ (angle (car lst_pt) (cadr lst_pt)) (* pi 0.5))

(* 10 (getvar "DIMTXT"))

)

)

)

(if (cddr lst_pt)

(vla-addDimAngular

Space

(vlax-3d-point (cadr lst_pt))

(vlax-3d-point (car lst_pt))

(vlax-3d-point (caddr lst_pt))

(vlax-3d-point

(polar

(cadr lst_pt)

(angle

(cadr lst_pt)

(mapcar '*

(mapcar '+ (caddr lst_pt) (car lst_pt))

'(0.5 0.5 0.5)

)

)

(* 10 (getvar "DIMTXT"))

)

)

)

)

(setq lst_pt (cdr lst_pt))

)

)

)

(prin1)

) [/surligneur]

mais ça ne marche pas chez moi pourtant j'ai bien chargé la macro comme d'hab mais tjrs ce message

"appload Lw_dim.LSP correctement chargé(s)

Commande: ; erreur: type d'argument incorrect: numberp: nil

Commande: Lw_dim

Commande inconnue "LW_DIM". Appuyez sur F1 pour obtenir de l'aide

 

Le code d ela routine es tbien lw_dim non ! ou est mon soucis alors !!!

Aurais-je oublié ou pas fait correcement quelque chose

 

Merci d'avance de vos lumières

 

Phil

 

 

  • 4 mois après...
Posté(e)

bonjour,

Un grand merci aux co-producteurs pour ce fichier lsp.

Pour mon application perso ( je dessine des lignes electriques bt... entre autres), je souhaiterai que la valeur de l'angle qui s'affiche soit celle de l'angle complémentaire pour faire l'angle plat.

 

ex: 2 poly avec un angle de 188 gr, reste 12 gr pour faire l'angle plat. je veux que se soit 12gr qui soit affiché sur le plan au meme endroit qu'actuellement.

Je pensais mettre dans le lisp 200 - angle mesuré mais cela dépasse mes compétences.

Je suis pas sur d'etre tres clair.

merci d'avance.

bonne journée.

 

 

 

 

Posté(e)

je souhaiterai que la valeur de l'angle qui s'affiche soit celle de l'angle complémentaire pour faire l'angle plat.

 

Bonjour,

 

La version de (gile) modifiée?

 

(defun c:Lw_dim (/ js ent dxf_ent lst_pt AcDoc Space)
(princ "\nSélectionner la polyligne à coter. ")
(setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))
(cond
(js
(vl-load-com)
(setq
dxf_ent (entget (setq ent (ssname js 0)))
lst_pt (mapcar
'(lambda (x) (trans x ent 0))
(mapcar
'cdr
(vl-remove-if '(lambda (x) (/= (car x) 10)) dxf_ent)
)
)
)
(if (= 1 (logand 1 (cdr (assoc 70 dxf_ent))))
(setq lst_pt (reverse (cons (car lst_pt) (reverse lst_pt))))
)
(setq
AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
Space
(if (= 1 (getvar "CVPORT"))
(vla-get-PaperSpace AcDoc)
(vla-get-ModelSpace AcDoc)
)
)
(if (equal (car lst_pt) (last lst_pt) 1e-9)
(vla-addDimAngular
Space
(vlax-3d-point (car lst_pt))
(vlax-3d-point (cadr (reverse lst_pt)))
(vlax-3d-point (cadr lst_pt))
(vlax-3d-point
(polar
(car lst_pt)
(angle
(car lst_pt)
(mapcar '*
(mapcar '+ (cadr (reverse lst_pt)) (cadr lst_pt))
'(0.5 0.5 0.5)
)
)
(* 10 (getvar "DIMTXT"))
)
)
)
)
(while (cdr lst_pt)
(vla-addDimAligned
Space
(vlax-3d-point (car lst_pt))
(vlax-3d-point (cadr lst_pt))
(vlax-3d-point
(polar
(mapcar '*
(mapcar '+ (car lst_pt) (cadr lst_pt))
'(0.5 0.5 0.5)
)
(+ (angle (car lst_pt) (cadr lst_pt)) (* pi 0.5))
(* 10 (getvar "DIMTXT"))
)
)
)
(if (cddr lst_pt)
(vla-addDimAngular
Space
(vlax-3d-point (cadr lst_pt))
(vlax-3d-point (car lst_pt))
(vlax-3d-point (caddr lst_pt))
(vlax-3d-point

(polar
(cadr lst_pt)
(angle
(cadr lst_pt)
(mapcar '*
(mapcar '+ (caddr lst_pt) (polar
(cadr lst_pt)
(angle
(car lst_pt)
(cadr lst_pt)
)
(* 10 (getvar "DIMTXT"))
))
'(0.5 0.5 0.5)
)
)
(* 10 (getvar "DIMTXT"))
)



)
)
)
(setq lst_pt (cdr lst_pt))
)
)
)
(prin1)
) 

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

Posté(e)

bonjour,

merci pour la modif et la reactivité.

Je suis en train de me "battre" avec les styles de cote. En effet, je souhaiterai que la cote s'affiche sur la polyligne (actuellement trés ecartée) et que la cote d'angle soit à son ancienne place...

un petit schema( visible?) vaut mieux qu un long discours embetant.

http://images.imagehotel.net/p2k5dnnsgf_tn.jpg

Ce n'est pas dans le lsp que sont gerés ces paramétres?

bonne journée.

 

 

Posté(e)

Regardes les variables "DIMSD1 DIMSD2 DIMSE1 DIME2".

Si ces variables sont mises à 1 ("Actif") supprime le tracé des lignes de cotes et d'attaches.

 

et que la cote d'angle soit à son ancienne place.

 

Ça ce n'est pas possible par programmation car c'est l'emplacement du texte qui détermine quel angle est à mesurer.

Après par édition (grip par exemple) tu peux les repositionner où tu veux, mais un par par un.

 

je souhaiterai que la cote s'affiche sur la polyligne

 

L'écartement dans le lisp est déterminé avec cette ligne:

 

(* 10 (getvar "DIMTXT")) (10 x fois la hauteur du texte de cotation)

 

Évites, je pense une valeur (j'ai pas testé) une valeur équivalente à zéro.

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

Posté(e)

je pense que votre solution et j'en suis vraiment sure, se trouve sans le logiciel covadis, c'est une manipe en 02 secondes et tu fait tous

c'est une merveille, voir son forum, tu peut faire les transformations ds les 02 sens

croyez moi :o :o :o :o :o :o

Mes amitiés

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é