getting smaller circles to stick to the edge of a larger circle

Started by k.allen, August 24, 2011, 03:51:54 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

k.allen

Hello,

I've been researching the solution to a problem of tedium that I have: I need to draw cable cross-sections... in Visio2k7(Standard). I know, not the ideal solution, but it's the tool I've been provided. In doing this I need to determine the resulting cable diameter. I draw the cables in a 1:1 scale.

The question: is there a way for me to automate/lessen the tedious nature of drawing this cross-section? Basically, the drawing consists of a larger circle surrounded by smaller circles. Each successive "layer" is much like the one before until I'm done with the cable. Essentially, what I'd like to be able to do is have the edges of each shape "stick" to adjacent shapes. As it stands I have to very carefully place each circle, which is time consuming.

I have attached a sample of what I described. I have tried several variations of the snap function with no luck. The one solution I thought would work is not available to me as I don't have the Professional version of Visio. (It's the "move shapes" Add-On that allows the use of polar coordinates to specify where to move a shape.) I've looked high and low and still am empty-handed. I appreciate any and all advice/help

Allen

vojo

To automate the diagram you provided is going to be pretty tough since each "layer" of the cable has different number of "fibers"

My first reaction to this would be to do
A)
   There is a macro out on this site that will take a shape and spray in a circle (you specify the number and radius and such)
   This is probably the easiest way to go
   I would group after spray so that you can grow/shrink spray easily
B)
   - make a circle with a diameter = outerdiameter - 2*fiber radius
   - Add connection points via shape sheet...something like
         - X<i> = 0.5*width + radius*cos(i*360 deg/n fibers)
         - Y<i> = 0.5* height + radius *sin(i*360 deg/n fibers)
   - Add connection point to the center of fiber
         - X<i> = width *0.5
         - Y<i> = height * 0.5
   - make sure to use type 2 connection points
   - drop the fibers on the circle
   - optionally delete the circle
   - group the fibers
   - make another circle at full diameter....center of fiber group
   - repeat all this as necessary

Note...to do all this using B) is going to be real tedious....you may want to make n above as variable in a user.cell

If/when you become fluent with visio, there are alot of tricks that could make this more convenient
For example,   Make everything squares and set the rounding to the radius....makes the shape a circle with square behaviors

good luck

k.allen

I appreciate the the pointers; I tried the radial elements tool that Chris developed. While it is quite powerful, it is not usable for me unless I have a perfectly sized core (layer) and perfectly sized conductors (fibers). Not surprising, this is rarely the case; I frequently (99.9% of the time) have conductors that leave a little bit of a gap in each layer. The second approach looks interesting. I have no knowledge of how to actually "do" it, so I'll be reading up.

Thanks for the input!

One more question:

Is there a way to change the coordinate system in Visio? Instead of the cartesian system can I use polar coordinates?

wapperdude

You might want to check out the macro associated with this post:  Circle up the wagons, the arc is here!http://visguy.com/vgforum/index.php?topic=566.msg2396#msg2396

It allows you to enter a single object (e.g., circle), specify the number of objects in the circular array, and the radius of the array (center to inner most edge).

You will have to do some trig / geometry to come up with right radius for the array based upon the size of your fiber optic cable and the number of cables.

For example, let's say you have 6, 1/2" cables in circular array.  Each one has angular offset from the other by 360/6 = 60deg.  For these to touch tangentially, split the angle in half.  Next, the radius of the array is cable radius/sin(30)  = 0.25/sin(30) = 0.5.

To execute, select the shape, and run the macro.  Entries are self explanatory.

HTH
Wapperdude
Visio 2019 Pro

Browser ID: smf (possibly_robot)
Templates: 4: index (default), Display (default), GenericControls (default), GenericControls (default).
Sub templates: 6: init, html_above, body_above, main, body_below, html_below.
Language files: 4: index+Modifications.english (default), Post.english (default), Editor.english (default), Drafts.english (default).
Style sheets: 4: index.css, attachments.css, jquery.sceditor.css, responsive.css.
Hooks called: 195 (show)
Files included: 34 - 1306KB. (show)
Memory used: 1059KB.
Tokens: post-login.
Cache hits: 13: 0.00126s for 26,587 bytes (show)
Cache misses: 3: (show)
Queries used: 17.

[Show Queries]