[Bf-committers] Individual extrude

joeedh joeeagar at prodigy.net
Wed Oct 20 07:09:30 CEST 2004


trip wrote:

> joeedh wrote:
>
>> Jason Saunders wrote:
>>
>>> Now in CVS we have "individual" extrude, which is a great feature.
>>> However, the way its implemented isn't lovely for workflow IMO. When
>>> you press 'E', a little menu pops up and you chose the extrude "mode"
>>> you want to use. However, i think that it would be better to have it
>>> so you press E to begin extruding, and then pressing 'i' WHILE
>>> extruding would toggle between individual/region extrude (there could
>>> even be 'helper' text on the 3dview header to indicate this). This
>>> way, you aren't presented with a menu every time you enter extrude
>>> mode, and also it makes it easy to switch back and forth between
>>> individual/region extrude (if the need arises).
>>>
>>> Anyways, just an idea.
>>>  
>>>
>> Great idea, except that implementing it may not be possible.  Or it 
>> may, if you were to use undo. . .hmm. . .
>>
>> The steps of extrusion:
>> Extude:
>> Normal Transfrom
>>
>> Maybe:
>> Extrude.
>> Transform.
>> [User presses 'i']
>> Undo.
>> Extrude
>> Transform.
>>
>> Sound good?  I'll have to try it out.
>>
>> joeedh
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at projects.blender.org
>> http://projects.blender.org/mailman/listinfo/bf-committers
>> t
>
>
> ????????????????
> just make it shift E, or is that taken already ?? Maybe a mod button 
> in the edit button window
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at projects.blender.org
> http://projects.blender.org/mailman/listinfo/bf-committers
>
SHIFT-E is for subsurf creases.  CTRL-E is for marking seams.

Putting extra junk in transform.c would not be a good thing (see my last 
post). . .What could work is maybe a special function for specilized 
tool modifiers, for example, extrudeflag_*() could set a special flag 
in, say, G.transflag (EXTRUDING, for example) and then there could be a 
special function that processes events inside the main Transform() loop, 
looks up G.stransmode and applies per-tool modifications. 

Hmm.  It would be important to leave everything out of the main 
Transform() code, e.g. other then the fact that the special function is 
run inside Transform(), it wouldn't interact in any other way with the 
Transform() functions.  This special function (TransModifiers()?) would 
take the current event as argument (if the event hasn't been used by 
Transform() of course) and return whether or not to break the while 
loop.  So for example:

int SpecialModifier(int event)
{
    if (G.stransmode & EXTRUDING) {
        if (event == IKEY) {
            //break the loop
            BIF_undo(); //or whatever it is.
            extrude_indiv(SELECT); //or whatever it is.
            //it may be a good idea to find some way to prepare the 
initial mouse position array,
            //trans.imval[2].
            Transform(NORMALGRAB); //we use preproceesor defines in the 
new Transform().
            return 0;
        }
    }
//don't break the loop if it hasn't been broken already.
    return 1;
}

Martin?  Think this could work?  Maybe I'll try it out. . .

joeedh


More information about the Bf-committers mailing list