Easier way to do smart shapes?

Started by RhesusMinus, November 10, 2010, 10:43:41 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

RhesusMinus

Hi.

I'm starting to get the hang of things here, but still have questions.

1. See the attached VSD file. I can now resize the shape to 3 different sizes, but.. the handles of the group doesn't follow these settings. What should I do to make the handles follow the 3 sizes?

2. There is a LOT of work going into making a shape like this, making the group go through the center of the circles etc. Is there an easy way to do things, as I'm going to use MUCH more complex graphics later on. See attached picture for a sample. To make an intelligent 1D shape of this would take AGES.. and I have several hundred shapes like this i must create. Are there any tricks one can do to do this easier, by grouping stuff in the correct order etc.?

THL

vojo

your bound function on the 1D  (sheet.6 shape) is preventing the scaling of the child shape

RhesusMinus

Well.. the child shape actually scales into the 3 different widths I want. It's the "1D Handles" that scales outside the values specified by the BOUND function... or?

THL

vojo

in the 1D shape, you have a bound equation in the width....all the child shapes use that value to calculate their stuff.    It appears the bound sets width to large value even though the
1D start x,y and end x,y define a much smaller length.

Fix the bound, and the children scale correctly....I checked it

RhesusMinus

Ok.

Can I please have the quick fix  ;) ? What should the BOUND be?

vojo

just make width just the sqrt term.....get rid of the bound and get rid of the all the values after the sqrt term.

If you are going to create special shapes, my only advice is to roll up your sleeves and jump in.
Lots of subtle learning required in general (this is a pretty simple issue...no slight intended).

RhesusMinus

Hello again.

My sleeves are rolled up, and I have jumped in :)

I have removed the BOUND on the group as you said, but I'm still unable to make the shape available at 3 different widths (and ONLY those 3 widths)

Se attached VSD. When you change the width of the 2D shape, it's "bound" to 3 widths. I need the exact same functionality for a 1D shape. And.. I need the 1D Shape for it to connect to the connection points of the topmost shape.

I have tried this for some time now, but I'm just not able to do it yet, that's why i ask here in the forum. Maybe I need to add a couple of control handles to achieve this?

THL

vojo

do you want the 1D shape to have this sort of step function?    or the child shapes?

In order to do that at the 1D, you wont be able to attach it to anything.

RhesusMinus

I would really like this kind of step functionality on the 1D shape /group/subshape.

In my first post, look at "Advanced Shape.png".
This is a steel plate that comes in three sizes. Each of the three sizes has it's own part number. I want to create ONE smart shape that I can stretch to match the different sizes, without deforming the holes and everything else in the shape. I't only the middle part of my shape that should stretch. A variable in the shape sheet will "measure" the size, and assign the correct part number to a shape data (I will add this later).
The "holes" in the shape should connect to holes in some other shapes, so I was hoping to use connection points and glue for this.

So.. if this shape is connected to two side bars, i would really like to move one of the side bars, and mye shape would stretch to match the new width.... or maybe I'm just dreaming here :)

So... If you could take my simple rectangular shape with two holes, and make it connecting/stepable/1D/2D in any way you like, I would be really thankful :)

THL

Jumpy

Quote from: RhesusMinus on November 11, 2010, 02:18:06 PM
So.. if this shape is connected to two side bars, i would really like to move one of the side bars, and mye shape would stretch to match the new width.... or maybe I'm just dreaming here :)

Problem I see: Say your shape is connected left and right to the sidebar. What happens if you move the sidebar for a distance, that is not one of your three possible values for the shape in the middle. How should it behave? Or will you make sure, that the sidebars can only be moved for certain distances?

I think in order to get fitting advice here you need to tell more of what you want to do. A part of the "big picture". For example: If your sidebars can only move certain distances (how ever you will implement that) your "shape in the middle" won't have to be checked for its length any longer, because it is connected to the sidebars, and when they have the right distance, the shape in the middle will have the right length automatically.

