View Single Post
Originally Posted by Hoff View Post
I'm reading through the shapes threads, and would love it if someone wiser than I could tell me if what I'm trying to do is possible before I study too much longer.

I'd like to make arrowheads with + and - symbols inside them. It could be a filled triangle with white symbol, or unfilled with black. I just need this one symbol at the end of a connector, and would like to do away with fiddling with the line labels.

Thanks for any insight!
I think the answer is yes, at least for the unfilled with black. If you open up shapes.graffleshapes in TextEdit or BBEdit or TextWrangler and search for "arrowheads" you'll see all the arrowhead definitions. [BTW, in my OG Pro 5.11, I found this file in Contents:Frameworks:GraffleShapes.framework:Versio ns:A:Resources, not where I said above.] Scroll down and you'll see an arrowhead named "Box". I would guess that's the most promising for something like what you want. Its definition is:

            Gap = 0; 
            LineGap = 0.5; 
            Name = Box; 
            OldIndex = 8; 
            Path = {
                elements = (
                    {element = MOVETO; point = "{0, -3}"; }, 
                    {element = LINETO; point = "{0, 3}"; }, 
                    {element = LINETO; point = "{6, 3}"; }, 
                    {element = LINETO; point = "{6, -3}"; }, 
                    {element = CLOSE; }
            Width = 6; 
You can modify it. The lines above draw the square. I'm not sure what the coordinate system is; it seems different from the regular shape coordinate system. My guess would be that the coordinates above give the corners of the box, so the x coord runs from 0 to 6 and the y coord from -3 to 3. If I were to do it, I would start by adding something like the four lines:

                    {element = MOVETO; point = "{3, -1.5}"; }, 
                    {element = LINETO; point = "{3, 1.5}"; }, 
                    {element = MOVETO; point = "{1.5, 0}"; }, 
                    {element = LINETO; point = "{4.5, 0}"; },
immediately before the line with the first MOVETO in it. I think this should add a plus sign inside the box.

You can also duplicate the definition and change its name so that you'll still have the original box arrowhead available as well. (I would probably remove the "OldIndex = 8;" line if I did that.)

Of course, always work on a copy!