TurboCAD Forums

The Ultimate Resource for TurboCAD Knowledge

Register
 
All posts discussing pricing or where to buy TurboCAD will be deleted.

Add Curve Spline
Read 4750 times
* February 10, 2010, 04:00:30 AM
Hi Everyone  ;D,
I'm trying to create a vb.net plugin to draw circles depending on data extracted from an excel sheet, however i've hit a bit of a hurdle.

What I'm wanting to do:
 - Create a Curved Spline
 - Add 4 Fit points (not control points), top bottom left right.
 - Close the spline (join the first and last points).

Heres what I have so far:
Code: [Select]
        tcDrawing = tcApp.ActiveDrawing
        tcView = tcDrawing.ActiveView
        tcGraphics = tcDrawing.Graphics
        Dim tcSpline = tcGraphics.AddCurveSpline(0, 10, 0)
        tcVertices = tcSpline.Vertices
        With tcVertices
            .Add(10, 0, 0, True, True)
            .Add(20, 10, 0, True, True)
            .Add(10, 20, 0, True, True)
            .AddClose(True)
        End With
        tcSpline.draw()

What Happens:
This sort of works so long as the .AddClose is commented out, but then obviously the spline isn't closed.
And the vertices seem to be Control points rather than Fit points.

Any help would be greatly appreciated. I've been looking everywhere but cant seem to find any valid documentation.

Cheers

Mike at Crowns




Logged


* February 11, 2010, 07:01:33 AM
#1
Hi Mike
I used the addcurvespline in a VB-Macro before. I remember it was not reliable, maybe a bug in the SDK.
I tested your example with very odd results.
Code
Dim etc….
        Set tcspline = app.ActiveDrawing.Graphics.AddCurveSpline(0, 0, 0)
        Set tcvertex = tcspline.Vertices.Add(0, 10, 0)
        Set tcvertex = tcspline.Vertices.Add(10, 10, 0)
        Set tcvertex = tcspline.Vertices.Add(10, 0, 0)
        Set tcvertex = tcspline.Vertices.Add(5, -2, 0)
        Set tcvertex = tcspline.Vertices.Add(0, 0, 0)

        Set tcvertex = tcspline.Vertices.AddClose(1, 1, 1)

ActiveDrawing.Views.Refresh

end

I add the vertex Endpoint = startpoint. Without that TC crashes.
Run the macro in Debug-modus it does what it should do. After selecting the Spline and moving it it is closed.
Running the macro in the normal Modus, or create an .exe an run that, TC crashes!!

Bernd



[attachment deleted by admin]

Logged


* February 12, 2010, 05:34:24 AM
#2
Thanks for the reply,
However Im still at a loss as to how to use Splines.
I tried the code above and it drew something, then when I tried to select it (ctrl+a) I got a message saying "object extents are invalid, objects deselected" ???

Does anyone know of some documentation for the SDK?, all I can find is a help file in the SDK folder which  says
"The user must use subsequent Graphic.NextPoint calls to add segments to the Graphic object, and a Graphic.Finish call to complete the Graphic object."
As far as I can tell there arent any methods called NextPoint or Finish!
« Last Edit: February 17, 2010, 05:35:21 AM by MikeCrown »

Logged


* February 16, 2010, 09:32:37 PM
#3
Hi Mike,

First, I'm sorry, but you can't draw fit-point splines through the SDK. There's not really an underlying fit spline type -- when you draw a "fit-point" spline manually, TurboCAD converts it to a control-point spline behind the scenes; just select it with the Editor tool after you've drawn it and you'll see what I mean.

Now, to draw a closed control-point spline, you're almost there -- you're setting all your points correctly. Just be sure to set the graphic's "SPLINECLOSED" property to 1. Then you won't get the sudden changes in shape after you select the spline.

Here's a VBScript example:
Code: [Select]
'Spline_closed.vbs'
'Draws a closed control-point spline'
Dim app
Dim drw
Dim grf
Dim verts
Dim props
Set app = GetObject("", "TurboCAD.Application")
Set drw = app.Drawings.Add
Set grf = drw.Graphics.Add("TCW30Curve", "TCW30Curve")
Set verts = grf.Vertices
Set props = grf.Properties
props.Item("$SPLFRAME").Value = 0 'no visible control frame'
props.Item("$SPLINETYPE").Value = 0 '0=spline, 1=bezier'
props.Item("SPLINECLOSED").Value = 1 ' required if you want the spline to be closed.'
verts.Add 0, 0, 0
verts.Add 10, 0, 0
verts.Add 10, 10, 0
verts.Add 0, 10, 0
verts.AddClose
grf.Draw 
Set props = Nothing
Set verts = Nothing
Set grf = Nothing
Set drw = Nothing
Set app = Nothing

Logged


* February 17, 2010, 05:40:08 AM
#4
Thanks for the help, I shall try that code out shortly.
However I've managed to get Beziers working (same as my original code, only replacing AddCurveSpline with AddCurveBezier) so I'm using those now. Probably more appropriate for the shapes I'm making.

Cheers
Mike at Crowns

Logged


* February 19, 2010, 07:45:46 AM
#5
Thanks for the reply, the code you suggested works well. ;)

Logged