Hope you understand how I mean that,

Jumpy

RhesusMinus

Hello Jumpy.

I want to make electrical cabinets in Visio. These cabinets are made from different steel plates. The cabinets also comes in different sizes, both heights and widths. Also, two (or more) cabinets can be mounted together.

So.. normally, a cabinet will consist of 2 side plates, one back plate and two end plates (one at the top and one at the bottom). By moving the side plates I would like the back and end plates to resize.

However.. if two cabinets are mounted together, one side plate on each cabinet is replaced by some brackets.

We have all these symbols already, made for Autodesk Actrix (An old visio-like application that died in 2000) but we have to move to some other program now, because Actrix will have trouble working in newer versions of Windows.
However.. as we have to make all the shapes from scratch, we want to do it BETTER than it was done 10 years ago, with more details etc.

When we make a cabinet in Actrix, and we find out that we need a wider cabinet, we have to manually change the width of all shapes. It would be nice if we could improve this as we're doing everything from scratch.

I hope this was clarifying :)

THL

Jumpy

Hi RhesusMinus,

in that case I would build one cabinet with its components as one grouped shape. Eventually more for different kind of steels, etc.
Than I would start making the shape smart,
- so that its components resize, when the whole thing resizes.
- so that you can make a wall invisible and brackets visible instead
- ...

When I would build that grouped shape, I would not use glue and connection points, to hold the subshapes = "the part shapes of which the grouped shape consist" together, but would use formulas in the ShapeSheet instead.

I would only use connection points on the outside of the cabinet, to glue cabinets together. In case you don't know: It is possible to change the type of a connection point so, that you can glue a 2D shape to another 2D shape.

The part you talked about earlier: That the ends of a shape remain the same if it stretches, and only the middle stretches: That can all be done in the shapesheet. Or u use custom line-ends.

Many things to think about, but all possible I think, and not to difficult.

Jumpy

wapperdude

There is another possibe approach.  You can make multiple geometry entries for each shape part in the shapesheet.  For example, the back panel may only have two options, you could make each option in it's own Geometry section, i.e., Geometry1 and Geometry2.  Then, depending upon the choice, turn the visibility of one section off and the other on.  This is relatively straight forward.

It might take a little more effort to assemble and group these into a "smart" cabinet.  But, it should be possible to have all your cabinet options selectable at the top level (group), and select the appropriate visibility of each piece based upon these options. 

Not sure it's the most efficient method, but should work.

Wapperdude
Visio 2019 Pro

RhesusMinus

I was really hoping to have each part for itself. There are many parts available to build these cabinets, so there are so many combinations to achieve one cabinet. There are always coming new parts as well, so it would be great if I didn't have to edit the "large complete shape" when this happens. How about creating a "non printing frame" that I attach my parts to?

I had a look at the server rack shapes that comes with Visio, and these modules actually connects to the "cabinet", and stretch when one change the width of the "cabinet". Only thing is that these modules deforms when they are stretched.

I had already thought of putting multiple geometries into one shape, but I don't think that it's very flexible. If there suddenly should appear the same parts in a new "width", it would be real easy to just add a new width as a value in some list, than to add more geometry to a shape, and then change the (in-)visible attribute.

I really want this to be as easy as possible to use for the end users, that's why I'm nagging you so much :)

THL

wapperdude

No apology needed, part of the process of sorting things out.  Going back to the beginning, this should work:

For your 1D shape, put something like this in the EndX box: =BOUND(175 mm,0,FALSE,BeginX+30 mm,BeginX+30 mm,FALSE,BeginX+90 mm,BeginX+90 mm,FALSE,BeginX+120 mm,BeginX+120 mm).  Set the sizes to the desired increments.

As previously indicated, remove the bound function from the width.  The width should be calculated from the beginx and endx points:  =SQRT((EndX-BeginX)^2+(EndY-BeginY)^2)

HTH
Wapperdude
Visio 2019 Pro