Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

Dimensioning an arc length. 3

Status
Not open for further replies.

pizza

Mechanical
Oct 12, 2001
23
0
0
US
Is it possible to dimension an arc in AutoCAD? I mean, like you can normally do with striaght line. I'd like to be able to pick an arc or pick the endpoints of the arc and have AutoCAD give me extension lines and dimension lines and of course the length of the arc (not the straight length or straight height of it). I'd like to have the dimension line follow the arc too.
Right now I have to do a property check on the arc and then just right it into the drawing. Or, if it's a 3D object with a curved surface, I have to explode it until I get to the line arc that I want and then do a property check for the arc line.
Thanks.
 
Replies continue below

Recommended for you

I've never been able to dimension an arc but I tend to list it then draw a line from one end to the centre point and then to the other end (forming a cheese wedge). Then dimension the angle between the two lines and edit the Mtext manually. It's not an answer but it looks okay when plotted.
 
I'm all aboard on the Mtext option, not a great solution, but what is, really.
What about dimensioning the arc length and radius and therefore having:
S = R * Theta

Like I said not a great solution, but it works.
 
Here is what I do in AutoCAD LT97:
1) Go to DIMENSION/ANGULAR
2) Now pick the arc to create the dim line
3) Now go to MODIFY/LENGTHEN
4) Click on the arc, look at Command Line to see length
5) Go to MODIFY/PROPERTIES
6) Click on Arc Dimension, and manually type in length

Alt way of manually typing in dims:
a) find a dim with a fraction, copy it to the side
b) now explode the dim, click on it, MODIFY/PROP
c) highlight contents, and EDIT/COPY
d) now the contents are saved on the WINDOWS CLIPBOARD, and
as long as you don't "EDIT/COPY" anything else, you'll have those contents saved
e) now erase exploded dimension
f) go back up to #6, and now instead of "manually" typing
everything, highlight contents box, and EDIT/PASTE
g) now just change the numbers to what you want them to be

Hope this helps!

Andy Daugherty
AutoCAD Draftsman
Castone Corporation
 
Here is what I do in AutoCAD LT97:
1) Go to DIMENSION/ANGULAR
2) Now pick the arc to create the dim line
3) Now go to MODIFY/LENGTHEN
4) Click on the arc, look at Command Line to see length
5) Go to MODIFY/PROPERTIES
6) Click on Arc Dimension, and manually type in length

Hope this helps!

Andy Daugherty
AutoCAD Draftsman
Castone Corporation
 
Try going to Autodesk.com web site. Find Knowledge Base, Search using Keyword'(s): TS67876 / Document #.
Or "Arc Length" - all the words. They have a macro that you can assign to a button to dimension an arc.
 
Someone recently gave me this LISP.
MicroStation users always ask me if we can do this in ACAD.
I finally got someone to give the LISP.
Here it is ....


