perpendicular cut

hi how are you?

the idea is select some faces and then make two clicks in two vertex… then the software create a 90° line relative to the clicks only in select faces… check the image and video for example:


I have the next code that work in the video’s software… that is actionscript3… but I need the same in blender… I don’t have much money to this tool… do you can help me??



        private function Select2(e:flash.events.MouseEvent):void
        {
            var loc1:*;
            loc1 = 0;
            loc1 = 0;
            while (loc1 < this.PolyContainer.length) 
            {
                this.PolyContainer[loc1].Lock = true;
                loc1 = (loc1 + 1);
            }
            e.currentTarget.filters = [new flash.filters.GlowFilter()];
            if (this.SelectionCount != 1)
            {
                this.FirstSelect.x = e.currentTarget.x;
                this.FirstSelect.y = e.currentTarget.y;
                var loc2:*;
                var loc3:*;
                loc3 = ((loc2 = this).SelectionCount + 1);
                loc2.SelectionCount = loc3;
            }
            else 
            {
                this.Unfade();
                this.SecondSelect.x = e.currentTarget.x;
                this.SecondSelect.y = e.currentTarget.y;
                this.calculatePerpendicular();
                this.SelectionCount = 0;
            }
            return;
        }


        private function calculatePerpendicular():void
        {
            var loc9:*;
            loc9 = null;
            var loc1:*;
            loc1 = 1000;
            var loc2:*;
            loc2 = new flash.geom.Point(this.FirstSelect.x - this.SecondSelect.x, this.FirstSelect.y - this.SecondSelect.y);
            loc2.normalize(1);
            var loc3:*;
            loc3 = new flash.geom.Point(loc2.y, -loc2.x);
            var loc4:*;
            loc4 = new flash.geom.Point((this.FirstSelect.x + this.SecondSelect.x) / 2, (this.FirstSelect.y + this.SecondSelect.y) / 2);
            var loc5:*;
            loc5 = new flash.geom.Point(loc4.x + loc3.x * loc1, loc4.y + loc3.y * loc1);
            var loc6:*;
            loc6 = new flash.geom.Point(loc4.x + loc3.x * -1 * loc1, loc4.y + loc3.y * -1 * loc1);
            var loc7:*;
            loc7 = new com.types.TypeGrafo();
            addChild(loc7);
            loc7.x = loc5.x;
            loc7.y = loc5.y;
            var loc8:*;
            loc8 = new com.types.TypeGrafo();
            addChild(loc8);
            loc8.x = loc6.x;
            loc8.y = loc6.y;
            var loc10:*;
            loc10 = this.PolyContainer.concat();
            var loc11:*;
            loc11 = 0;
            while (loc11 < loc10.length) 
            {
                loc9 = loc10[loc11] as com.ui.LineSliceObject;
                loc9.slice(loc5, loc6);
                loc11 = (loc11 + 1);
            }
            return;
        }


        private function Select(e:flash.events.MouseEvent):void
        {
            var loc2:*;
            loc2 = null;
            var loc3:*;
            loc3 = 0;
            var loc4:*;
            loc4 = NaN;
            var loc5:*;
            loc5 = NaN;
            loc3 = 0;
            while (loc3 < this.PolyContainer.length) 
            {
                this.PolyContainer[loc3].Lock = true;
                loc3 = (loc3 + 1);
            }
            e.currentTarget.filters = [new flash.filters.GlowFilter()];
            var loc1:*;
            loc1 = this.PolyContainer.concat();
            if (this.CounterSelect != 1)
            {
                var loc6:*;
                var loc7:*;
                loc7 = ((loc6 = this).CounterSelect + 1);
                loc6.CounterSelect = loc7;
                loc4 = e.currentTarget.x;
                loc5 = e.currentTarget.y;
                loc3 = 0;
                while (loc3 < loc1.length) 
                {
                    loc2 = loc1[loc3] as com.ui.LineSliceObject;
                    loc2.ManualmouseDownHandler(loc4, loc5);
                    loc3 = (loc3 + 1);
                }
            }
            else 
            {
                this.Unfade();
                this.CounterSelect = 0;
                loc3 = 0;
                while (loc3 < loc1.length) 
                {
                    loc2 = loc1[loc3] as com.ui.LineSliceObject;
                    loc2.ManualmouseUpHandler(e.currentTarget.x, e.currentTarget.y);
                    loc3 = (loc3 + 1);
                }
            }
            return;
        }

best

Diego


hi again…

anyone can do that??? why??? some ideas??

anyone? :frowning:

Essentially you want a knife or bisect tool controlled to cut the entire mesh, using two selected vertices as the perpendicular axis. I might have a try, if time permits today.

https://gist.github.com/zeffii/11173403 I think is what you want. I may add this to the tinyCAD mesh utils.

hi… yes that’s the principal idea!! really thanks… only three more things

  1. how “cut” only the selected things (faces, vertex or borders)??

  2. how to add a button to 3dview tool?? that don’t have any class :frowning: then my def draw efforts don’t work :frowning:

  3. please tell me how pay you?

I think is a really good idea add this to tinyCad mesh :smiley:
thanks a lot :smiley:

Diego

I added the ability to not cut hidden faces. Refresh: https://gist.github.com/zeffii/11173403
Don’t pay me, donate to Blender Foundation or Gooseberry instead.

I’ve added it to the development version of tinyCAD on github.
operator can be called from

bpy.ops.mesh.cutonperp

hi man

thanks a lot… I don’t know your name!"! :o

now it works! :smiley: :smiley:

then I’m going to do another donation :smiley:

thanks again :smiley:

Diego