Aller au contenu

Coté la longueur d\'un arc


Messages recommandés

Posté(e)

Comment faites vous pour coté la longueur d'un arc dans l'espace papier.

J'ai bien quelques lisp qui le font dans l'espace objet dont en voiçi 3 .

 

;| ArcDim.Lsp & RepDim

ArcDim - Creates New Dimensions with Arc Length, Chord, Angle, LC, LA, CA, or CLA of a selected arc.

RepDim - Replaces Existing Dimensions with Arc Length, Chord, Angle, LC, LA, CA, or CLA of a selected arc.

 

Version 2.4 - by Tippit CADD Services

 

Parts of arclen and arccor code taken from arcinfo.lsp by Robert McNeel & Assoc. 1990

 

------------------------------------------------------------------------

------------------------------------------------------------------------

Created by J. Tippit, SPAUG President

E-mail: cadpres@spaug.org

Web Site: http://www.spaug.org

 

Large donations to SPAUG is appreciated. :)

------------------------------------------------------------------------

------------------------------------------------------------------------

 

1.0 Created 08/11/98

1.1 Added support for missed and wrong entities 08/13/98-08/14/98

2.0 Added arccor & ArcDim 08/17/98

2.1 Revised RepDim similar to ArcDim 08/17/98

2.2 Added default values 09/10/98

2.3 Added UNITMODE check 09/14/98

2.4 Added LA, CA, and CLA options 05/15/00

 

|;

(defun val (x ENT) (cdr (assoc x ENT)))

(defun ENTTYP (ENT) (val 0 ENT))

(defun ENTNAM (ENT) (val -1 ENT))

(defun tan (x) (/ (sin x) (cos x)))

 

(defun arclen (ENT / sa ea)

(if (= "ARC" (val 0 ENT))

(progn

(setq sa (val 50 ENT))

(setq ea (val 51 ENT))

(if (< ea sa)

(setq ea (+ ea (* 2.0 pi)))

)

(if(= 4 (getvar "aunits"))

(setq a_i (angtos (- ea sa) 1))

(setq a_i (angtos (- ea sa)))

)

(setq a_r (rtos (val 40 ENT)))

(setq a_t (rtos (* (val 40 ENT) (tan (/ (- ea sa) 2.0)))))

(setq a_l (rtos (* (- ea sa) (val 40 ENT))))

(* (- ea sa) (val 40 ENT))

)

)

)

