Quick Question  SplineOps.Divide 
ccampbell 
Kind of embarrassed to ask but.... When i try to divide to spline segments using the script below in a button it doesn't work. if i execute it as a selection it works just fine... not sure whats up. I can only get 1 of the 2 splines to divide. the script completes with no errors.
on divideSpline pressed do (
Select $Shape002  select spline1 max modify mode  switch to modify panel in UI subobjectlevel = 2  switch to segment suboject mode for L = 1 to numsplines $ do  master loop script incase more than 1 spline in the shape. ( for i = 1 to numsegments $ L do  select all segments loop ( SetSegSelection $ L #(i) keep:true )enbd loop inner scope )end loop master scope updateshape $ splineops.divide $ splineops.divide $ splineops.divide $ Deselect $Shape002
 SAME NOTES AS ABOVE
Select $Shape003 max modify mode subobjectlevel = 2 for L = 1 to numsplines $ do ( for i = 1 to numsegments $ L do ( SetSegSelection $ L #(i) keep:true )enbd loop inner scope )end loop master scope updateshape $ splineops.divide $ splineops.divide $ splineops.divide $ Deselect $Shape003 )
$Entrepreneur = if((Designer + Engineer)*Programmer){Problem Solver};
read 908 times 2/1/2012 11:19:58 PM (last edit: 2/1/2012 11:22:45 PM)

ccampbell 
i suppose this is just a crappy way of doing this. i am going to try doing it manually instead of quering the UI.
Does anybody know how to interpolate segments so that i can find the center of every segment?
$Entrepreneur = if((Designer + Engineer)*Programmer){Problem Solver};
read 900 times 2/1/2012 11:47:03 PM (last edit: 2/2/2012 12:04:30 AM)

Dub. 
I'd say it's probably because once you divide the segment, it changes the whole count of the spline segments that you are iterating across.
You might have to work backwards.
for i=(numsegments $ L) to 1 by 1 do ( xxxxxxxxxxxxxxxxxxxxxxxxxx )
read 882 times 2/2/2012 2:52:07 AM (last edit: 2/2/2012 2:52:07 AM)

Garp 
What Dub says. Plus use the splineShape methods  like subdivideSegment()  instead of the splineOps interface. It's way faster.
read 877 times 2/2/2012 4:34:17 AM (last edit: 2/2/2012 4:34:17 AM)

ccampbell 
@DUB  Thanks a lot definitely going to help with the issue. @Garp  Problem is using the subdivide op or refine ops appears to change the spline path significantly. I need to keep the same spline shape without changes. Using divide i can perform the command simultaneously to all segments intern keeping the spline shape almost identical where the other 2 i have to loop through and apply the op one segment at a time which is significantly changing my spline by the time i reach the end of the loop i have a completely different shape. Ive included an image below showing all 3 operations in action.
What i have been working on in the mean time is calculating the center of each segment and creating and adding a new knot at that location in the spline. this seems to be working ok so far but I'm still having some trouble which I'm attributing to my just missing something using path interp.
http:/www.cicanimation.com/temp_download/splines.jpg
$Entrepreneur = if((Designer + Engineer)*Programmer){Problem Solver};
read 863 times 2/2/2012 10:43:17 PM (last edit: 2/2/2012 10:47:44 PM)

Garp 
I get something different.
If the vertices are set to smooth, all three methods deform the segment in an identical way.
With verts set to bezier, there is no deformation.
In both cases, the three resulting splines are identical.
Try the following on splines with verts set to either corner or bezier. It should work fine.
read 850 times 2/2/2012 11:13:28 PM (last edit: 2/2/2012 11:16:57 PM)

ccampbell 
@Garp  Thanks for taking the time to write that up. Check out the link I posted below. The image shows the before and after effect of your script on my splines. I 1) screen capped 2)used the script and 3) screen capped again. and I copy pasted your script into my editor. I then superimposed the 2 images to show the change.
You can see that there is a change in the shape of the spline. most pronouced over larger segments and splines with fewer knots. One thing you mentioned before and i had also noticed was that the newly create points on the spline are bezier and i am using smooth knot interpolation. this could be attributing to the spline path changing shape.
I converted my spline knots to bezier and then ran the subdivideSegments and refineSegments ops and whaLa the spline maintains its shape perfectly! the spline shape is maintained.
The problem here is you cant go back to smooth splines otherwise it warps just as it did before(not sure if its an identical effect as when running the subdivide/refine segment on the spline with smooth knots). Luckily in this case i dont need to revert back to smooth after the process but it does present an interesting challenge i think.
Edit:
Tested the difference between running the script on a spline with smooth knots and a spline with bezier knots.
Test:1 Smooth  Smooth knot Spline > GarpScript > convert all knots back to smooth Result: huge deformations in spline path.
Test2 Bezier  Convertknots to Bezier before script> GarpScript > Convert all knots back to smooth Results: Minute but still noticeable changes in path.
$Entrepreneur = if((Designer + Engineer)*Programmer){Problem Solver};
read 842 times 2/2/2012 11:41:04 PM (last edit: 2/2/2012 11:54:18 PM)

Garp 
The smooth state is a form of bezier. I mean internally there are the same bezier handles to define the curvature. The difference is that it's dealt with directly by max, which readjusts the handles as it sees fit. So with smooth verts, it computes the new verts (and their handles) correctly, but they screws them by 'refitting' them according to distance and curvature. If you look at the doc, both the subdivideSegment() and refineSegmen() method are highly precise. If you're using it to cut segments only in half, I'd recommend subdivideSegment(). I made a few mesurements on 1000 splines x 15 subsplines x 3 segments (with bezier verts) and on average subdivideSegment() is a little more that 3 times faster than refineSegment().
read 837 times 2/2/2012 11:49:59 PM (last edit: 2/2/2012 11:51:56 PM)

ccampbell 
@Garp  Thanks a lot for the input and the time spent! I really honestly appreciate it! So i used a combined method of your input and some observation and found something that really works great. Ive included the code below. Its just raw code.
Its definately a simple solution but it took 2 day's to get to it...This is just part of a larger on going Script i'm working on at the office. So sometimes i have to have some very specific results. in this case i think it should work perfectly.
Thank you Both, Garp and Dub for all your expertise!
 Refine Spline Segments   Get Spline knot count and Segment Count. Knotcount = numknots $ SegCount = numsegments $ 1
CONVERT ALL KNOTS TO BEZIER to maintain the orignal shape. for i = 1 to knotcount do ( setKnotType $ 1 i #Bezier )
SUBDIVIDE SEGMENTS for i = Segcount to 1 by 1 do ( SubdivideSegment $ 1 i 2 ) updateshape $
CONVERT ALL POINTS BACK TO SMOOTH INTERPOLATION NOTE: spline shape may slightly differ from the original. Dependent on knot density. for i = 1 to knotcount do ( setKnotType $ 1 i #smooth ) updateshape $ 
$Entrepreneur = if((Designer + Engineer)*Programmer){Problem Solver};
read 831 times 2/3/2012 12:53:22 AM (last edit: 2/3/2012 12:55:42 AM)
