Language = VBScript '********************************************************************************* ' Purpose: Test for Bug at 90 and 270 degrees '********************************************************************************* Option Explicit 'require variable declarations Sub Main (CanvasApp) Dim Scene, SceneRootGroup, GrpBase, wheel Dim f, i, p, r() Dim Matwheel, textwheel, Totalfaces, currentface Dim GridOriginX, GridOriginY, GridOriginZ, GridSize, GridInterval, Point Dim BoxMinX, BoxMinY, BoxMinZ, BoxMaxX, BoxMaxY, BoxMaxZ Dim rd, ad, ar, so, pi pi = 3.1415926535897932384626433832795 ar = 1.360 'space betwheen wheel back ends so = .325 'top level rail rd = .850 'wheel diameter ad = .20 'axle diameter Set Scene = CanvasApp.GetActiveScene Set SceneRootGroup = Scene.GetRootGroup Set GrpBase = Scene.CreateGroup SceneRootGroup.AddChild GrpBase GrpBase.Setname "Main" Set wheel = Scene.CreateObject() wheel.AddNormal 0,0,-1 p=0 for i = 0 to 4 wheel.AddPoint -ar/2, 0 - cos(72*(i+1)*pi/180)*ad/2, sin((72*(i+1))*pi/180)*ad/2 wheel.AddPoint -ar/2, 0 - cos(72*i*pi/180)*ad/2, sin((72*i)*pi/180)*ad/2 wheel.AddPoint ar/2, 0 - cos(72*i*pi/180)*ad/2, sin((72*i)*pi/180)*ad/2 wheel.AddPoint ar/2, 0 - cos(72*(i+1)*pi/180)*ad/2, sin((72*(i+1))*pi/180)*ad/2 wheel.SetPointTextureCoordinate p+0, -.958, -.783 wheel.SetPointTextureCoordinate p+1, -.958, -.859 wheel.SetPointTextureCoordinate p+2, -1, -.859 wheel.SetPointTextureCoordinate p+3, -1, -.859 p=p+4 next 'add the points and the normal to the faces f=p/4 f=f-1 redim r(f) p=0 for i= 0 to f Set r(i) = wheel.CreateFace r(i).AddPointAndNormal p+0,0 r(i).AddPointAndNormal p+1,0 r(i).AddPointAndNormal p+2,0 r(i).AddPointAndNormal p+3,0 p=p+4 next 'add the points and the normal to the faces 'add the object to the created Group 'this also triggers the update to the database Grpbase.AddObject wheel 'set the object name - note that we can't do this until 'the object is added to a Group wheel.SetName "wheel" 'Create an appropriate material for the face Set Matwheel = Scene.CreateMaterial textwheel = "d:\programme\3d canvas\media\textures\Acleantrack2.tga" Matwheel.SetTextureFileName textwheel 'set the default ambient value Matwheel.SetAmbient 20 Matwheel.SetSpecular 1 Matwheel.SetTranslucent 1 'apply the material to the face Totalfaces = wheel.getfacecount For i = 0 to Totalfaces-1 Set Currentface=wheel.getface(i) currentface.setmaterial matwheel Next CanvasApp.GetGridDetails GridOriginX, GridOriginY, GridOriginZ, GridSize, GridInterval wheel.GetBoundingBox BoxMinX, BoxMinY, BoxMinZ, BoxMaxX, BoxMaxY, BoxMaxZ GrpBase.SetPosition SceneRootGroup, 8, GridOriginX + 3, (rd/2 + so), GridOriginZ +1 GrpBase.SetOrientation SceneRootGroup, 8, 0, sin(-360*pi/180), cos(360*pi/180), 0, 1, 0 GrpBase.SetPosition SceneRootGroup, 7, GridOriginX + 3, (rd/2 + so), GridOriginZ +1 GrpBase.SetOrientation SceneRootGroup, 7, 0, sin(-315*pi/180), cos(315*pi/180), 0, 1, 0 GrpBase.SetPosition SceneRootGroup, 6, GridOriginX + 3, (rd/2 + so), GridOriginZ +1 GrpBase.SetOrientation SceneRootGroup, 6, 0, sin(-270*pi/180), cos(270*pi/180), 0, 1, 0 GrpBase.SetPosition SceneRootGroup, 5, GridOriginX + 3, (rd/2 + so), GridOriginZ +1 GrpBase.SetOrientation SceneRootGroup, 5, 0, sin(-225*pi/180), cos(225*pi/180), 0, 1, 0 GrpBase.SetPosition SceneRootGroup, 4, GridOriginX + 3, (rd/2 + so), GridOriginZ +1 GrpBase.SetOrientation SceneRootGroup, 4, 0, sin(-180*pi/180), cos(180*pi/180), 0, 1, 0 GrpBase.SetPosition SceneRootGroup, 3, GridOriginX + 3, (rd/2 + so), GridOriginZ +1 GrpBase.SetOrientation SceneRootGroup, 3, 0, sin(-135*pi/180), cos(135*pi/180), 0, 1, 0 GrpBase.SetPosition SceneRootGroup, 2, GridOriginX + 3, (rd/2 + so), GridOriginZ +1 GrpBase.SetOrientation SceneRootGroup, 2, 0, sin(-90*pi/180), cos(90*pi/180), 0, 1, 0 GrpBase.SetPosition SceneRootGroup, 1, GridOriginX + 3, (rd/2 + so), GridOriginZ +1 GrpBase.SetOrientation SceneRootGroup, 1, 0, sin(-45*pi/180), cos(45*pi/180), 0, 1, 0 Grpbase.SetPosition SceneRootGroup, 0, GridOriginX + 3, (rd/2 + so), GridOriginZ +1 GrpBase.SetOrientation SceneRootGroup, 0, 0, sin(0*pi/180), cos(0*pi/180), 0, 1, 0 wheel.GenerateNormals 3.14 - wheel.getCreaseFactor / 100 * 3.14 'That is creasing End Sub