(defun arccor ()

(setq sa (val 50 ent)) ;start angle

(setq ea (val 51 ent)) ;end angle

(if(= 4 (getvar "aunits"))

(setq #ANGL (angtos (- ea sa) 1))

(setq #ANGL (angtos (- ea sa)))

)

(setq ctr (cdr (assoc 10 ent)))

(setq r (cdr (assoc 40 ent)))

(setq s1 (cdr (assoc 50 ent)))

(setq s2 (cdr (assoc 51 ent)))

(setq PT1 (polar ctr s1 r))

(setq PT2 (polar ctr s2 r))

(setq #CHOR (rtos (distance PT1 PT2))) ;chord length

)

 

(defun c:RepDim (/ OBJ OBJ2)

(setvar "cmdecho" 0)

(command "undo" "be")

(if (= (getvar "unitmode") 1)(setvar "unitmode" 0))

(command "ucs" "")

(initget "C L A CA LC LA CLA")

(setq CORL (getkword "\nhord, ength, ngle, CA, LC, LA, or CLA? : "))

(if (not CORL)(setq CORL "C"))

(while (not OBJ)

(progn

(setq OBJ (entsel "\nSélectionnez un Arc: "))

(if OBJ

(progn

(setq ENT (entget (car OBJ)))

(if (= (cdr (assoc 0 ENT)) "ARC")

(setq #arclen (rtos (arclen ENT)))

(progn

(setq OBJ nil)

(prompt "\nL'objet sélectionné n'est pas un arc. réessayé. ")

)

)

)

(princ "\nArc manquant. Essayez à nouveau...")

)

)

)

(arccor)

(while (not OBJ2)

(progn

(setq OBJ2 (entsel "\nSélectinnez Dimension: "))

(if OBJ2

(progn

(setq ENT2 (entget (car OBJ2)))

(if (= (cdr (assoc 0 ENT2)) "DIMENSION")

(progn

(setq ENT3 (entget (car OBJ2))

txt_old (cdr (assoc 1 ENT3)))

(cond

((= CORL "C")(entmod (subst (cons 1 (strcat "CH=" #CHOR)) (assoc 1 ENT3) ENT3)))

((= CORL "L")(entmod (subst (cons 1 (strcat "L=" #arclen)) (assoc 1 ENT3) ENT3)))

((= CORL "A")(entmod (subst (cons 1 (strcat "CH=" #CHOR)) (assoc 1 ENT3) ENT3)))

((= CORL "LC")(entmod (subst (cons 1 (strcat "L=" #ARCLEN "\\XCH=" #CHOR)) (assoc 1 ENT3) ENT3)))

((= CORL "CA")(entmod (subst (cons 1 (strcat "CH=" #CHOR "\\XA=" #ANGL)) (assoc 1 ENT3) ENT3)))

((= CORL "LA")(entmod (subst (cons 1 (strcat "L=" #ARCLEN "\\XA=" #ANGL)) (assoc 1 ENT3) ENT3)))

((= CORL "CLA")(entmod (subst (cons 1 (strcat "CH=" #CHOR " L=" #ARCLEN "\\XA=" #ANGL)) (assoc 1 ENT3) ENT3)))

)

)

(progn

(setq OBJ2 nil)

(prompt "\nSelected object is not a DIMENSION. Try again. ")

)

)

)

(princ "\nMissed the DIMENSION. Try again...")

)

)

)

(command "ucs" "P")

(command "undo" "e")

(setvar "cmdecho" 1)

(princ)

)

 

(defun c:ArcDim (/ OBJ ENT #ARCLEN PT1 PT2)

(setvar "cmdecho" 0)

(command "undo" "be")

(if (= (getvar "unitmode") 1)(setvar "unitmode" 0))

(command "ucs" "")

(initget "A H V")

(setq AHV (getkword "\nligned, orizontal, or ertical? : "))

(if (not AHV)(setq AHV "H"))

(initget "C L A LC LA CLA")

(setq CORL (getkword "\nhord, ength, ngle, CA, LC, LA, or CLA? : "))

(if (not CORL)(setq CORL "C"))

(while (not OBJ)

(progn

(setq OBJ (entsel "\nSelect Arc: "))

(if OBJ

(progn

(setq ENT (entget (car OBJ)))

(if (= (cdr (assoc 0 ENT)) "ARC")

(setq #ARCLEN (rtos (arclen ENT)))

(progn

(setq OBJ nil)

(prompt "\nSelected object is not an ARC. Try again. ")

)

)

)

(princ "\nMissed the Arc. Try again...")

)

)

)

(arccor)

(cond

((= AHV "A")(DALI))

((= AHV "H")(DHOR))

((= AHV "V")(DVER))

)

(command "ucs" "P")

(command "undo" "e")

(setvar "cmdecho" 1)

(princ)

)

 

(defun DALI ()

(cond

((= CORL "C")(command "dim1" "ali" PT1 PT2 pause (strcat "CH=" #CHOR)))

((= CORL "L")(command "dim1" "ali" PT1 PT2 pause (strcat "L=" #ARCLEN)))

((= CORL "A")(command "dim1" "ali" PT1 PT2 pause (strcat "A=" #ANGL)))

((= CORL "LC")(command "dim1" "ali" PT1 PT2 pause (strcat "L=" #ARCLEN "\\XCH=" #CHOR)))

((= CORL "CA")(command "dim1" "ali" PT1 PT2 pause (strcat "CH=" #CHOR "\\XA=" #ANGL)))

((= CORL "LA")(command "dim1" "ali" PT1 PT2 pause (strcat "L=" #ARCLEN "\\XA=" #ANGL)))

((= CORL "CLA")(command "dim1" "ali" PT1 PT2 pause (strcat "CH=" #CHOR " L=" #ARCLEN "\\XA=" #ANGL)))

)

)

 

(defun DHOR ()

(cond

((= CORL "C")(command "dim1" "hor" PT1 PT2 pause (strcat "CH=" #CHOR)))

((= CORL "L")(command "dim1" "hor" PT1 PT2 pause (strcat "L=" #ARCLEN)))

((= CORL "A")(command "dim1" "hor" PT1 PT2 pause (strcat "A=" #ANGL)))

((= CORL "LC")(command "dim1" "hor" PT1 PT2 pause (strcat "L=" #ARCLEN "\\XCH=" #CHOR)))

((= CORL "CA")(command "dim1" "hor" PT1 PT2 pause (strcat "CH=" #CHOR "\\XA=" #ANGL)))

((= CORL "LA")(command "dim1" "hor" PT1 PT2 pause (strcat "L=" #ARCLEN "\\XA=" #ANGL)))

((= CORL "CLA")(command "dim1" "hor" PT1 PT2 pause (strcat "CH=" #CHOR " L=" #ARCLEN "\\XA=" #ANGL)))

)

)

(defun DVER ()

(cond

((= CORL "C")(command "dim1" "ver" PT1 PT2 pause (strcat "CH=" #CHOR)))

((= CORL "L")(command "dim1" "ver" PT1 PT2 pause (strcat "L=" #ARCLEN)))

((= CORL "A")(command "dim1" "ver" PT1 PT2 pause (strcat "A=" #ANGL)))

((= CORL "LC")(command "dim1" "ver" PT1 PT2 pause (strcat "L=" #ARCLEN "\\XCH=" #CHOR)))

((= CORL "CA")(command "dim1" "ver" PT1 PT2 pause (strcat "CH=" #CHOR "\\XA=" #ANGL)))

((= CORL "LA")(command "dim1" "ver" PT1 PT2 pause (strcat "L=" #ARCLEN "\\XA=" #ANGL)))

((= CORL "CLA")(command "dim1" "ver" PT1 PT2 pause (strcat "CH=" #CHOR " L=" #ARCLEN "\\XA=" #ANGL)))

)

)

(prompt "\nCopyright \251 TCS 1998-2000. Arc Dimensioning Routine Ver 2.4 loaded.\nUse ARCDIM to Create a New Dimension\n or REPDIM to Replace an Existing Dimension.")

(princ)

***********************************************************************

 

;;;CADALYST 09/04 Tip1977: DIMARC.LSP Dimension an Arc © 2004 Leonid Nemirovsky

 

(vl-load-com)

 

(defun c:dimarc (/ cm arcel obj num lu txt)

(setq cm (getvar "cmdecho"))

(setvar"cmdecho" 0)

(setq arcel (entsel "\nSélectionnez un Arc: "))

(while

(if

(/= (cdr(assoc 0 (entget(car arcel)))) "ARC")

(progn

(prompt "\nSelected Object is not an ARC")

(setq arcel (entsel "\nSelect Arc: "))

)

)

)

(setq obj (vlax-ename->vla-object (car arcel)))

(setq num (vla-get-ArcLength obj))

(setq lu (getvar "lunits"))

(cond

((= lu 1)(setq txt (rtos num 1)))

((= lu 2)(setq txt (rtos num 2)))

((= lu 3)(setq txt (rtos num 3)))

((= lu 4)(setq txt (rtos num 4)))

((= lu 5)(setq txt (rtos num 5)))

)

(command "dimangular" arcel "t" txt pause)

(setvar "cmdecho" cm)

(princ)

)

********************************************************************

 

(DEFUN c:dimarc1 (/ |ang1| |ang2| |ang| |arclen| |arcx| |arc| |cen|

|cmdecho| |ent| |ept1| |ept| |olderror| |orthomode|

|polarmode| |pt1| |pt2| |rad| |type|

)

(COMMAND "undo" "begin")

(SETQ |cmdecho| (GETVAR "cmdecho"))

(SETQ |orthomode| (GETVAR "orthomode"))

(SETQ |polarmode| (GETVAR "polarmode"))

(SETVAR "cmdecho" 0)

(SETVAR "orthomode" 0)

(SETQ |arc| (ENTSEL "\nSpecify arc: "))

(SETQ |arcx| (CAR |arc|))

(SETQ |ent| (ENTGET |arcx|))

(SETQ |type| (CDR (ASSOC 0 |ent|)))

(IF (= |type| "ARC")

(PROGN

(SETQ |pt1| (CDR (ASSOC 50 |ent|)))

(SETQ |pt2| (CDR (ASSOC 51 |ent|)))

(SETQ |cen| (CDR (ASSOC 10 |ent|))

|rad| (CDR (ASSOC 40 |ent|))

)

(SETQ |ept| (POLAR |cen| (CDR (ASSOC 50 |ent|)) |rad|)

|ept1| (POLAR |cen| (CDR (ASSOC 51 |ent|)) |rad|)

)

(IF (< |pt1| |pt2|)

(SETQ |ang| (- |pt1| |pt2|)

|arclen| (ABS (* |rad| |ang|))

)

(SETQ |ang1| (ANGLE |ept| |cen|)

|ang2| (ANGLE |ept1| |cen|)

|ang| (- |ang1| |ang2|)

|arclen| (ABS (* |rad| |ang|))

)

)

(PROMPT "\nSpecify dimension line location: ")

(COMMAND "dim"

"angular"

""

|cen|

|ept|

|ept1|

pause

(RTOS |arclen|)

""

"exit"

)

)

(PROMPT "\nThe selected entity was not an arc: ")

)

(SETVAR "cmdecho" |cmdecho|)

(SETVAR "orthomode" |orthomode|)

(SETVAR "polarmode" |polarmode|)

(COMMAND "undo" "end")

(PRINC)

)

 

**********************************************************************

Merçi de votre aide.

 

[Edité le 8/8/2006 par x13]

Posté(e)

Salut,

 

La barre est assez haut !

 

Depuis l'espace papier les cotations associatives accèdent aux entités de l'espace objet (avec des réacteurs, je suppose). L'idée serait de faire un cote angulaire sur l'arc et à partir des données de cette cote (liste dxf) calculer la longueur de l'arc. Pour ce faire, il faut arriver à récupérer soit l'échelle de la fenêtre, soit les données de l'arc auquel la cote est associée. Le reste ne serait qu'un peu de trigo.

 

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

Posté(e)

Voilà un premier jet, c'est un peu brut de décoffrage mais ça semble fonctionner.

 

;;; DIM_ARC Cote une longueur d'arc dans l'espace objet ou papier

(defun c:dim_arc (/ echo cot e_lst rad cord fen ech arc)
 (vl-load-com)
 (setq echo (getvar "CMDECHO"))
 (setvar "CMDECHO" 0)
 (prompt "\nSélectionnez un arc ou un segment d'arc de polyligne: ")
 (command "_dimangular" pause pause)
 (setq	cot   (entlast)
e_lst (entget cot)
rad   (distance (cdr (assoc 13 e_lst)) (cdr (assoc 15 e_lst)))
cord  (distance (cdr (assoc 13 e_lst)) (cdr (assoc 14 e_lst)))
 )
 (if (= (getvar "CVPORT") 1)
   (setq fen (cdr (assoc 331 (entget (cdr (assoc 330 e_lst)))))
  ech (vla-get-CustomScale (vlax-ename->vla-object fen))
   )
   (setq ech 1)
 )
 (setq	arc (/ (* rad (cdr (assoc 42 e_lst))) ech)
e_lst (subst (cons 1 (rtos arc 2 (getvar "DIMDEC")))
	     (assoc 1 e_lst)
	     e_lst
      )
 )
 (entmod e_lst)
 (entupd cot)
 (setvar "CMDECHO" echo)	
 (princ)
)

[Edité le 8/8/2006 par (gile)][Edité le 9/8/2006 par (gile)]

 

[Edité le 10/8/2006 par (gile)]

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

Posté(e)

Merçi Gile pour ton aide.

 

Le programme est très consis, je vais étudié le code de plus près en fin de semaine.

Cela fonctionne bien pour les degrés et on peut même changer l'orientation du texte,

il faut au préalable spécifié A pour angle si non on l'erreur _U menu items group command: bad argument type = lentityp nil

 

Pour ce qui est de l'option texte cela ne semble pas fonctionner; la ligne de cote en courbe est bien représentée, par contre je n'ai pas la cote automatiquement et/ou le texte inscrit à la ligne de commande, comme résultat j'ai plutôt l'inscription _U

 

Alors peut-être que l'expert que tu es, connait déja la solution à ce problème.

Je suis sur Autocad 2004.

 

Salutations.

 

François

 

[Edité le 8/8/2006 par x13]

 

[Edité le 8/8/2006 par x13]

Posté(e)

Salut, comme je disais plus haut, c'est "brut de décoffrage".

 

Les invites et options sont celles de la commande _dimangular :

Choix de l'arc, cercle, ligne ou :

Indiquez la position de la dimension de l'arc de cote ou [textMult/TExte/Angle]:

 

Il s'agit d'un artifice, cette commande n'est utilisée par le LISP que pour récupérer des données sur l'arc (même depuis l'espace papier) et représenter la cote. La longueur de l'arc et ensuite calculée et forcée à la place de la valeur de l'angle.

 

NOTA : La cote n'est plus associative, les lignes cotes suivront le modif apportées à l'arc, mais le texte de cote (forcé) ne changera pas.

 

Je modifie le LISP, avec une invite semblable à celle de la cotation des longueurs d'arcs des versions 2006/2007

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

Posté(e)

Re,

 

Une version commentée, sans utilisation de fonctions vla- ...

 

;;; DIM_ARC Cote une longueur d'arc dans l'espace objet ou papier

(defun c:dim_arc (/ echo cot e_lst rad cord vp fact arc)
 (setq echo (getvar "CMDECHO"))
 (setvar "CMDECHO" 0)
 (prompt
   "\nSélectionnez un arc ou un segment d'arc de polyligne: "
 )
 (command "_dimangular" pause pause) ;_ création d'une cote angulaire
 (setq	cot   (entlast)
e_lst (entget cot)
rad   (distance (cdr (assoc 13 e_lst)) (cdr (assoc 15 e_lst))) ;_ rayon de la cote
cord  (distance (cdr (assoc 13 e_lst)) (cdr (assoc 14 e_lst))) ;_ corde de la cote
 )
 (if (= (getvar "CVPORT") 1) ;_ si espace papier
   (setq vp   (cdr (assoc 331 (entget (cdr (assoc 330 e_lst))))) ;_ fenêtre
  fact (/ (cdr (assoc 45 (entget vp))) ;_ facteur d'échelle de la fenêtre
	  (cdr (assoc 41 (entget vp)))
       )
   )
   (setq fact 1)
 )
 (setq	arc (* rad (cdr (assoc 42 e_lst)) fact) ;_ calcul de la longueur d'arc
e_lst (subst (cons 1 (rtos arc 2 (getvar "DIMDEC"))) ;_ remplace l'angle par la longueur
	     (assoc 1 e_lst)
	     e_lst
      )
 )
 (entmod e_lst) ;_ modification des données
 (entupd cot)
 (setvar "CMDECHO" echo)
 (princ)
)

 

[Edité le 10/8/2006 par (gile)]

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

Posté(e)

Je crains que tu n'aies eu la malchance de copier une mauvaise version.

Durant le changements faits pour essayer d'améliorer la routine j'ai laissé passer une erreur, les deux versions actuellement affichées fonctionnent chez moi.

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

Posté(e)

Cela ne fonctionne pas dasns l'espace papier; BAD ARGUMENT TYPE: LENTITYP NIL

 

Constaté le même problème sous une 2000 :(

 

En fait (command "_dimangular" pause pause) ne fonctionne pas sous une 2000 pour la sélection d'un objet dans l'EO depuis l'EP.

 

pour pouvoir le faire dans le lisp, si on est dans l'EP il faudrait faire la sélection comme ceci pour remplacer la ligne incriminé. (le curseur n'a pas la forme de sélection d'objet !)

 

(if (eq (getvar "CVPORT") 2)

(command "_dimangular" pause pause) ;_ création d'une cote angulaire

(progn

(initget 1)

(setq pt_m (trans (getpoint) 3 2))

(command "_.mspace")

(setq dxf_ent (entget (ssname (ssget pt_m '((0 . "ARC"))) 0)))

(setq pt_pc (trans (cdr (assoc 10 dxf_ent)) 2 3))

(setq pt_pe1 (trans (polar (cdr (assoc 10 dxf_ent)) (cdr (assoc 50 dxf_ent)) (cdr (assoc 40 dxf_ent))) 2 3))

(setq pt_pe2 (trans (polar (cdr (assoc 10 dxf_ent)) (cdr (assoc 51 dxf_ent)) (cdr (assoc 40 dxf_ent))) 2 3))

(command "_.pspace")

(command "_.dimangular" "" pt_pc pt_pe1 pt_pe2 pause)

)

)

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

Posté(e)

Salut Bonus,

 

Ton code ne marche pas chez moi, le point retourné par (setq pt_m (trans (getpoint) 3 2)) ne se retrouve pas sur l'arc dans l'EO de la fenêtre, et j'ai donc aussi le message :

 

"; erreur: type d'argument incorrect: lselsetp nil"

 

La solution pour les versions "antiques" est peut être de faire :

 

(command "_.mspace")

(command "_.-view" "_save" "temporaire")

(while (not (setq arc (car (entsel)))))

(command "_.-view" "_restore" "temporaire")

(command "_.-view" "_delete" "temporaire")

(command "_.pspace")

 

et de traiter directement les données de l'arc pour calculer sa longueur.

 

Mais, j'ai une question de petit nouveau, était-il possible de faire une cotation dans l'espace papier avec ces antiques versions ?

 

 

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

Posté(e)

Merçi Bonuscad pour tes précisions.

 

Comme je suis très débutant en lisp, quelles lignes de code je doit supprimer du lisp de Gile et entre quelles lignes j'insère ton code.

Posté(e)

Mais, j'ai une question de petit nouveau, était-il possible de faire une cotation dans l'espace papier avec ces antiques versions ?

 

Avec la 2000, oui et non, le mode d'accrochage est possible depuis l'espace papier, mais pas la sélection d'objet.

 

Et mon artifice ne convient pas tout à fait pour la suite de ta routine :mad:

En effet tu récupère les infos de la fenêtre par

(setq vp (cdr (assoc 331 (entget (cdr (assoc 330 e_lst)))))

 

or par la création comme je l'ai proposé, cette info n'est pas récupérable (pas de code 331), en fait je tombe sur une entité "block_record" et non "viewport" :casstet:

 

La solution pour x13? ne pas utilisé le facteur de la fenêtre, mais l'échelle par défaut de la cotation!...

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

Posté(e)

Voilà la version qui devrait fonctionner sous une 2000 et plus (normalement)

 

J'ai repris le code de gille pour l'espace objet, mais j'ai découvert une erreur que je n'ai pas corrigé.

 

Gille se sert du sinus pour calculer la longueur, moi je me sert simplement de l'angle au centre en RADIAN et du rayon.

En cas d'un arc commencant par exemple dans le 3eme quadrant et se terminant dans le 1er, le résultat est faux !

 

Donc je laisse corriger gille cet imperfction pour les versions 2002 et >.

X13 il faudra corriger celui qui suit quand gille aura apporté la réponse.

 

(defun c:dim_arc2000 ( / echo cot dxf_ent rad arc pt_pc ang_c pt_pe1 pt_pe2)
(setq echo (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(princ "\nSélectionnez un arc ou un segment d'arc de polyligne: ")
(if (eq (getvar "CVPORT") 2)
	(progn
		(command "_dimangular" pause pause)
		(setq
			dxf_ent (entget (entlast))
			rad (distance (cdr (assoc 13 dxf_ent)) (cdr (assoc 15 dxf_ent)))
			arc (* rad (cdr (assoc 42 dxf_ent)))
		)
	)
	(progn
		(initget 1)
		(setq pt_m (trans (getpoint) 3 2))
		(command "_.mspace")
		(setq
			dxf_ent (entget (ssname (ssget pt_m '((0 . "ARC"))) 0))
			pt_pc (trans (cdr (assoc 10 dxf_ent)) 2 3)
			rad (cdr (assoc 40 dxf_ent))
			ang_c (- (cdr (assoc 51 dxf_ent)) (cdr (assoc 50 dxf_ent)))
			arc (* ang_c rad)
		)
		(if (< arc 0.0) (setq arc (+ (* 2 pi rad) arc)))
		(setq pt_pe1 (trans (polar (cdr (assoc 10 dxf_ent)) (cdr (assoc 50 dxf_ent)) rad) 2 3))
		(setq pt_pe2 (trans (polar (cdr (assoc 10 dxf_ent)) (cdr (assoc 51 dxf_ent)) rad) 2 3))
		(command "_.pspace")
		(command "_.dimangular" "" pt_pc pt_pe1 pt_pe2 pause)
	)
)
(setq
	dxf_ent (entget (entlast))
	dxf_ent
	(subst
		(cons 1 (rtos arc 2 (getvar "DIMDEC")))
		(assoc 1 dxf_ent)
		dxf_ent
	)
)
(entmod dxf_ent)
(entupd (cdar dxf_ent))
(setvar "CMDECHO" echo)
(princ)
)

 

Lisp corrigé suivant indicaton de gille ;)

 

[Edité le 10/8/2006 par bonuscad]

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

Posté(e)

Merci Bonuscad "Oeil de lynx", ;)

 

En fait, je m'embétais à calculer la longueur d'arc avec la corde et le rayon, alors que j'avais la valeur de l'angle (cotation angulaire !) :(

 

J'ai corrigé et tesé les deux LISP donnés plus haut, pour les versions de 2002 à 2005, puisque depuis 2006 la commande ARCCOTE (_DIMARC) existe.

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

Posté(e)

Fait de même pour le lisp de X13 en version 2000 pour lui rendre service! (doit fonctionner pour les supérieures, mais aucun intêret)

 

NB: ta variable "cord" ne sert plus à rien, mais c'est un détail.

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

Posté(e)

Bonjour Gile,

 

Pour moi il serait intéressant que la prochaine version fonctionne sur Autocad 200 et 2004.

 

Merçi d'avance

Posté(e)

Salut,

 

Le LISP de Bonuscad doit fonctionner sur 2000 (je ne peux pas tester), ceux que j'ai mis plus haut, fonctionnent sur 2007 et devraient fonctionner sur 2004.

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

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é