public static void AddFloorInScene(double size1, double size2, double x_shift, double y_shift, double z_shift) { msgObject[] objects_buffer = new msgObject[4]; objects_buffer[0] = msgLine.Create(size1 / 2.0, size2 / 2.0, 0.0, -size1 / 2.0, size2 / 2.0, 0.0); objects_buffer[1] = msgLine.Create(-size1 / 2.0, size2 / 2.0, 0.0, -size1 / 2.0, -size2 / 2.0, 0.0); objects_buffer[2] = msgLine.Create(-size1 / 2.0, -size2 / 2.0, 0.0, size1 / 2.0, -size2 / 2.0, 0.0); objects_buffer[3] = msgLine.Create(size1 / 2.0, -size2 / 2.0, 0.0, size1 / 2.0, size2 / 2.0, 0.0); msgContour cnt = msgContour.CreateContour(objects_buffer); msgObject floor = msgSurfaces.Face(cnt, null); msgObject.DeleteObject(cnt); msgScene.GetScene().AttachObject(floor); floor.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 25); msgVectorStruct transV = new msgVectorStruct(x_shift, y_shift, z_shift); floor.InitTempMatrix().Translate(transV); floor.ApplyTempMatrix(); floor.DestroyTempMatrix(); }
private static void DrawContour(msgContour objCont, RenderingMode mode, bool selSubObjects, bool asHot) { mIObjectsList objSubList = objCont.GetChildrenList(); msgObject curSubObj = objSubList.GetHead(); while (curSubObj != null) { DrawObject(Painter.RenderingMode.GL_RENDER, curSubObj, false, false); curSubObj = objSubList.GetNext(curSubObj); } }
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(); }