private Block BuildBlock() { Block myBlock = new Block("ArrowWithAttributes"); Line l = new Line(0, 0, 10, 0); Triangle t = new Triangle(new Point3D(0, -1.5), new Point3D(0, 1.5), new Point3D(1.5, 0)); t.Translate(10, 0, 0); l.ColorMethod = t.ColorMethod = colorMethodType.byParent; devDept.Eyeshot.Entities.Attribute a1 = new devDept.Eyeshot.Entities.Attribute(5, 0.2, 0, "att1", "Top Text", 0.8); a1.Alignment = devDept.Eyeshot.Entities.Text.alignmentType.BottomCenter; devDept.Eyeshot.Entities.Attribute a2 = new devDept.Eyeshot.Entities.Attribute(5, -0.4, 0, "att2", "Bottom Text", 0.8); a2.Alignment = devDept.Eyeshot.Entities.Text.alignmentType.TopCenter; l.ColorMethod = t.ColorMethod = a1.ColorMethod = a2.ColorMethod = colorMethodType.byParent; myBlock.Entities.Add(l); myBlock.Entities.Add(t); myBlock.Entities.Add(a1); myBlock.Entities.Add(a2); return(myBlock); }
private void BuildAssembly() { model1.AntiAliasing = (antiAliasingCheckBox.IsChecked == true) ? true : false; model1.Rendered.PlanarReflections = (planarCheckBox.IsChecked == true) ? true : false; model1.UseShaders = (shadersCheckBox.IsChecked == true) ? true : false; model1.WriteDepthForTransparents = (depthCheckBox.IsChecked == true) ? true : false; model1.Flat.ShowEdges = (edgesCheckBox.IsChecked == true) ? true : false; model1.HiddenLines.ShowEdges = (edgesCheckBox.IsChecked == true) ? true : false; model1.Rendered.ShowEdges = (edgesCheckBox.IsChecked == true) ? true : false; model1.Shaded.ShowEdges = (edgesCheckBox.IsChecked == true) ? true : false; model1.Wireframe.ShowEdges = (edgesCheckBox.IsChecked == true) ? true : false; _entityList.Clear(); model1.Entities.Clear(); model1.Blocks.Clear(); if (model1.Materials.Count > 0) { if (!transparencyCheckBox.IsChecked == true) { model1.Materials[_wallMatName].Diffuse = System.Drawing.Color.FromArgb(25, 150, 25); } else { model1.Materials[_wallMatName].Diffuse = System.Drawing.Color.FromArgb(100, 25, 150, 25); } } // Variables for unique Mesh (SingleMesh) List <Point3D> globalVerts = new List <Point3D>(); List <IndexTriangle> globalTris = new List <IndexTriangle>(); int offset = globalVerts.Count; // Pillar column block devDept.Eyeshot.Block column = new devDept.Eyeshot.Block("squareCol"); // creates a gray box Mesh m1 = Mesh.CreateBox(COLUMN_B, COLUMN_H, COLUMN_L); // apply texture if Texture is true if (textureCheckBox.IsChecked == true) { m1.ApplyMaterial("Bricks", textureMappingType.Cubic, 1, 1); } else { m1.ColorMethod = colorMethodType.byEntity; m1.Color = System.Drawing.Color.LightGray; m1.MaterialName = _concreteMatName; } for (int i = 0; i < m1.Vertices.Length; i++) { globalVerts.Add(m1.Vertices[i]); } for (int i = 0; i < m1.Triangles.Length; i++) { globalTris.Add(new ColorTriangle(offset + m1.Triangles[i].V1, offset + m1.Triangles[i].V2, offset + m1.Triangles[i].V3, System.Drawing.Color.Gray)); } Plane p = new Plane(new Vector3D(0, 1, 0)); devDept.Eyeshot.Entities.Attribute at = new devDept.Eyeshot.Entities.Attribute(p, new Point3D(-(TEXT_HEIGHT + TEXT_PAD), COLUMN_B / 2, COLUMN_L / 2), "Name", "Frame", TEXT_HEIGHT); at.Alignment = devDept.Eyeshot.Entities.Text.alignmentType.BaselineCenter; at.UpsideDown = true; column.Entities.Add(at); column.Entities.Add(m1); // adds the block to the master block dictionary model1.Blocks.Add(column); BlockReference reference; // Beam devDept.Eyeshot.Block beam = new devDept.Eyeshot.Block("beam"); // creates a gray box Mesh m2 = Mesh.CreateBox(BEAM_B, BEAM_L, BEAM_H); m2.ColorMethod = colorMethodType.byEntity; m2.Color = System.Drawing.Color.LightGray; m2.MaterialName = _concreteMatName; offset = globalVerts.Count; for (int i = 0; i < m2.Vertices.Length; i++) { globalVerts.Add(m2.Vertices[i]); } for (int i = 0; i < m2.Triangles.Length; i++) { globalTris.Add(new ColorTriangle(offset + m2.Triangles[i].V1, offset + m2.Triangles[i].V2, offset + m2.Triangles[i].V3, System.Drawing.Color.Gray)); } beam.Entities.Add(m2); p = new Plane(new Vector3D(1, 0, 0)); at = new devDept.Eyeshot.Entities.Attribute(p, new Point3D(BEAM_B / 2, BEAM_L / 2, BEAM_H + TEXT_PAD), "Name", "Frame", TEXT_HEIGHT); at.Alignment = devDept.Eyeshot.Entities.Text.alignmentType.BaselineCenter; at.Color = System.Drawing.Color.Green; at.ColorMethod = colorMethodType.byEntity; beam.Entities.Add(at); // adds the block to the master block dictionary model1.Blocks.Add(beam); // Shell devDept.Eyeshot.Block shell = new devDept.Eyeshot.Block("shell"); double shellB = BEAM_L / _shellSubValue; double shellH = COLUMN_L / _shellSubValue; // Mesh Mesh m3 = Mesh.CreateBox(shellB, SHELL_TICKNESS, shellH); m3.ColorMethod = colorMethodType.byEntity; m3.Color = System.Drawing.Color.LightGreen; m3.MaterialName = "wallMat"; shell.Entities.Add(m3); // adds the block to the master block dictionary model1.Blocks.Add(shell); for (int k = 0; k < _floorsValue; k++) { for (int j = 0; j <= _bayYValue; j++) { for (int i = 0; i <= _bayXValue; i++) { if (pillarsCheckBox.IsChecked == true) { reference = new BlockReference(i * BEAM_L - COLUMN_B / 2, j * BEAM_L - COLUMN_H / 2, k * COLUMN_L, "squareCol", 1, 1, 1, 0); if ((structureType)structureModeEnumButton.Value == structureType.SingleMesh) { Mesh mm = (Mesh)model1.Blocks["squareCol"].Entities[1].Clone(); mm.Translate(i * BEAM_L - COLUMN_B / 2, j * BEAM_L - COLUMN_H / 2, k * COLUMN_L); offset = globalVerts.Count; globalVerts.AddRange(mm.Vertices); for (int n = 0; n < mm.Triangles.Length; n++) { globalTris.Add(new ColorTriangle(offset + mm.Triangles[n].V1, offset + mm.Triangles[n].V2, offset + mm.Triangles[n].V3, System.Drawing.Color.Gray)); } } if (labelCheckBox.IsChecked == true) { reference.Attributes.Add("Name", string.Format("Pillar_{0},{1},{2}", i, j, k)); } _entityList.Add(reference); } if (showBeamXCheckBox.IsChecked == true) { if (j <= _bayYValue && i < _bayXValue) { // Parallel beams to X Transformation t = new Transformation(); t.Rotation(-Math.PI / 2, Vector3D.AxisZ); Transformation t2 = new Transformation(); t2.Translation(i * BEAM_L, j * BEAM_L + BEAM_B / 2, (k + 1) * COLUMN_L - BEAM_H / 2); reference = new BlockReference(t2 * t, "beam"); if ((structureType)structureModeEnumButton.Value == structureType.SingleMesh) { Mesh mm = (Mesh)model1.Blocks["beam"].Entities[0].Clone(); mm.TransformBy(t2 * t); offset = globalVerts.Count; globalVerts.AddRange(mm.Vertices); for (int n = 0; n < mm.Triangles.Length; n++) { globalTris.Add(new ColorTriangle(offset + mm.Triangles[n].V1, offset + mm.Triangles[n].V2, offset + mm.Triangles[n].V3, System.Drawing.Color.Gray)); } } if (labelCheckBox.IsChecked == true) { reference.Attributes.Add("Name", string.Format("Beam_{0},{1},{2}", i, j, k)); } _entityList.Add(reference); } } if (showBeamYCheckBox.IsChecked == true) { if (i <= _bayXValue && j < _bayYValue) { // Parallel beams to X Transformation t = new Transformation(); t.Translation(i * BEAM_L - BEAM_B / 2, j * BEAM_L, (k + 1) * COLUMN_L - BEAM_H / 2); reference = new BlockReference(t, "beam"); if ((structureType)structureModeEnumButton.Value == structureType.SingleMesh) { Mesh mm = (Mesh)model1.Blocks["beam"].Entities[0].Clone(); mm.TransformBy(t); offset = globalVerts.Count; globalVerts.AddRange(mm.Vertices); for (int n = 0; n < mm.Triangles.Length; n++) { globalTris.Add(new ColorTriangle(offset + mm.Triangles[n].V1, offset + mm.Triangles[n].V2, offset + mm.Triangles[n].V3, System.Drawing.Color.Gray)); } } if (labelCheckBox.IsChecked == true) { reference.Attributes.Add("Name", string.Format("Beam_{0},{1},{2}", i, j, k)); } _entityList.Add(reference); } } if (shellCheckBox.IsChecked == true) { if ((j == 0 || j == _bayYValue) && i < _bayXValue) { for (int i1 = 0; i1 < _shellSubValue; i1++) { for (int j1 = 0; j1 < _shellSubValue; j1++) { Transformation t = new Transformation(); t.Translation(i * BEAM_L + i1 * shellB, j * BEAM_L - SHELL_TICKNESS / 2, k * COLUMN_L + j1 * shellH); reference = new BlockReference(t, "shell"); if ((structureType)structureModeEnumButton.Value == structureType.SingleMesh) { Mesh mm = (Mesh)model1.Blocks["shell"].Entities[0].Clone(); mm.TransformBy(t); offset = globalVerts.Count; globalVerts.AddRange(mm.Vertices); for (int n = 0; n < mm.Triangles.Length; n++) { globalTris.Add(new ColorTriangle(offset + mm.Triangles[n].V1, offset + mm.Triangles[n].V2, offset + mm.Triangles[n].V3, System.Drawing.Color.FromArgb(123, System.Drawing.Color.LightGreen))); } } _entityList.Add(reference); } } } } if (nodesCheckBox.IsChecked == true) { Joint joint1 = new Joint(i * BEAM_L, j * BEAM_L, k * COLUMN_L, 40, 2); joint1.Color = System.Drawing.Color.Blue; joint1.ColorMethod = colorMethodType.byEntity; Joint joint2 = new Joint(i * BEAM_L, j * BEAM_L, (k + 1) * COLUMN_L, 40, 2); joint2.Color = System.Drawing.Color.Blue; joint2.ColorMethod = colorMethodType.byEntity; _entityList.Add(joint1); _entityList.Add(joint2); } } if (shellCheckBox.IsChecked == true) { if (j == 0) { for (int l = 0; l < _bayYValue; l++) { for (int i1 = 0; i1 < _shellSubValue; i1++) { for (int j1 = 0; j1 < _shellSubValue; j1++) { Transformation t = new Transformation(); t.Translation(l * BEAM_L + i1 * shellB, j * BEAM_L - SHELL_TICKNESS / 2, k * COLUMN_L + j1 * shellH); Transformation t2 = new Transformation(); t2.Rotation(Math.PI / 2, Vector3D.AxisZ); reference = new BlockReference(t2 * t, "shell"); if ((structureType)structureModeEnumButton.Value == structureType.SingleMesh) { Mesh mm = (Mesh)model1.Blocks["shell"].Entities[0].Clone(); mm.TransformBy(t2 * t); offset = globalVerts.Count; globalVerts.AddRange(mm.Vertices); for (int n = 0; n < mm.Triangles.Length; n++) { globalTris.Add(new ColorTriangle(offset + mm.Triangles[n].V1, offset + mm.Triangles[n].V2, offset + mm.Triangles[n].V3, System.Drawing.Color.FromArgb(123, System.Drawing.Color.LightGreen))); } } _entityList.Add(reference); } } } } if (j == _bayYValue) { for (int l = 0; l < _bayYValue; l++) { for (int i1 = 0; i1 < _shellSubValue; i1++) { for (int j1 = 0; j1 < _shellSubValue; j1++) { Transformation t = new Transformation(); t.Translation(l * BEAM_L + i1 * shellB, -SHELL_TICKNESS / 2, k * COLUMN_L + j1 * shellH); Transformation t2 = new Transformation(); t2.Rotation(Math.PI / 2, Vector3D.AxisZ); Transformation t3 = new Transformation(); t3.Translation(_bayXValue * BEAM_L, 0, 0); reference = new BlockReference(t3 * t2 * t, "shell"); if ((structureType)structureModeEnumButton.Value == structureType.SingleMesh) { Mesh mm = (Mesh)model1.Blocks["shell"].Entities[0].Clone(); mm.TransformBy(t3 * t2 * t); offset = globalVerts.Count; globalVerts.AddRange(mm.Vertices); for (int n = 0; n < mm.Triangles.Length; n++) { globalTris.Add(new ColorTriangle(offset + mm.Triangles[n].V1, offset + mm.Triangles[n].V2, offset + mm.Triangles[n].V3, System.Drawing.Color.FromArgb(123, System.Drawing.Color.LightGreen))); } } _entityList.Add(reference); } } } } } } } _buildingMesh = new Mesh(globalVerts, globalTris); _buildingMesh.ColorMethod = colorMethodType.byEntity; model1.Entities.AddRange(_entityList); switch ((structureType)structureModeEnumButton.Value) { case structureType.Flattened: { Entity[] entList = model1.Entities.Explode(); model1.Entities.Clear(); model1.Entities.AddRange(entList); model1.Invalidate(); break; } case structureType.SingleMesh: { model1.Entities.Clear(); model1.Entities.Add(_buildingMesh); model1.Invalidate(); break; } case structureType.Assembly: { model1.Invalidate(); break; } } TreeViewUtility.PopulateTree(treeView1, model1.Entities.ToList(), model1.Blocks); }
protected override void OnContentRendered(EventArgs e) { model1.AutoHideLabels = true; model1.GetGrid().AutoSize = true; model1.GetGrid().Step = 100; string concreteMatName = "Concrete"; string steelMatName = "Blue steel"; model1.Materials.Add(new Material(concreteMatName, System.Drawing.Color.FromArgb(25, 25, 25), System.Drawing.Color.LightGray, System.Drawing.Color.FromArgb(31, 31, 31), .05f, 0)); model1.Materials.Add(new Material(steelMatName, System.Drawing.Color.RoyalBlue)); // square column block Block b = new Block("squareCol"); // creates a gray box Mesh m1 = Mesh.CreateBox(30, 30, 270); m1.ColorMethod = colorMethodType.byEntity; m1.Color = System.Drawing.Color.Gray; m1.MaterialName = concreteMatName; // adds it to the block b.Entities.Add(m1); // creates a new black polyline LinearPath steel = new LinearPath(); steel.Vertices = new Point3D[8]; steel.Vertices[0] = new Point3D(4, 4, -20); steel.Vertices[1] = new Point3D(4, 4, 290); steel.Vertices[2] = new Point3D(4, 26, 290); steel.Vertices[3] = new Point3D(4, 26, -20); steel.Vertices[4] = new Point3D(26, 26, -20); steel.Vertices[5] = new Point3D(26, 26, 290); steel.Vertices[6] = new Point3D(26, 4, 290); steel.Vertices[7] = new Point3D(26, 4, -20); steel.ColorMethod = colorMethodType.byEntity; steel.Color = System.Drawing.Color.Black; // adds it to the block b.Entities.Add(steel); // creates a price tag devDept.Eyeshot.Entities.Attribute at = new devDept.Eyeshot.Entities.Attribute(new Point3D(0, -15), "Price", "$25,000", 10); // adds it to the block b.Entities.Add(at); // adds the block to the master block dictionary model1.Blocks.Add(b); // inserts the "SquareCol" block many times: this is a HUGE memory and graphic resources saving for big models BlockReference reference; for (int k = 0; k < 4; k++) { for (int j = 0; j < 5; j++) { for (int i = 0; i < 5; i++) { if (i < 2 && j < 2) { System.Diagnostics.Debug.WriteLine("No columns here"); } else { reference = new BlockReference(i * 500, j * 400, k * 300, "squareCol", 1, 1, 1, 0); // defines a different price for each one reference.Attributes.Add("Price", "$" + i + ",000"); model1.Entities.Add(reference); } } } } // again as above b = new Block("floor"); double width = 2030; double depth = 1630; double dimA = 1000; double dimB = 800; Point2D[] outerPoints = new Point2D[7]; outerPoints[0] = new Point2D(0, dimB); outerPoints[1] = new Point2D(dimA, dimB); outerPoints[2] = new Point2D(dimA, 0); outerPoints[3] = new Point2D(width, 0); outerPoints[4] = new Point2D(width, depth); outerPoints[5] = new Point2D(0, depth); outerPoints[6] = (Point2D)outerPoints[0].Clone(); LinearPath outer = new LinearPath(Plane.XY, outerPoints); Point2D[] innerPoints = new Point2D[5]; innerPoints[0] = new Point2D(1530, 800); innerPoints[1] = new Point2D(1530, 950); innerPoints[2] = new Point2D(1650, 950); innerPoints[3] = new Point2D(1650, 800); innerPoints[4] = (Point2D)innerPoints[0].Clone(); LinearPath inner = new LinearPath(Plane.XY, innerPoints); devDept.Eyeshot.Entities.Region reg = new devDept.Eyeshot.Entities.Region(outer, inner); Mesh m2 = reg.ExtrudeAsMesh(30, 0.1, Mesh.natureType.Plain); m2.ColorMethod = colorMethodType.byEntity; m2.Color = System.Drawing.Color.White; m2.MaterialName = concreteMatName; b.Entities.Add(m2); model1.Blocks.Add(b); for (int i = 0; i < 4; i++) { reference = new BlockReference(0, 0, 270 + i * 300, "floor", 1, 1, 1, 0); model1.Entities.Add(reference); } string brickMatName = "Wall bricks"; model1.Materials.Add(new Material(brickMatName, new Bitmap("../../../../../../dataset/Assets/Textures/Bricks.jpg"))); b = new Block("brickWall"); Mesh rm = Mesh.CreateBox(470, 30, 270, Mesh.natureType.RichPlain); rm.ApplyMaterial(brickMatName, textureMappingType.Cubic, 1.5, 1.5); rm.ColorMethod = colorMethodType.byEntity; rm.Color = System.Drawing.Color.Chocolate; b.Entities.Add(rm); model1.Blocks.Add(b); for (int j = 1; j < 4; j++) { for (int i = 0; i < 2; i++) { reference = new BlockReference(1030 + i * 500, 0, j * 300, "brickWall", 1, 1, 1, 0); model1.Entities.Add(reference); } } // Cylindrical column b = new Block("CylindricalCol"); Mesh m3 = Mesh.CreateCylinder(20, 270, 32, Mesh.natureType.Smooth); m3.ColorMethod = colorMethodType.byEntity; m3.Color = System.Drawing.Color.RoyalBlue; m3.MaterialName = steelMatName; b.Entities.Add(m3); model1.Blocks.Add(b); for (int j = 0; j < 2; j++) { for (int i = 0; i < 3; i++) { reference = new BlockReference(100 + i * 400, 115 + j * 200, 0, "CylindricalCol", 1, 1, 1, 0); model1.Entities.Add(reference); } } // Roof (not a block this time) Mesh roof = Mesh.CreateBox(880, 280, 30); // Edits vertices to add a slope roof.Vertices[4].Z = 15; roof.Vertices[7].Z = 15; roof.Translate(60, 75, 270); model1.Entities.Add(roof, System.Drawing.Color.DimGray); // Labels LeaderAndText lat = new LeaderAndText(new Point3D(0, 800, 1200), "Height = 12 m", new System.Drawing.Font("Tahoma", 8.25f), System.Drawing.Color.White, new Vector2D(0, 20)); lat.FillColor = System.Drawing.Color.Black; model1.Labels.Add(lat); LeaderAndText ff; ff = new LeaderAndText(new Point3D(1000, 1000, 300), "First floor", new System.Drawing.Font("Tahoma", 8.25f), System.Drawing.Color.White, new Vector2D(0, 10)); ff.FillColor = System.Drawing.Color.Red; ff.Alignment = System.Drawing.ContentAlignment.BottomCenter; model1.Labels.Add(ff); // fits the model in the viewport model1.ZoomFit(); // refresh the viewport model1.Invalidate(); base.OnContentRendered(e); }
public bool AreEqual(Entity ent1, Entity ent2) { if (ent1 is CompositeCurve) { CompositeCurve cc1 = (CompositeCurve)ent1; CompositeCurve cc2 = (CompositeCurve)ent2; if (cc1.CurveList.Count == cc2.CurveList.Count) { int equalCurvesInListCount = 0; foreach (Entity entC in cc1.CurveList) { foreach (Entity entC2 in cc2.CurveList) { if (entC.GetType() == entC2.GetType()) { if (CompareIfEqual(entC, entC2)) { equalCurvesInListCount++; break; } } } } if (cc1.CurveList.Count == equalCurvesInListCount) { return(true); } } } else if (ent1 is LinearPath) { LinearPath lp1 = (LinearPath)ent1; LinearPath lp2 = (LinearPath)ent2; if (lp1.Vertices.Length == lp2.Vertices.Length) { for (int i = 0; i < lp1.Vertices.Length; i++) { if (!(lp1.Vertices[i] == lp2.Vertices[i])) { return(false); } } return(true); } } else if (ent1 is PlanarEntity) { PlanarEntity pe1 = (PlanarEntity)ent1; PlanarEntity pe2 = (PlanarEntity)ent2; if ( pe1.Plane.AxisZ == pe2.Plane.AxisZ && pe1.Plane.AxisX == pe2.Plane.AxisX ) { if (ent1 is Arc) { Arc arc1 = (Arc)ent1; Arc arc2 = (Arc)ent2; if ( arc1.Center == arc2.Center && arc1.Radius == arc2.Radius && arc1.Domain.Min == arc2.Domain.Min && arc1.Domain.Max == arc2.Domain.Max ) { return(true); } } else if (ent1 is Circle) { Circle c1 = (Circle)ent1; Circle c2 = (Circle)ent2; if ( c1.Center == c2.Center && c1.Radius == c2.Radius ) { return(true); } } else if (ent1 is EllipticalArc) { EllipticalArc e1 = (EllipticalArc)ent1; EllipticalArc e2 = (EllipticalArc)ent2; if ( e1.Center == e2.Center && e1.RadiusX == e2.RadiusX && e1.RadiusY == e2.RadiusY && e1.Domain.Low == e2.Domain.Low && e1.Domain.High == e2.Domain.High ) { return(true); } } else if (ent1 is Ellipse) { Ellipse e1 = (Ellipse)ent1; Ellipse e2 = (Ellipse)ent2; if ( e1.Center == e2.Center && e1.RadiusX == e2.RadiusX && e1.RadiusY == e2.RadiusY ) { return(true); } } else if (ent1 is Text) { if (ent1 is Dimension) { Dimension dim1 = (Dimension)ent1; Dimension dim2 = (Dimension)ent2; if ( dim1.InsertionPoint == dim2.InsertionPoint && dim1.DimLinePosition == dim2.DimLinePosition ) { if (ent1 is AngularDim) { AngularDim ad1 = (AngularDim)ent1; AngularDim ad2 = (AngularDim)ent2; if ( ad1.ExtLine1 == ad2.ExtLine1 && ad1.ExtLine2 == ad2.ExtLine2 && ad1.StartAngle == ad2.StartAngle && ad1.EndAngle == ad2.EndAngle && ad1.Radius == ad2.Radius ) { return(true); } } else if (ent1 is LinearDim) { LinearDim ld1 = (LinearDim)ent1; LinearDim ld2 = (LinearDim)ent2; if ( ld1.ExtLine1 == ld2.ExtLine1 && ld1.ExtLine2 == ld2.ExtLine2 ) { return(true); } } else if (ent1 is DiametricDim) { DiametricDim dd1 = (DiametricDim)ent1; DiametricDim dd2 = (DiametricDim)ent2; if ( dd1.Distance == dd2.Distance && dd1.Radius == dd2.Radius && dd1.CenterMarkSize == dd2.CenterMarkSize ) { return(true); } } else if (ent1 is RadialDim) { RadialDim rd1 = (RadialDim)ent1; RadialDim rd2 = (RadialDim)ent2; if ( rd1.Radius == rd2.Radius && rd1.CenterMarkSize == rd2.CenterMarkSize ) { return(true); } } else if (ent1 is OrdinateDim) { OrdinateDim od1 = (OrdinateDim)ent1; OrdinateDim od2 = (OrdinateDim)ent2; if ( od1.DefiningPoint == od2.DefiningPoint && od1.Origin == od2.Origin && od1.LeaderEndPoint == od2.LeaderEndPoint ) { return(true); } } else { Console.Write("Type " + ent1.GetType() + " not implemented."); return(true); } } } else if (ent1 is devDept.Eyeshot.Entities.Attribute) { devDept.Eyeshot.Entities.Attribute att1 = (devDept.Eyeshot.Entities.Attribute)ent1; devDept.Eyeshot.Entities.Attribute att2 = (devDept.Eyeshot.Entities.Attribute)ent2; if ( att1.Value == att2.Value && att1.InsertionPoint == att2.InsertionPoint ) { return(true); } } else { Text tx1 = (Text)ent1; Text tx2 = (Text)ent2; if ( tx1.InsertionPoint == tx2.InsertionPoint && tx1.TextString == tx2.TextString && tx1.StyleName == tx2.StyleName && tx1.WidthFactor == tx2.WidthFactor && tx1.Height == tx2.Height ) { return(true); } } } else { Console.Write("Type " + ent1.GetType() + " not implemented."); return(true); } } } else if (ent1 is Line) { Line line1 = (Line)ent1; Line line2 = (Line)ent2; if ( line1.StartPoint == line2.StartPoint && line1.EndPoint == line2.EndPoint ) { return(true); } } else if (ent1 is devDept.Eyeshot.Entities.Point) { devDept.Eyeshot.Entities.Point point1 = (devDept.Eyeshot.Entities.Point)ent1; devDept.Eyeshot.Entities.Point point2 = (devDept.Eyeshot.Entities.Point)ent2; if ( point1.Position == point2.Position ) { return(true); } } #if NURBS else if (ent1 is Curve) { Curve cu1 = (Curve)ent1; Curve cu2 = (Curve)ent2; if ( cu1.ControlPoints.Length == cu2.ControlPoints.Length && cu1.KnotVector.Length == cu2.KnotVector.Length && cu1.Degree == cu2.Degree ) { for (int k = 0; k < cu1.ControlPoints.Length; k++) { if (cu1.ControlPoints[k] != cu2.ControlPoints[k]) { return(false); } } for (int k = 0; k < cu1.KnotVector.Length; k++) { if (cu1.KnotVector[k] != cu2.KnotVector[k]) { return(false); } } return(true); } } #endif else { Console.Write("Type " + ent1.GetType() + " not implemented."); return(true); } return(false); }