;;--------------------------------------------------------------
;; Ploetzl, Mieling - Vienna compuserve id 100115,3172
;;--------------------------------------------------------------
;; DIMARC.LSP
;;
;; dim length of an arc
;; uses the autocad command dim angle and replaces the angle measure
;; with the length of the arc segment
;;
;; CALL: dima
;;
;; 0992pf ver11c2/0.1
;; 0494pf ver12c1/0.2
;;--------------------------------------------------------------
;
; error, save and restore variables
;
(defun be:er (s)
(if (/= s "Function cancelled" )(prompt (strcat "\nError: " s)))
(setq *error* be_or)
(setvar "osmode" oosm)
(setvar "cmdecho" ocmd)
(princ)
)
;
; up info
;
(defun be:inf ()
(prompt (strcat "\nLayer: " (getvar "clayer")
"\tTextheight: " (rtos (getvar "dimtxt"))
"\tDimStyle: " (getvar "dimstyle")
)
)
)
(princ ".")
;;
;; dima
;;
(defun c:dima (/ e d piu sel elem selnam rad ang lae antw ptr pt1 pt2 rad1 rad2)

;error, save var
(setq be_or *error* *error* be:er
oosm (getvar "osmode")
ocmd (getvar "cmdecho")
piu (/ 180.0 pi)
e (getvar "lunits")
d (getvar "luprec")
)
(setvar "cmdecho" 0)
(setvar "dimse1" 0)
(setvar "dimse2" 0)

(prompt "\nDim ArcLength ver12c1/0.2pf0494")
(be:inf)
(if (setq sel (entsel "\nSelect ARC / RETURN to select points: "))
(progn
(setq elem (entget (car sel)))
(prompt (setq selnam (cdr (assoc 0 elem))))
(if (= selnam "ARC")
(progn
(setq rad (cdr (assoc 40 elem)))
(setq ang (- (cdr (assoc 51 elem))(cdr (assoc 50 elem)) ) )
(if (< ang 0)(setq ang (+ ang (* 2 pi) ) ) )
(setq ang (* ang piu))
(setq lae (/ (* pi ang rad) 180.0) )
(prompt (strcat &quot;\nRadius = &quot; (rtos rad)
&quot;\tAngle = &quot; (rtos ang)
&quot;\tLength = &quot; (rtos lae)
)
);prompt
(prompt (strcat &quot;\nLength arc: <&quot; (rtos lae) &quot;> &quot;))
(setq antw (getdist))
(if (/= antw nil)(setq lae antw))
(setvar &quot;cmdecho&quot; 1)
(command &quot;_.dim1&quot; &quot;_ang&quot; sel pause (rtos lae) pause)
);progn arc
(prompt &quot;\nNo arc.&quot;)
);if elem
);progn
(progn
(setq ptr (getpoint &quot;\nMidpoint: &quot;))
(setq pt1 (getpoint &quot;\nFirst arc point: &quot;))
(setq pt2 (getpoint &quot;\nSecend arc point: &quot;))
(setq ang1 (angle ptr pt1)
ang2 (angle ptr pt2)
rad1 (distance ptr pt1)
rad2 (distance ptr pt2)
)
(if (/= (rtos rad1 2 10) (rtos rad2 2 10))
(prompt &quot;\nRadius is different!&quot;)
(progn
(if (> ang2 ang1)
(setq ang (/ (* (- ang2 ang1) 180.0) pi))
(setq ang (/ (* (- ang1 ang2) 180.0) pi))
)
(setq lae (/ (* ang pi rad1) 180.0))
(command &quot;_.arc&quot; &quot;_c&quot; ptr pt1 pt2)
(setq sel (list (ssname (ssget &quot;_L&quot;) 0) pt1))
(setvar &quot;cmdecho&quot; 1)
(command &quot;_.dim1&quot; &quot;_ang&quot; sel pause (rtos lae) pause)
(command &quot;_.erase&quot; sel &quot;&quot;)
);progn
);if
);progn
);if
;error restore
(setq *error* be_or)
(setvar &quot;cmdecho&quot; ocmd)
(setvar &quot;osmode&quot; oosm)
(princ)

) ;bemw
;;
(princ &quot;.&quot;)
(prompt &quot;\nDimarc.lsp loaded. Call command with DIMA. pf0494&quot;)
(princ)
;;end dimarc.lsp pf


Copy the above to a text file and rename it to &quot;DIMARC.LSP&quot;
Load this lisp and type &quot;dimarc&quot;
Hope this helps!
RICH@LG (ARCHITECT)
 
I use several lisp routines to arc dimensions that convert the angle to an arc length. Mine do not have any error checking etc but they are functional. Here is an easy one:

(DEFUN C:DV3 (/ p1 p2 p3 p4 x1 x2 x3 y1 y2 y3 adj dx dy opp om ang rad arc ark) ; Dimension INT to INT along any circle
(SetVar &quot;CMDECHO&quot; 0)
(Setq om (GetVar &quot;OSMODE&quot;))
(COMMAND &quot;Osnap&quot; &quot;Int&quot;)
(setq p1 (getpoint &quot;\nSnap to first INT: &quot;)
p2 (getpoint &quot;\nSnap to second INT: &quot;)
)
(COMMAND &quot;Osnap&quot; &quot;CEN&quot;)
(setq p4 (getpoint &quot;\nPick a point on the arc: &quot;))
(COMMAND &quot;Osnap&quot; &quot;NON&quot;)
(setq p3 (getpoint &quot;\nPoint to dimension location: &quot;)
x1 (- (car p1) (car p4))
y1 (- (cadr p1) (cadr p4))
x2 (- (car p2) (car p4))
y2 (- (cadr p2) (cadr p4))
x3 ( / ( + x2 x1 ) 2.0000 )
y3 ( / ( + y2 y1 ) 2.0000 )
adj ( sqrt ( + ( * x3 x3 ) ( * y3 y3 )))
dx ( - x3 x2 )
dy ( - y3 y2 )
opp ( sqrt ( + ( * dx dx ) ( * dy dy )))
ang ( atan ( / opp adj ))
rad ( getvar &quot;Userr2&quot;)
arc ( * rad ang 2.0000 )
ark (rtos arc)
)
(COMMAND &quot;DIM1&quot; &quot;ANG&quot; &quot;&quot; P4 P1 P2 P3 ARK P3)
(COMMAND &quot;DIM1&quot; &quot;HOM&quot; &quot;L&quot; &quot;&quot;)
(COMMAND &quot;DIM1&quot; &quot;TE&quot; &quot;L&quot; PAUSE)
(SetVar &quot;OSMODE&quot; om)
(SetVar &quot;CMDECHO&quot; 0)
(princ)
)
 
Status
Not open for further replies.
Back
Top