public static void CreateSpiralSurface() { msgScene scene = msgScene.GetScene(); scene.Clear(); msgArcStruct ArcGeo = new msgArcStruct(); msgPointStruct ArP1 = new msgPointStruct(-1.0, -3.0, 0.0); msgPointStruct ArP2 = new msgPointStruct(-1.0, -2.0, 0.0); msgPointStruct ArP3 = new msgPointStruct(0.0, -3.5, 0.0); ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); msg2DObject ar = msgArc.Create(ArcGeo); scene.AttachObject(ar); ar.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); ar.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgPointStruct axeP1 = new msgPointStruct(2.0, -3.0, 0.0); msgPointStruct axeP2 = new msgPointStruct(2.0, 3.0, 0.0); msg3DObject spirO = (msg3DObject)msgKinematic.Spiral(ar, null, axeP1, axeP2, 4, 10, 15, false); scene.AttachObject(spirO); spirO.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 85); msgVectorStruct transV1 = new msgVectorStruct(0, -11.5, 0); spirO.InitTempMatrix().Translate(transV1); spirO.ApplyTempMatrix(); spirO.DestroyTempMatrix(); }
public static void CreateExtrudeBody() { msgScene scene = msgScene.GetScene(); scene.Clear(); Utils.AddFloorInScene(30.0, 25.0, -2.0, 0.0, -2.0); msgPointStruct tmpPnt = new msgPointStruct(); msgSplineStruct spl2 = msgSplineStruct.Create(); int fl = 0; for (double i = 0.0; i < 2.0 * 3.14159265; i += 0.13) { tmpPnt.x = ((double)(fl % 3 + 2)) * Math.Cos(i); tmpPnt.y = ((double)(fl % 3 + 2)) * Math.Sin(i); tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, fl); fl++; } spl2.Close(); msgSpline spl2_obj = msgSpline.Create(spl2); msgSplineStruct.Delete(spl2); scene.AttachObject(spl2_obj); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgCircleStruct cirGeo = new msgCircleStruct(); msgPointStruct cirC = new msgPointStruct(0.0, 0.0, 0.0); msgVectorStruct cirNor = new msgVectorStruct(0.0, 0.0, 1.0); cirGeo.FromCenterRadiusNormal(cirC, 1.6, cirNor); msg2DObject cir = msgCircle.Create(cirGeo); scene.AttachObject(cir); cir.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); cir.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgVectorStruct extVec = new msgVectorStruct(1, -2, 5); msg3DObject exO = (msg3DObject)msgKinematic.Extrude(spl2_obj, new msg2DObject[] { cir }, extVec, true); scene.AttachObject(exO); exO.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 30); msgVectorStruct transV1 = new msgVectorStruct(-7, 0, 0); exO.InitTempMatrix().Translate(transV1); exO.ApplyTempMatrix(); exO.DestroyTempMatrix(); }
public static void CreateRotationSurface() { msgScene scene = msgScene.GetScene(); scene.Clear(); Utils.AddFloorInScene(15.0, 14.0, -2.0, 2.0, -3.0); msgPointStruct tmpPnt = new msgPointStruct(); msgSplineStruct spl2 = msgSplineStruct.Create(); tmpPnt.x = 1.0; tmpPnt.y = -3.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 0); tmpPnt.x = 3.0; tmpPnt.y = -2.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 1); tmpPnt.x = 2.0; tmpPnt.y = -1.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 2); tmpPnt.x = 3.0; tmpPnt.y = 1.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 3); tmpPnt.x = 2.0; tmpPnt.y = 4.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 4); tmpPnt.x = 4.0; tmpPnt.y = 5.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 5); msgSpline spl2_obj = msgSpline.Create(spl2); scene.AttachObject(spl2_obj); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgSplineStruct.Delete(spl2); msgPointStruct p1 = new msgPointStruct(0, -2, 0); msgPointStruct p2 = new msgPointStruct(0, 0, 0); msg3DObject rO = (msg3DObject)msgKinematic.Rotation(spl2_obj, p1, p2, 250, false); scene.AttachObject(rO); rO.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 3); msgVectorStruct transV1 = new msgVectorStruct(-1, 0, 0); rO.InitTempMatrix().Translate(transV1); rO.ApplyTempMatrix(); rO.DestroyTempMatrix(); }
public static void CreateRotationBody() { msgScene scene = msgScene.GetScene(); scene.Clear(); msgPointStruct tmpPnt = new msgPointStruct(); msgSplineStruct spl2 = msgSplineStruct.Create(); int fl = 0; for (double i = 0.0; i < 2.0 * Math.PI; i += 0.4) { tmpPnt.x = ((double)(fl % 3 + 2)) * Math.Cos(i); tmpPnt.y = ((double)(fl % 3 + 2)) * Math.Sin(i); tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, fl); fl++; } spl2.Close(); msgSpline spl2_obj = msgSpline.Create(spl2); scene.AttachObject(spl2_obj); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgSplineStruct.Delete(spl2); msgPointStruct p1 = new msgPointStruct(10, 10, 0); msgPointStruct p2 = new msgPointStruct(20, 15, 0); msg3DObject rO = (msg3DObject)msgKinematic.Rotation(spl2_obj, p1, p2, 290, true); scene.AttachObject(rO); rO.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 8); msgVectorStruct transV1 = new msgVectorStruct(-6, 0, 0); rO.InitTempMatrix().Translate(transV1); rO.ApplyTempMatrix(); rO.DestroyTempMatrix(); }
public static void CreateSpiralBody() { msgScene scene = msgScene.GetScene(); scene.Clear(); msgCircleStruct cirGeo1 = new msgCircleStruct(); msgPointStruct cirC1 = new msgPointStruct(2.0, -2.0, 0.0); msgVectorStruct cirNor1 = new msgVectorStruct(0.0, 0.0, 1.0); cirGeo1.FromCenterRadiusNormal(cirC1, 3.0, cirNor1); msg2DObject cir1 = msgCircle.Create(cirGeo1); scene.AttachObject(cir1); cir1.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); cir1.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgCircleStruct cirGeo2 = new msgCircleStruct(); msgPointStruct cirC2 = new msgPointStruct(2.0, -2.3, 0.0); msgVectorStruct cirNor2 = new msgVectorStruct(0.0, 0.0, 1.0); cirGeo2.FromCenterRadiusNormal(cirC2, 1.5, cirNor2); msg2DObject cir2 = msgCircle.Create(cirGeo2); scene.AttachObject(cir2); cir2.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); cir2.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgPointStruct axeP1 = new msgPointStruct(6.0, -3.0, 0.0); msgPointStruct axeP2 = new msgPointStruct(6.0, 3.0, 0.0); msg3DObject spirO = (msg3DObject)msgKinematic.Spiral(cir1, new msg2DObject[] { cir2 }, axeP1, axeP2, 12, 30, 16, true); scene.AttachObject(spirO); spirO.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 56); msgVectorStruct transV1 = new msgVectorStruct(0, 7, 0); spirO.InitTempMatrix().Translate(transV1); spirO.ApplyTempMatrix(); spirO.DestroyTempMatrix(); }
public static void CreateExtrudeSurfaces() { msgScene scene = msgScene.GetScene(); scene.Clear(); msgPointStruct tmpPnt = new msgPointStruct(); msgSplineStruct spl2 = msgSplineStruct.Create(); int fl = 0; for (double i = 0.0; i < 10.0; i += 1.0) { tmpPnt.x = i; tmpPnt.y = (fl % 2 > 0)?-i / 2.0:i / 2.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, fl); fl++; } msgSpline spl2_obj = msgSpline.Create(spl2); scene.AttachObject(spl2_obj); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgSplineStruct.Delete(spl2); msgVectorStruct extVec = new msgVectorStruct(1, -2, 3); msg3DObject exO = (msg3DObject)msgKinematic.Extrude(spl2_obj, null, extVec, false); scene.AttachObject(exO); exO.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 20); msgVectorStruct transV1 = new msgVectorStruct(8, 0, 0); exO.InitTempMatrix().Translate(transV1); exO.ApplyTempMatrix(); exO.DestroyTempMatrix(); }
public static void CreateFace() { msgScene scene = msgScene.GetScene(); scene.Clear(); msgPointStruct tmpPnt = new msgPointStruct(); msgSplineStruct spl2 = msgSplineStruct.Create(); tmpPnt.x = -1.0; tmpPnt.y = -3.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 0); tmpPnt.x = -3.0; tmpPnt.y = 0.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 1); tmpPnt.x = -1.0; tmpPnt.y = -1.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 2); tmpPnt.x = 0.0; tmpPnt.y = 1.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 3); tmpPnt.x = -1.0; tmpPnt.y = 4.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 4); tmpPnt.x = 3.0; tmpPnt.y = 1.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 5); tmpPnt.x = 2.0; tmpPnt.y = -3.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 6); tmpPnt.x = 1.0; tmpPnt.y = -1.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 7); tmpPnt.x = 1.0; tmpPnt.y = -4.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 8); spl2.Close(); msgSpline spl2_obj = msgSpline.Create(spl2); msgSplineStruct.Delete(spl2); scene.AttachObject(spl2_obj); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 0); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 1); msg2DObject[] holes = new msg2DObject[3]; msgCircleStruct cirGeo = new msgCircleStruct(); msgPointStruct cirC = new msgPointStruct(0.8, 1.0, 0.0); msgVectorStruct cirNor = new msgVectorStruct(0.0, 0.0, 1.0); cirGeo.FromCenterRadiusNormal(cirC, 0.8, cirNor); holes[0] = msgCircle.Create(cirGeo); scene.AttachObject(holes[0]); holes[0].SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 0); holes[0].SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 1); cirC.x = 1.6; cirC.y = -1.0; cirGeo.FromCenterRadiusNormal(cirC, 0.2, cirNor); holes[1] = msgCircle.Create(cirGeo); scene.AttachObject(holes[1]); holes[1].SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 0); holes[1].SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 1); cirC.x = 0.0; cirC.y = -1.0; cirGeo.FromCenterRadiusNormal(cirC, 0.4, cirNor); holes[2] = msgCircle.Create(cirGeo); scene.AttachObject(holes[2]); holes[2].SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 0); holes[2].SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 1); msg3DObject fcO = (msg3DObject)msgSurfaces.Face(spl2_obj, holes); scene.AttachObject(fcO); fcO.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 50); msgVectorStruct transV1 = new msgVectorStruct(-5, 0, 0); fcO.InitTempMatrix().Translate(transV1); fcO.ApplyTempMatrix(); fcO.DestroyTempMatrix(); }
public static void CreateLinear() { msgScene scene = msgScene.GetScene(); scene.Clear(); Utils.AddFloorInScene(30.0, 30.0, 2.0, 5.0, -2.0); msgPointStruct tmpPnt = new msgPointStruct(); msgSplineStruct spl1 = msgSplineStruct.Create(); int fl = 0; for (double i = 0.0; i < 2.0 * 3.14159265; i += 0.4) { tmpPnt.x = ((double)(fl % 3 + 2)) * Math.Cos(i); tmpPnt.y = ((double)(fl % 3 + 2)) * Math.Sin(i); tmpPnt.z = 0.0; spl1.AddKnot(tmpPnt, fl); fl++; } spl1.Close(); msgSpline spl1_obj = msgSpline.Create(spl1); scene.AttachObject(spl1_obj); spl1_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); spl1_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgSplineStruct.Delete(spl1); msgCircleStruct cirGeo = new msgCircleStruct(); cirGeo.center.x = 2.0; cirGeo.center.y = -2.0; cirGeo.center.z = 8.0; cirGeo.normal.x = 0.0; cirGeo.normal.y = 0.0; cirGeo.normal.z = 1.0; cirGeo.radius = 1.5; msgCircle cir = msgCircle.Create(cirGeo); scene.AttachObject(cir); cir.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); cir.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msg3DObject linO1 = (msg3DObject)msgSurfaces.LinearSurfaceFromSections(spl1_obj, cir, 0.5f, false); scene.AttachObject(linO1); linO1.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 90); msgVectorStruct transV1 = new msgVectorStruct(0, 7, 0); linO1.InitTempMatrix().Translate(transV1); linO1.ApplyTempMatrix(); linO1.DestroyTempMatrix(); msg3DObject linO2 = (msg3DObject)msgSurfaces.LinearSurfaceFromSections(spl1_obj, cir, 0.7f, true); scene.AttachObject(linO2); linO2.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 150); transV1.x = 8.0; transV1.y = 0.0; linO2.InitTempMatrix().Translate(transV1); linO2.ApplyTempMatrix(); linO2.DestroyTempMatrix(); msg3DObject linO3 = (msg3DObject)msgSurfaces.LinearSurfaceFromSections(spl1_obj, cir, 0.3f, false); scene.AttachObject(linO3); linO3.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 30); transV1.x = -8.0; transV1.y = 0.0; linO3.InitTempMatrix().Translate(transV1); linO3.ApplyTempMatrix(); linO3.DestroyTempMatrix(); }
public static void CreateCoonsFrom4Curves() { msgScene scene = msgScene.GetScene(); scene.Clear(); msgPointStruct tmpPnt = new msgPointStruct(); msgSplineStruct spl1 = msgSplineStruct.Create(); tmpPnt.x = -6.0; tmpPnt.y = 0.0; tmpPnt.z = -1.0; spl1.AddKnot(tmpPnt, 0); tmpPnt.x = -5.0; tmpPnt.y = 0.0; tmpPnt.z = 2.0; spl1.AddKnot(tmpPnt, 1); tmpPnt.x = -3.0; tmpPnt.y = 0.0; tmpPnt.z = -2.0; spl1.AddKnot(tmpPnt, 2); tmpPnt.x = -2.0; tmpPnt.y = 0.0; tmpPnt.z = -2.0; spl1.AddKnot(tmpPnt, 3); tmpPnt.x = -1.0; tmpPnt.y = 0.0; tmpPnt.z = 1.0; spl1.AddKnot(tmpPnt, 4); tmpPnt.x = 2.0; tmpPnt.y = 0.0; tmpPnt.z = 1.0; spl1.AddKnot(tmpPnt, 5); tmpPnt.x = 2.0; tmpPnt.y = 0.0; tmpPnt.z = 0.0; spl1.AddKnot(tmpPnt, 6); tmpPnt.x = 4.0; tmpPnt.y = 0.0; tmpPnt.z = 1.0; spl1.AddKnot(tmpPnt, 7); msgSpline spl1_obj = msgSpline.Create(spl1); msgSplineStruct.Delete(spl1); scene.AttachObject(spl1_obj); spl1_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 0); spl1_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 1); msgSplineStruct spl2 = msgSplineStruct.Create(); tmpPnt.x = -5.0; tmpPnt.y = 4.0; tmpPnt.z = 2.0; spl2.AddKnot(tmpPnt, 0); tmpPnt.x = -3.0; tmpPnt.y = 4.0; tmpPnt.z = 1.0; spl2.AddKnot(tmpPnt, 1); tmpPnt.x = -2.0; tmpPnt.y = 4.0; tmpPnt.z = 2.0; spl2.AddKnot(tmpPnt, 2); tmpPnt.x = -1.0; tmpPnt.y = 4.0; tmpPnt.z = -1.0; spl2.AddKnot(tmpPnt, 3); tmpPnt.x = 4.0; tmpPnt.y = 4.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 4); msgSpline spl2_obj = msgSpline.Create(spl2); msgSplineStruct.Delete(spl2); scene.AttachObject(spl2_obj); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 10); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgSplineStruct spl3 = msgSplineStruct.Create(); tmpPnt.x = -6.0; tmpPnt.y = 0.0; tmpPnt.z = -1.0; spl3.AddKnot(tmpPnt, 0); tmpPnt.x = -7.0; tmpPnt.y = 0.5; tmpPnt.z = 3.0; spl3.AddKnot(tmpPnt, 1); tmpPnt.x = -4.0; tmpPnt.y = 2.0; tmpPnt.z = -1.0; spl3.AddKnot(tmpPnt, 2); tmpPnt.x = -5.0; tmpPnt.y = 3.0; tmpPnt.z = 1.0; spl3.AddKnot(tmpPnt, 3); tmpPnt.x = -5.0; tmpPnt.y = 4.0; tmpPnt.z = 2.0; spl3.AddKnot(tmpPnt, 4); msgSpline spl3_obj = msgSpline.Create(spl3); msgSplineStruct.Delete(spl3); scene.AttachObject(spl3_obj); spl3_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 50); spl3_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 3); msgSplineStruct spl4 = msgSplineStruct.Create(); tmpPnt.x = 4.0; tmpPnt.y = 0.0; tmpPnt.z = 1.0; spl4.AddKnot(tmpPnt, 0); tmpPnt.x = 3.0; tmpPnt.y = 1.0; tmpPnt.z = 2.0; spl4.AddKnot(tmpPnt, 1); tmpPnt.x = 5.0; tmpPnt.y = 2.0; tmpPnt.z = -1.0; spl4.AddKnot(tmpPnt, 2); tmpPnt.x = 3.0; tmpPnt.y = 3.0; tmpPnt.z = 0.5; spl4.AddKnot(tmpPnt, 3); tmpPnt.x = 4.0; tmpPnt.y = 4.0; tmpPnt.z = 0.0; spl4.AddKnot(tmpPnt, 4); msgSpline spl4_obj = msgSpline.Create(spl4); msgSplineStruct.Delete(spl4); scene.AttachObject(spl4_obj); spl4_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 100); spl4_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 4); msg3DObject coons = (msg3DObject)msgSurfaces.Coons(spl1_obj, spl2_obj, spl3_obj, spl4_obj, 36, 36, 4, 4); scene.AttachObject(coons); coons.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 4); msgVectorStruct transV1 = new msgVectorStruct(0, 0, -0.3); coons.InitTempMatrix().Translate(transV1); coons.ApplyTempMatrix(); coons.DestroyTempMatrix(); }
public static void CreateCoonsFrom3Curves() { msgScene scene = msgScene.GetScene(); scene.Clear(); msgPointStruct tmpPnt = new msgPointStruct(); msgSplineStruct spl1 = msgSplineStruct.Create(); tmpPnt.x = -6.0; tmpPnt.y = 0.0; tmpPnt.z = -1.0; spl1.AddKnot(tmpPnt, 0); tmpPnt.x = -5.0; tmpPnt.y = 0.0; tmpPnt.z = -2.0; spl1.AddKnot(tmpPnt, 1); tmpPnt.x = -3.0; tmpPnt.y = 0.0; tmpPnt.z = -1.0; spl1.AddKnot(tmpPnt, 2); tmpPnt.x = -2.0; tmpPnt.y = 0.0; tmpPnt.z = -2.0; spl1.AddKnot(tmpPnt, 3); tmpPnt.x = -1.0; tmpPnt.y = 0.0; tmpPnt.z = 1.0; spl1.AddKnot(tmpPnt, 4); tmpPnt.x = 2.0; tmpPnt.y = 0.0; tmpPnt.z = 1.0; spl1.AddKnot(tmpPnt, 5); tmpPnt.x = 2.0; tmpPnt.y = 0.0; tmpPnt.z = 0.0; spl1.AddKnot(tmpPnt, 6); tmpPnt.x = 4.0; tmpPnt.y = 0.0; tmpPnt.z = 1.0; spl1.AddKnot(tmpPnt, 7); msgSpline spl1_obj = msgSpline.Create(spl1); msgSplineStruct.Delete(spl1); scene.AttachObject(spl1_obj); spl1_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 0); spl1_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 1); msgSplineStruct spl2 = msgSplineStruct.Create(); tmpPnt.x = -6.0; tmpPnt.y = 0.0; tmpPnt.z = -1.0; spl2.AddKnot(tmpPnt, 0); tmpPnt.x = -6.0; tmpPnt.y = 0.5; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 1); tmpPnt.x = -6.0; tmpPnt.y = 2.0; tmpPnt.z = -1.0; spl2.AddKnot(tmpPnt, 2); tmpPnt.x = -6.0; tmpPnt.y = 3.0; tmpPnt.z = 1.0; spl2.AddKnot(tmpPnt, 3); tmpPnt.x = -4.0; tmpPnt.y = 4.0; tmpPnt.z = 1.0; spl2.AddKnot(tmpPnt, 4); msgSpline spl2_obj = msgSpline.Create(spl2); msgSplineStruct.Delete(spl2); scene.AttachObject(spl2_obj); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 50); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 3); msgPointStruct ArP1 = new msgPointStruct(); msgPointStruct ArP2 = new msgPointStruct(); msgPointStruct ArP3 = new msgPointStruct(); msgArcStruct ArcGeo = new msgArcStruct(); ArP1.x = -4.0; ArP1.y = 4.0; ArP1.z = 1.0; ArP2.x = 4.0; ArP2.y = 0.0; ArP2.z = 1.0; ArP3.x = 0.0; ArP3.y = 5.0; ArP3.z = -4.0; ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); msgArc arcObj = msgArc.Create(ArcGeo); scene.AttachObject(arcObj); arcObj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 20); arcObj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 3); msg3DObject coons = (msg3DObject)msgSurfaces.Coons(spl1_obj, spl2_obj, arcObj, null, 36, 36, 4, 4); scene.AttachObject(coons); coons.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 4); msgVectorStruct transV1 = new msgVectorStruct(0, 0, -0.4); coons.InitTempMatrix().Translate(transV1); coons.ApplyTempMatrix(); coons.DestroyTempMatrix(); }
public static void CreatePipeBody() { msgScene scene = msgScene.GetScene(); scene.Clear(); msgObject[] objcts = new msgObject[5]; msgPointStruct ArP1 = new msgPointStruct(); msgPointStruct ArP2 = new msgPointStruct(); msgPointStruct ArP3 = new msgPointStruct(); msgArcStruct ArcGeo = new msgArcStruct(); ArP1.x = 0.0; ArP1.y = -2.0; ArP1.z = 0.0; ArP2.x = 1.0; ArP2.y = -1.0; ArP2.z = 0.0; ArP3.x = 0.4; ArP3.y = -1.2; ArP3.z = 0.0; ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); objcts[0] = msgArc.Create(ArcGeo); ArP1.x = 1.0; ArP1.y = -1.0; ArP1.z = 0.0; ArP2.x = 2.0; ArP2.y = 0.0; ArP2.z = 0.0; ArP3.x = 1.9; ArP3.y = -0.5; ArP3.z = 0.0; ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); objcts[1] = msgArc.Create(ArcGeo); ArP1.x = 2.0; ArP1.y = 0.0; ArP1.z = 0.0; ArP2.x = 1.0; ArP2.y = 1.0; ArP2.z = 0.0; ArP3.x = 1.6; ArP3.y = 0.8; ArP3.z = 0.0; ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); objcts[2] = msgArc.Create(ArcGeo); objcts[3] = msgLine.Create(1.0, 1.0, 0.0, -1.0, 1.0, 0.0); ArP1.x = -1.0; ArP1.y = 1.0; ArP1.z = 0.0; ArP2.x = -1.0; ArP2.y = 0.0; ArP2.z = 1.0; ArP3.x = -1.1; ArP3.y = 1.0; ArP3.z = 0.0; ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); objcts[4] = msgArc.Create(ArcGeo); msgContour cnt1 = msgContour.CreateContour(objcts); scene.AttachObject(cnt1); cnt1.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); cnt1.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); ArP1.x = -0.2; ArP1.y = -0.2; ArP1.z = 0.0; ArP2.x = -0.1; ArP2.y = 0.2; ArP2.z = 0.0; ArP3.x = -0.3; ArP3.y = 0.1; ArP3.z = 0.0; ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); objcts[0] = msgArc.Create(ArcGeo); ArP1.x = -0.1; ArP1.y = 0.2; ArP1.z = 0.0; ArP2.x = 0.3; ArP2.y = 0.5; ArP2.z = 0.0; ArP3.x = 0.2; ArP3.y = 0.6; ArP3.z = 0.0; ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); objcts[1] = msgArc.Create(ArcGeo); ArP1.x = 0.3; ArP1.y = 0.5; ArP1.z = 0.0; ArP2.x = -0.2; ArP2.y = -0.2; ArP2.z = 0.0; ArP3.x = 0.6; ArP3.y = -0.4; ArP3.z = 0.0; ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); objcts[2] = msgArc.Create(ArcGeo); msgObject[] objcts2 = null; Array.Copy(objcts, objcts2, 3); msgContour cnt2 = msgContour.CreateContour(objcts2); scene.AttachObject(cnt2); cnt2.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); cnt2.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgCircleStruct cirGeo = new msgCircleStruct(); msgPointStruct cirC = new msgPointStruct(0.3, -0.1, 0.0); msgVectorStruct cirNor = new msgVectorStruct(0.0, 0.0, 1.0); cirGeo.FromCenterRadiusNormal(cirC, 0.31, cirNor); msg2DObject cir = msgCircle.Create(cirGeo); scene.AttachObject(cir); cir.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); cir.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgPointStruct point_in_plane = new msgPointStruct(0.0, 0.0, 0.0); bool close = true; msg3DObject pipO = (msg3DObject)msgKinematic.Pipe(cnt2, new msg2DObject[] { cir }, cnt1, point_in_plane, 0.0, ref close); scene.AttachObject(pipO); pipO.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 25); msgVectorStruct transV1 = new msgVectorStruct(3.0, 1.0, 0); pipO.InitTempMatrix().Translate(transV1); pipO.ApplyTempMatrix(); pipO.DestroyTempMatrix(); }
public static void CreatePipeSurface() { msgScene scene = msgScene.GetScene(); scene.Clear(); msgArcStruct ArcGeo = new msgArcStruct(); msgPointStruct ArP1 = new msgPointStruct(1.0, -4.0, 0.0); msgPointStruct ArP2 = new msgPointStruct(1.0, -3.6, 0.0); msgPointStruct ArP3 = new msgPointStruct(1.2, -3.5, 0.0); ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); msg2DObject ar = msgArc.Create(ArcGeo); scene.AttachObject(ar); ar.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); ar.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgObject[] objcts = new msgObject[6]; objcts[0] = msgLine.Create(0.0, -4.0, 0.0, 0.0, -2.0, 0.0); ArP1.x = 0.0; ArP1.y = -2.0; ArP1.z = 0.0; ArP2.x = 1.0; ArP2.y = -1.0; ArP2.z = 0.0; ArP3.x = 0.4; ArP3.y = -1.2; ArP3.z = 0.0; ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); objcts[1] = msgArc.Create(ArcGeo); ArP1.x = 1.0; ArP1.y = -1.0; ArP1.z = 0.0; ArP2.x = 2.0; ArP2.y = 0.0; ArP2.z = 0.0; ArP3.x = 1.9; ArP3.y = -0.5; ArP3.z = 0.0; ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); objcts[2] = msgArc.Create(ArcGeo); ArP1.x = 2.0; ArP1.y = 0.0; ArP1.z = 0.0; ArP2.x = 1.0; ArP2.y = 1.0; ArP2.z = 0.0; ArP3.x = 1.6; ArP3.y = 0.8; ArP3.z = 0.0; ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); objcts[3] = msgArc.Create(ArcGeo); objcts[4] = msgLine.Create(1.0, 1.0, 0.0, -1.0, 1.0, 0.0); ArP1.x = -1.0; ArP1.y = 1.0; ArP1.z = 0.0; ArP2.x = -1.0; ArP2.y = 0.0; ArP2.z = 1.0; ArP3.x = -1.1; ArP3.y = 1.0; ArP3.z = 0.0; ArcGeo.FromThreePoints(ArP1, ArP2, ArP3, false); objcts[5] = msgArc.Create(ArcGeo); msgContour cnt1 = msgContour.CreateContour(objcts); scene.AttachObject(cnt1); cnt1.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); cnt1.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgPointStruct point_in_plane = new msgPointStruct(1.0, -4.0, 0.0); bool close = false; msg3DObject pipO = (msg3DObject)msgKinematic.Pipe(ar, null, cnt1, point_in_plane, 0.0, ref close); scene.AttachObject(pipO); pipO.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 25); msgVectorStruct transV1 = new msgVectorStruct(2.5, 1, 0); pipO.InitTempMatrix().Translate(transV1); pipO.ApplyTempMatrix(); pipO.DestroyTempMatrix(); }
private static void Draw3DObject(msg3DObject obj3D, RenderingMode mode, bool selSubObjects, bool asHot) { msgAllTrianglesStruct trngls = obj3D.GetTriangles(); bool Tex = false; if (mode == RenderingMode.GL_RENDER) { OpenGLControl.glPushAttrib(OpenGLControl.GL_ENABLE_BIT | OpenGLControl.GL_LINE_BIT | OpenGLControl.GL_CURRENT_BIT | OpenGLControl.GL_LIGHTING_BIT | OpenGLControl.GL_TEXTURE_BIT); OpenGLControl.glPushMatrix(); if (obj3D.GetTempMatrix() != null) { double[] transData = GetDoubles(obj3D.GetTempMatrix().GetTransparentData().values); unsafe { fixed(double *matrixPtr = transData) { OpenGLControl.glMultMatrixd(matrixPtr); } } } unsafe { double[] worldData = GetDoubles(obj3D.GetWorldMatrixData().values); fixed(double *matrixPtr = worldData) { OpenGLControl.glMultMatrixd(matrixPtr); } } if (trngls != null && (draw_triangles_regime || (obj3D.GetAttribute(msgObjectAttrEnum.SG_OA_DRAW_STATE) & (ushort)SG_OA_DRAW_STATEValuesEnum.SGDS_FULL) > 0)) { uint Face = 0; if (obj3D.Get3DObjectType() == msg3DObjectTypeEnum.SG_BODY) { Face = OpenGLControl.GL_FRONT; OpenGLControl.glEnable(OpenGLControl.GL_CULL_FACE); OpenGLControl.glLightModelf(OpenGLControl.GL_LIGHT_MODEL_TWO_SIDE, OpenGLControl.GL_FALSE); } else if (obj3D.Get3DObjectType() == msg3DObjectTypeEnum.SG_SURFACE) { Face = OpenGLControl.GL_FRONT_AND_BACK; OpenGLControl.glDisable(OpenGLControl.GL_CULL_FACE); OpenGLControl.glLightModelf(OpenGLControl.GL_LIGHT_MODEL_TWO_SIDE, OpenGLControl.GL_TRUE); } float[] c_mat = new float[4]; float[] clrs = GetColorByIndex(obj3D.GetAttribute(msgObjectAttrEnum.SG_OA_COLOR)); c_mat[0] = clrs[0]; //0.0f; c_mat[1] = clrs[1]; //0.5f; c_mat[2] = clrs[2]; //0.75f; c_mat[3] = 1.0f; OpenGLControl.glMaterialfv(Face, OpenGLControl.GL_AMBIENT, c_mat); c_mat[0] = clrs[0]; //0.0f; c_mat[1] = clrs[1]; //0.5f; c_mat[2] = clrs[2]; //1.0f; c_mat[3] = 1.0f; OpenGLControl.glMaterialfv(Face, OpenGLControl.GL_DIFFUSE, c_mat); c_mat[0] = 0.6f; //0.2f; c_mat[1] = 0.6f; //0.2f; c_mat[2] = 0.6f; //0.2f; c_mat[3] = 1.0f; OpenGLControl.glMaterialfv(Face, OpenGLControl.GL_SPECULAR, c_mat); OpenGLControl.glMaterialf(Face, OpenGLControl.GL_SHININESS, 128); c_mat[0] = 0.0f; c_mat[1] = 0.0f; c_mat[2] = 0.0f; c_mat[3] = 1.0f; OpenGLControl.glMaterialfv(Face, OpenGLControl.GL_EMISSION, c_mat); OpenGLControl.glHint(OpenGLControl.GL_LINE_SMOOTH_HINT, OpenGLControl.GL_NICEST); OpenGLControl.glEnable(OpenGLControl.GL_NORMALIZE); OpenGLControl.glEnable(OpenGLControl.GL_LIGHTING); if (draw_triangles_regime) { OpenGLControl.glPolygonMode(OpenGLControl.GL_FRONT_AND_BACK, OpenGLControl.GL_LINE); } OpenGLControl.glBegin(OpenGLControl.GL_TRIANGLES); OpenGLControl.glBegin(OpenGLControl.GL_TRIANGLES); for (int i = 0; i < trngls.allVertex.Length; i += 3) { OpenGLControl.glNormal3d(trngls.allNormals[i].x, trngls.allNormals[i].y, trngls.allNormals[i].z); OpenGLControl.glVertex3d(trngls.allVertex[i].x, trngls.allVertex[i].y, trngls.allVertex[i].z); OpenGLControl.glNormal3d(trngls.allNormals[i + 1].x, trngls.allNormals[i + 1].y, trngls.allNormals[i + 1].z); OpenGLControl.glVertex3d(trngls.allVertex[i + 1].x, trngls.allVertex[i + 1].y, trngls.allVertex[i + 1].z); OpenGLControl.glNormal3d(trngls.allNormals[i + 2].x, trngls.allNormals[i + 2].y, trngls.allNormals[i + 2].z); OpenGLControl.glVertex3d(trngls.allVertex[i + 2].x, trngls.allVertex[i + 2].y, trngls.allVertex[i + 2].z); } OpenGLControl.glEnd(); if (draw_triangles_regime) { OpenGLControl.glPolygonMode(OpenGLControl.GL_FRONT_AND_BACK, OpenGLControl.GL_FILL); } } } }