public Ordinate SelectVertexDatumUp(ModelDoc2 swModel, double[] boundBox, BlockPosition left, bool clear = false) { var sizeX = boundBox[2] - boundBox[0]; if (sizeX < 0) sizeX = -sizeX; var sizeY = boundBox[3] - boundBox[1]; if (sizeY < 0) sizeY = -sizeY; var etalon = sizeX > sizeY ? sizeY : sizeX; double step = etalon / 40; var ordinate = new Ordinate(0, 0); if (left.AsBoolean()) { for (int iX = 0; iX <= 30; iX++) { for (int iY = 0; iY <= 30; iY++) { var boolstatus = swModel.Extension.SelectByID2("", "VERTEX", boundBox[0] + step * iX, boundBox[3] - step * iY, 0.0, true, (int) swAutodimMark_e.swAutodimMarkOriginDatum, null, 0); if (boolstatus) { ordinate.X = boundBox[0] + step * iX; ordinate.Y = boundBox[3] - step * iY; if (clear) swModel.ClearSelection(); return ordinate; } } } } else { for (int iX = 0; iX <= 30; iX++) { for (int iY = 0; iY <= 30; iY++) { var boolstatus = swModel.Extension.SelectByID2("", "VERTEX", boundBox[2] - step * iX, boundBox[3] - step * iY, 0.0, true, (int) swAutodimMark_e.swAutodimMarkOriginDatum, null, 0); if (boolstatus) { ordinate.X = boundBox[2] - step * iX; ordinate.Y = boundBox[3] - step * iY; if (clear) swModel.ClearSelection(); return ordinate; } } } } if (clear) swModel.ClearSelection(); return ordinate; }
public InsertDimension(ISldWorks swApp, Entity entity, Ordinate vertex, SelectData swSelData) { _swModel = swApp.IActiveDoc2; _ent = entity; _vertex = vertex; _swSelData = swSelData; }
public Ordinate GetVertexFromBlock(ModelDoc2 swModel, View drView, double vScaleRat, bool up) { Ordinate vertex = null; var objSketchBlockDef = swModel.SketchManager.GetSketchBlockDefinitions(); if (objSketchBlockDef != null) { var objSketBlDefs = (object[]) objSketchBlockDef; foreach (var objSketBlDef in objSketBlDefs) { var swSketBlDef = (SketchBlockDefinition) objSketBlDef; //if ((Path.GetFileNameWithoutExtension(swSketBlDef.FileName) == ("DS" + drView.Name) && up) || //(Path.GetFileNameWithoutExtension(swSketBlDef.FileName) == ("DE" + drView.Name) && !up)) { var objSketBlInsts = (object[]) swSketBlDef.GetInstances(); if (objSketBlInsts != null) foreach (var objSketBlInst in objSketBlInsts) { var swSketBlInst = (SketchBlockInstance) objSketBlInst; if ((swSketBlInst.Name.Contains("DS" + drView.Name) && up) || (swSketBlInst.Name.Contains("DE" + drView.Name) && !up)) { var pos = (double[]) drView.Position; var point = swSketBlInst.InstancePosition; var dims = (double[]) point.ArrayData; double y = dims[1]/vScaleRat; double x = dims[0]/vScaleRat; x = pos[0] + x; y = pos[1] + y; vertex = new Ordinate(x, y); } } } } } return vertex; }
public bool SelectVertexDatum(ModelDoc2 swModel,Ordinate vertex) { return swModel.Extension.SelectByID2("", "VERTEX", vertex.X, vertex.Y, 0, true, (int)swAutodimMark_e.swAutodimMarkOriginDatum, null, 0); }
private Ordinate SetManualDiametrAndDepth(double diam, double depth, bool type) { var diamAndDepth = new Ordinate(diam, depth); if (type) { if (diam == 8 && depth == 0) { diamAndDepth.X = 8; diamAndDepth.Y = GetDepthFor(8); return diamAndDepth; } if (diam == 11 && depth == 0) { diamAndDepth.Y = 32; return diamAndDepth; } } else { if (diam == 8 && (depth == 12.5 || depth == 13)) { diamAndDepth.X = 8; diamAndDepth.Y = 12; return diamAndDepth; } if ((diam == 5) && ((depth == 6.1) || (depth == 1.6) || (depth == 12.5) || (depth == 13))) { diamAndDepth.X = 5; diamAndDepth.Y = 12; return diamAndDepth; } if (diam == 20 && depth == 0) { diamAndDepth.X = 20; diamAndDepth.Y = GetDepthFor(20); return diamAndDepth; } if (diam == 15.11) { diamAndDepth.X = 8; return diamAndDepth; } if (diam == 25 && depth == 0) { diamAndDepth.Y = 27; return diamAndDepth; } if (diam ==57 && depth == 0) { depth = 16; diamAndDepth.X = 57; diamAndDepth.Y = 16; } } return diamAndDepth; }
public double[] GetDimensionLineDirect(ModelDoc2 swModel, double[] boundBox, bool vertic,BlockPosition side, out double d, out Annotation annotation,out bool? blockSize,out Ordinate vertex,out Ordinate vertexS, double[] dsDim,double[] deDim,double[] endDim,string dsName,string deName) { blockSize = null; var swDrawing = (DrawingDoc) swModel; var drView = swDrawing.IActiveDrawingView; var scale = (double[]) drView.ScaleRatio; double vScaleRat = scale[1]; double[] doubles = null; d = 0; annotation = null; vertex = GetVertexFromBlock(swModel, drView, vScaleRat,true); if(!(vertex!=null && SelectVertexDatum(swModel, vertex))) vertex = SelectVertexDatumUp(swModel, boundBox, side); if (dsDim != null && deDim != null) { vertexS = GetVertexFromBlock(swModel, drView, vScaleRat, false); //swModel.ClearSelection2(true); swDrawing.ActivateView(drView.Name); bool tmp = swModel.Extension.SelectByID2(@"Точка вставки/" + dsName, "SKETCHPOINT", 0, 0, 0, false, 0, null, 0); tmp = swModel.Extension.SelectByID2(@"Точка вставки/" + deName, "SKETCHPOINT", 0, 0, 0, true, 0, null, 0); DisplayDimension dim1; if (vertic) dim1 = swModel.AddVerticalDimension2(0, 0, 0); else dim1 = swModel.AddHorizontalDimension2(0, 0, 0); dim1.GetDimension().DrivenState = (int)swDimensionDrivenState_e.swDimensionDriven; d = dim1.GetDimension().Value; if (vertic) { doubles = new double[3] { 1, 0, 0 }; } else { doubles = new double[3] {0, 1, 0}; } annotation = dim1.GetAnnotation(); } else { if (vertic) { vertexS = GetVertexFromBlock(swModel, drView, vScaleRat, false); if (!(vertexS != null && SelectVertexDatum(swModel, vertexS))) SelectVertexDatumDown(swModel, boundBox, side); else if (vertex != null) blockSize = vertex.X < vertexS.X; DisplayDimension dim = null; dim = swModel.IAddVerticalDimension2(0, 0, 0); if (dim != null) { d = dim.IGetDimension().Value; doubles = (double[]) dim.IGetDimension().DimensionLineDirection.ArrayData; if (blockSize != null) { vertexS.Y = vertexS.Y + (d/1000)/vScaleRat; } annotation = dim.IGetAnnotation(); } } else { vertexS = GetVertexFromBlock(swModel, drView, vScaleRat, false); if (!(vertexS != null && SelectVertexDatum(swModel, vertexS))) { vertexS = SelectVertexDatumUp(swModel, boundBox, side.Not()); } else if (vertex != null) blockSize = vertex.X < vertexS.X; var dim = swModel.AddHorizontalDimension2(0, 0, 0); if (dim != null) { d = dim.GetDimension().Value; doubles = (double[]) dim.GetDimension().DimensionLineDirection.ArrayData; annotation = dim.GetAnnotation(); } } } swModel.ClearSelection(); return doubles; }
public FoundCoordinate(ISldWorks swApp, Entity ent, Ordinate vertex, double[] dimLineH, double[] dimLineV, BlockPosition side,View swView,bool doThroughHoles) { _swApp = swApp; _swModel = swApp.IActiveDoc2; _side = side; _ent = ent; _vertex = vertex; _doThroughHoles = doThroughHoles; _swSelData = _swModel.ISelectionManager.CreateSelectData(); _swView = swView; _coordinate = FindCoord(dimLineH, dimLineV); }
private static double SetPositionHole(Annotation annotation, DisplayDimension displayDimension, Ordinate vertex, double x, double vScale, double[] boundBox, int numbers, string type, int posNumb, bool side) { string newstring; if (type.Contains("8.11h")) newstring = Convert.ToString(numbers + " отв. " + "<MOD-DIAM>" + "8" + type.Substring(type.IndexOf('h'))); else { if (type.Contains("7,33")) newstring = Convert.ToString(numbers + " отв. по схеме A25SK"); else newstring = Convert.ToString(numbers + " отв. " + "<MOD-DIAM>" + type); if (type.Contains("накернить")) newstring = Convert.ToString(numbers + " отв. накернить"); } displayDimension.SetText((int)swDimensionTextParts_e.swDimensionTextAll, newstring); if (side) annotation.SetPosition(vertex.X + x / 1000 / vScale, boundBox[1] - 0.004 * posNumb, 0); else annotation.SetPosition(vertex.X - x / 1000 / vScale, boundBox[1] - 0.004 * posNumb, 0); int textCount = newstring.Length; return (((double[])annotation.GetPosition())[0] + textCount * 0.001); }
private static void SetPosition(Dictionary<double, Annotation> dictionary, Ordinate vertex, double vScale, bool xOrY, BlockPosition side) { var x = dictionary.OrderBy(z => z.Key); int k = 1; foreach (var keyValuePair in x) { if (keyValuePair.Value != null) { switch (side) { case BlockPosition.LeftTopToRightBottom: { if (xOrY) { if (keyValuePair.Key > 100) keyValuePair.Value.SetPosition(vertex.X + keyValuePair.Key / 2000 / vScale, vertex.Y + 0.004 * k, 0); else keyValuePair.Value.SetPosition(vertex.X + keyValuePair.Key / 1000 / vScale + 0.006, vertex.Y + 0.004 * k, 0); } else { if (keyValuePair.Key > 100) keyValuePair.Value.SetPosition(vertex.X - 0.004 * k, vertex.Y - keyValuePair.Key / 2000 / vScale, 0); else keyValuePair.Value.SetPosition(vertex.X - 0.004 * k, vertex.Y - keyValuePair.Key / 1000 / vScale - 0.006, 0); } } break; case BlockPosition.RightTopToLeftBottom: { if (xOrY) { if (keyValuePair.Key > 100) keyValuePair.Value.SetPosition(vertex.X - keyValuePair.Key / 2000 / vScale, vertex.Y + 0.004 * k, 0); else keyValuePair.Value.SetPosition(vertex.X - keyValuePair.Key / 1000 / vScale - 0.006, vertex.Y + 0.004 * k, 0); } else { var tt1 = vertex.Y - keyValuePair.Key/2000/vScale; var tt2 = vertex.Y - keyValuePair.Key/1000/vScale - 0.006; if (keyValuePair.Key > 100) keyValuePair.Value.SetPosition(vertex.X + 0.004 * k, tt1, 0); else keyValuePair.Value.SetPosition(vertex.X + 0.004 * k, tt2, 0); } } break; case BlockPosition.LeftBottomToRightTop: { if (xOrY) { if (keyValuePair.Key > 100) keyValuePair.Value.SetPosition(vertex.X + keyValuePair.Key / 2000 / vScale, vertex.Y - 0.004 * k, 0); else keyValuePair.Value.SetPosition(vertex.X + keyValuePair.Key / 1000 / vScale + 0.006, vertex.Y - 0.004 * k, 0); } else { if (keyValuePair.Key > 100) keyValuePair.Value.SetPosition(vertex.X - 0.004 * k, vertex.Y + keyValuePair.Key / 2000 / vScale, 0); else keyValuePair.Value.SetPosition(vertex.X - 0.004 * k, vertex.Y + keyValuePair.Key / 1000 / vScale - 0.006, 0); } } break; case BlockPosition.RigthBottomToLeftTop: { if (xOrY) { if (keyValuePair.Key > 100) keyValuePair.Value.SetPosition(vertex.X - keyValuePair.Key / 2000 / vScale, vertex.Y - 0.004 * k, 0); else keyValuePair.Value.SetPosition(vertex.X - keyValuePair.Key / 1000 / vScale + 0.006, vertex.Y - 0.004 * k, 0); } else { if (keyValuePair.Key > 100) keyValuePair.Value.SetPosition(vertex.X + 0.004 * k, vertex.Y + keyValuePair.Key / 2000 / vScale, 0); else keyValuePair.Value.SetPosition(vertex.X + 0.004 * k, vertex.Y + keyValuePair.Key / 1000 / vScale - 0.006, 0); } } break; } k++; } } }
private static Common AnalizViewCoefficient(ModelDoc2 swModel, double[] boundBox,ref BlockPosition side, out double[] dimLinDirH, out double[] dimLinDirV, out bool? blockSize,out Ordinate vertex,out Ordinate vertexS,double[] dsDim,double[] deDim,double[] endDim,string dsName,string deName) { double x, y; Annotation annX, annY; using (var a = new GetDimensions()) { bool consider; var tmpSide = GetDimensions.GetBlockPosition(swModel, out consider);//a.GetBlockPosition(swModel,out consider); if (consider) // consider -принимать ли в расчет tmpSide side = tmpSide; dimLinDirH = a.GetDimensionLineDirect(swModel, boundBox, false, side, out x, out annX, out blockSize,out vertex,out vertexS,dsDim,deDim,endDim,dsName,deName); } using (var a = new GetDimensions()) { Ordinate vert, verts; dimLinDirV = a.GetDimensionLineDirect(swModel, boundBox, true, side, out y, out annY, out blockSize, out vert, out verts, dsDim, deDim, endDim, dsName, deName); if (verts != null) vertexS = verts; } return new Common(new Coord(new CoordX(x, annX), new CoordY(y, annY)), null); }
public Common2(Ordinate inOrdinate, Entity inEntity) { Ordinate = inOrdinate; Entity = inEntity; }