//understand private LJJSPoint GetPtZBByKDC(KeDuChiItem drawkdc, LJJSPoint jdptstart, double xval, double yval, double jdtop) { ZuoBiaoOper zbopp = new ZuoBiaoOper(FrameDesign.ValueCoordinate); LJJSPoint lrptstart = ZuoBiaoOper.UpdateLRStartPt(drawkdc.KDir, jdptstart, LineRoadEnvironment.LineRoadWidth); return(zbopp.GetDrawingZuoBiaoPt(lrptstart, drawkdc, xval, yval, jdtop, LineRoadEnvironment.LineRoadWidth)); }
public CurveHatch(JDStruc jdstruc, KeDuChiItem keDuChiItem, double lineRoadWidth) { this._jdstruc = jdstruc; this._keDuChiItem = keDuChiItem; this._jdptstart = ZuoBiaoOper.UpdateLRStartPt(keDuChiItem.KDir, jdstruc.JDPtStart, lineRoadWidth);//根据刻度尺方向获得起点; this._lineRoadWidth = lineRoadWidth; }
/// <summary> /// 根据绘图的基点井深、基点坐标、刻度尺等内容获得绘制点在图幅上的坐标。 /// </summary> /// <param name="jdStartPt">井段起始点坐标</param> /// <param name="kdc">绘制点所属的刻度尺</param> /// <param name="xVal">绘制点的X值(数据库中)</param> /// <param name="yVal">绘制点的Y值即井深(数据库中)</param> /// <param name="jdStartJS">基点对应的井深值</param> /// <returns></returns> public LJJSPoint GetDrawingZuoBiaoPt(LJJSPoint jdStartPt, KeDuChiItem kdc, double xVal, double yVal, double jdStartJS, double lRWidth) { double xvalue = jdStartPt.XValue; double yvalue = jdStartPt.YValue; double jsspace = Math.Abs(yVal - jdStartJS); if (jdStartJS < yVal)//所求点在基点下方; { yvalue = yvalue - jsspace * 1000 * _bilichivalue; } else { yvalue = yvalue + jsspace * 1000 * _bilichivalue; } double xtmpval; if (Math.Abs(kdc.KMax - kdc.KMin) > 0) { xtmpval = (xVal - kdc.KMin) / (kdc.KMax - kdc.KMin) * lRWidth; xvalue = xvalue + kdc.KDir * xtmpval; } /**if(xvalue > 5) * { * xvalue = 0; * }**/ LJJSPoint pt = new LJJSPoint(xvalue, yvalue); return(pt); }
private LJJSPoint GetDuiShuPointZB(KeDuChiItem duiShuKDC, LJJSPoint convertPt, JDStruc jdstruc, LJJSPoint lrptstart) { double Xpt = DuiShuOper.XGetDSZuoBiaoValue(lrptstart.XValue, duiShuKDC.KDir, duiShuKDC.KParm, convertPt.XValue, duiShuKDC.KMin); double Ypt = ZuoBiaoOper.GetJSZongZBValue(jdstruc.JDPtStart.YValue, convertPt.YValue, jdstruc.JDtop, FrameDesign.ValueCoordinate); return(new LJJSPoint(Xpt, Ypt)); }
/// <summary> /// 绘制棒线 /// </summary> /// <param name="kdc">棒线所属刻度尺</param> /// <param name="xVal">棒线终点对应的横向值(数据库中)</param> /// <param name="yVal">棒线终点对应的井深(数据库中)</param> private void DrawStickLine(LJJSPoint jdStartPt, KeDuChiItem kdc, double xVal, double yVal, double jdStartJS) { Layer.Layer_SetToCurrent(kdc.KName); ZuoBiaoOper zbopp = new ZuoBiaoOper(FrameDesign.ValueCoordinate); LJJSPoint ptend = zbopp.GetDrawingZuoBiaoPt(jdStartPt, kdc, xVal, yVal, jdStartJS, lineRoadEnvironment.LineRoadWidth); LJJSPoint ptstart = new LJJSPoint(jdStartPt.XValue, ptend.YValue); ulong objid = Line.BuildCommonLineByLayer(ptstart, ptend, kdc.kLineWidth); }
private LJJSPoint GetDuiShuPointZB(KeDuChiItem duiShuKDC, double yvalue, Hashtable drawht, JDStruc jdstruc, LJJSPoint lrptstart) { double xvalue = (double)drawht[yvalue]; double Xpt = DuiShuOper.XGetDSZuoBiaoValue(lrptstart.XValue, duiShuKDC.KDir, duiShuKDC.KParm, xvalue, duiShuKDC.KMin); double Ypt = ZuoBiaoOper.GetJSZongZBValue(jdstruc.JDPtStart.YValue, yvalue, jdstruc.JDtop, FrameDesign.ValueCoordinate); return(new LJJSPoint(Xpt, Ypt)); }
private void DrawDuiShuStickLine(LJJSPoint jdStartPt, KeDuChiItem kdc, double xVal, double yVal, double jdStartJS) { ZuoBiaoOper zbopp = new ZuoBiaoOper(FrameDesign.ValueCoordinate); double duishuX = DuiShuOper.XGetDSZuoBiaoValue(jdStartPt.XValue, kdc.KDir, kdc.KParm, xVal, kdc.KMin); double duishuY = ZuoBiaoOper.GetJSZongZBValue(jdStartPt.YValue, yVal, jdStartJS, FrameDesign.ValueCoordinate); LJJSPoint ptend = new LJJSPoint(duishuX, duishuY); LJJSPoint ptstart = new LJJSPoint(jdStartPt.XValue, ptend.YValue); ulong objid = Line.BuildCommonSoldLine(ptstart, ptend, Color.Black.ToArgb(), kdc.kLineWidth); // }
private void AddDuiShuStickLineToFigure(KeDuChiItem duiShuKDC, JDStruc jdstruc, Hashtable drawht) { LJJSPoint lrptstart = ZuoBiaoOper.UpdateLRStartPt(duiShuKDC.KDir, jdstruc.JDPtStart, LineRoadEnvironment.LineRoadWidth); foreach (DictionaryEntry de in drawht) { double xval = (double)de.Value; DrawDuiShuStickLine(lrptstart, duiShuKDC, xval, (double)de.Key, jdstruc.JDtop); } }
public static double XGetZuoBiaoValue(double xStartPt, KeDuChiItem kdc, double xVal, double lRWidth) { double xtmpval; double xvalue = xStartPt; if (Math.Abs(kdc.KMax - kdc.KMin) > 0) { xtmpval = (xVal - kdc.KMin) / (kdc.KMax - kdc.KMin) * lRWidth; xvalue = xvalue + kdc.KDir * xtmpval; } return(xvalue); }
private void AddDuiShuContinuousToFigure(KeDuChiItem duiShuKDC, ArrayList al, JDStruc jdstruc, Hashtable drawht, Color penColor) { List <LJJSPoint> drawptcol = new List <LJJSPoint>(); double yval = 0; LJJSPoint lrptstart = ZuoBiaoOper.UpdateLRStartPt(duiShuKDC.KDir, jdstruc.JDPtStart, LineRoadEnvironment.LineRoadWidth);//根据刻度尺方向获得起点; for (int i = 0; i < al.Count; i++) { yval = (double)al[i]; drawptcol.Add(GetDuiShuPointZB(duiShuKDC, yval, drawht, jdstruc, lrptstart)); } DrawContinuousLine(drawptcol, duiShuKDC.KName, duiShuKDC.kLineWidth, penColor);//绘制上一段曲线; }
public static bool IfInKeDuChi(double xvalue, KeDuChiItem kdc) { bool revalue = false; if (kdc == null) { return(revalue); } if ((xvalue >= kdc.KMin) && (xvalue <= kdc.KMax)) { revalue = true; } return(revalue); }
public static KeDuChiItem GetFirstKDCItemByItemName(string itemName) { KeDuChiItem result = null; List <KeDuChiItem> m_KDCList; if (null != KeDuChiManage.LineItemKDCHt) { m_KDCList = (List <KeDuChiItem>)KeDuChiManage.LineItemKDCHt[itemName]; if (null != m_KDCList && m_KDCList.Count > 0) { result = m_KDCList[0]; } } return(result); }
public override void InitOtherItemDesign() { colorDic = ColorCodeDic.GetColorDescKeyDic(); List <KeDuChiItem> m_KDCList = (List <KeDuChiItem>)KeDuChiManage.LineItemKDCHt[ItemName]; if (null != m_KDCList && m_KDCList.Count > 0) { drawkdc = m_KDCList[0]; } ////图层设计; //if(null !=drawkdc) //{ // string layername =DrawItemStyle.HatchRectItem.ToString()+ drawkdc.KName; //} }
//single paint private KeDuChiItem PointIfChaoJie(double yval, Hashtable drawht) { KeDuChiItem drawkdc = null; double xval = (double)drawht[yval]; for (int j = 0; j < m_KDCList.Count; j++) { KeDuChiItem tmpdrawkdc = m_KDCList[j]; if (ZuoBiaoOper.IfInKeDuChi(xval, tmpdrawkdc)) { drawkdc = tmpdrawkdc; break; } } return(drawkdc); }
private List <LJJSPoint> GetClosedAreaDRS(KeDuChiItem kdc, string subsql, double gwjsYZuoBiao, LJJSPoint ptStart) { List <LJJSPoint> rev = new List <LJJSPoint>(); DataRow[] drs = ClosedAreaDataTb.Select(subsql, itemDesignStruc.ClosedArea_Field_X + " ASC"); if (null != drs && drs.Count() > 0) { foreach (DataRow dr in drs) { double x = (double)dr[itemDesignStruc.ClosedArea_Field_X]; double y = gwjsYZuoBiao + (double)dr[itemDesignStruc.ClosedArea_Feild_Y] * StandardHCGZItemBuilder.HCGZLTXiShu; double xzb = DuiShuOper.XGetDSZuoBiaoValue(ptStart.XValue, kdc.KDir, kdc.KParm, x, kdc.KMin); rev.Add(new LJJSPoint(xzb, y)); } } return(rev); }
public override void InitOtherItemDesign() { List <KeDuChiItem> m_KDCList = (List <KeDuChiItem>)KeDuChiManage.LineItemKDCHt[ItemName]; //设置刻度尺列表; if (null != m_KDCList && m_KDCList.Count > 0) { kdcItem = m_KDCList.First(); } else { MessageBox.Show("缺少刻度尺设计"); return; } //设置补充线1,从线道头开始,至线道末的垂直线; firstVerBoundaryLineLst = new List <LJJSPoint>(); double xstart; if (kdcItem.KDir.Equals(1))//正向 { xstart = this.LineRoadStartPt.XValue; } else { xstart = this.LineRoadStartPt.XValue + lineRoadEnvironment.LineRoadWidth; } LJJSPoint startone = GetVerBoundaryStartPt(xstart, kdcItem.KMin); firstVerBoundaryLineLst.Add(startone); firstVerBoundaryLineLst.Add(GetVerBoundaryEndPt(startone.XValue)); if (itemDesignStruc.FenJieValueOne > 0) { LJJSPoint starttwo = GetVerBoundaryStartPt(xstart, itemDesignStruc.FenJieValueOne); secondVerBoundaryLineLst.Add(starttwo); secondVerBoundaryLineLst.Add(GetVerBoundaryEndPt(starttwo.XValue)); } if (itemDesignStruc.FenJieValueTwo > 0) { LJJSPoint startthree = GetVerBoundaryStartPt(xstart, itemDesignStruc.FenJieValueTwo); thirdVerBoundaryLineLst.Add(startthree); thirdVerBoundaryLineLst.Add(GetVerBoundaryEndPt(startthree.XValue)); } }
public override void InitOtherItemDesign() { //设置刻度尺; List <KeDuChiItem> m_KDCList = (List <KeDuChiItem>)KeDuChiManage.LineItemKDCHt[ItemName]; if (null != m_KDCList && m_KDCList.Count > 0) { keDuChiItem = m_KDCList[0]; } else { return; } //设置补充线,从线道头开始,至线道末的垂直线; verBoundaryLineLst = new List <LJJSPoint>(); double xstart; if (itemDesignStruc.HatchPosition.Equals(MyCurveHatchPos.Left)) { xstart = this.LineRoadStartPt.XValue; } else { xstart = this.LineRoadStartPt.XValue + lineRoadEnvironment.LineRoadWidth; } LJJSPoint start = new LJJSPoint(xstart, this.LineRoadStartPt.YValue); verBoundaryLineLst.Add(start); int lastjdcount = this.lineRoadEnvironment.JdDrawLst.Count(); if (lastjdcount > 0) { JDStruc jd = this.lineRoadEnvironment.JdDrawLst[lastjdcount - 1]; LJJSPoint endPt = new LJJSPoint(xstart, jd.JDPtStart.YValue + DrawCommonData.DirectionDown * jd.JDHeight); verBoundaryLineLst.Add(endPt); } }
private List <LJJSPoint> GetClosedAreaDRS(double startX, double endX, KeDuChiItem kdc, string subsql, double gwjsYZuoBiao) { List <LJJSPoint> rev = new List <LJJSPoint>(); if (endX > startX) { subsql = subsql + " and " + hcgzItemDesignStruc.ClosedArea_Field_X + ">" + startX + " and " + hcgzItemDesignStruc.ClosedArea_Field_X + "<" + endX; } DataRow[] drs = hcgzClosedAreaDataTb.Select(subsql, hcgzItemDesignStruc.ClosedArea_Field_X + " ASC"); if (null != drs && drs.Count() > 0) { starty = (double)drs[0][hcgzItemDesignStruc.ClosedArea_Feild_Y]; endy = (double)drs[drs.Length - 1][hcgzItemDesignStruc.ClosedArea_Feild_Y]; foreach (DataRow dr in drs) { double x = (double)dr[hcgzItemDesignStruc.ClosedArea_Field_X]; double y = gwjsYZuoBiao + (double)dr[hcgzItemDesignStruc.ClosedArea_Feild_Y] * HCGZLTXiShu; double xzb = DuiShuOper.XGetDSZuoBiaoValue(ptStart.XValue, 1, kdc.KParm, x, kdc.KMin); rev.Add(new LJJSPoint(xzb, y)); } } return(rev); }
private void AddChaoJieBZ(double xval, LJJSPoint jdStartPt, double BzJS, double jdStartJS, double blcvalue, KeDuChiItem drawkdc, double lRWidth) { Layer.Layer_SetToCurrent(drawkdc.KName); double chaojiepty = ZuoBiaoOper.GetJSZongZBValue(jdStartPt.YValue, BzJS, jdStartJS, blcvalue); LJJSPoint chaojiept = new LJJSPoint(jdStartPt.XValue + drawkdc.KDir * lRWidth, chaojiepty); ChaoJieBZ cjbz = new ChaoJieBZ(xval, chaojiept); cjbz.DrawChaoJieBiaoZhu(drawkdc.KDir); }
private void AddNormalContinuousToFigure(ArrayList al, JDStruc jdstruc, Hashtable drawht, Color penColor, int index) { double jdtop = jdstruc.JDtop; string prekdcname = "No"; double preyval = 0; double prexvalue = 0; string currkdcname = ""; LJJSPoint lrptstart; LJJSPoint currpt = new LJJSPoint(0, 0); List <LJJSPoint> drawptcol = new List <LJJSPoint>(); List <LJJSPoint> outdrawcol = new List <LJJSPoint>(); List <List <LJJSPoint> > outdrawcollist = new List <List <LJJSPoint> >(); double jdbottom = jdstruc.JDBottom; ZuoBiaoOper zbopp = new ZuoBiaoOper(FrameDesign.ValueCoordinate); LJJSPoint prept = new LJJSPoint(0, 0); KeDuChiItem drawkdc = null; LJJSPoint chajieinterpt;//超界交点 KeDuChiItem outdrawkdc = m_KDCList[m_KDCList.Count - 1]; double lastxvalue = 0; #region for (int i = 0; i < al.Count; i++) { double yval = (double)al[i]; double xvalue = (double)drawht[yval]; //获取 每个点x,y的值 drawkdc = PointIfChaoJie(yval, drawht); if (drawkdc != null)//该点未超界; { outdrawkdc = drawkdc; lrptstart = ZuoBiaoOper.UpdateLRStartPt(drawkdc.KDir, jdstruc.JDPtStart, LineRoadEnvironment.LineRoadWidth); this.lrptstart = lrptstart; this.lrptstartName = lineItemStruct.LiSubClass; //MessageBox.Show(string.Format("lrptstart:({0},{1})", lrptstart.XValue.ToString(), lrptstart.YValue.ToString())); currkdcname = drawkdc.KName; currpt = GetPtZBByKDC(drawkdc, jdstruc.JDPtStart, (double)drawht[yval], yval, jdstruc.JDtop); prept = currpt; if (StrUtil.IfTwoStrEqul(prekdcname, currkdcname)) { drawptcol.Add(currpt);//和上一点为同一刻度尺;则加入绘图集合; } else//开始下一段曲线的操作;分为从超界曲线向非超界的跳变,也有可能是非超界之间的跳变; { if (prekdcname.Equals(""))//从超界曲线向非超界的跳变 { if (lastxvalue < drawkdc.KMin) { chajieinterpt = ZuoBiaoOper.GetTiaoBianIntersectionPoint(currpt, prept, lrptstart.XValue); } else { chajieinterpt = ZuoBiaoOper.GetTiaoBianIntersectionPoint(currpt, prept, lrptstart.XValue + outdrawkdc.KDir * LineRoadEnvironment.LineRoadWidth); } outdrawcol.Add(chajieinterpt); drawptcol.Clear(); drawptcol.Add(chajieinterpt); if (outdrawcol.Count > 0) { outdrawcollist.Add(outdrawcol); } } else//非超界之间的跳变; { if (drawptcol.Count > 1) { this.DrawContinuousLine(drawptcol, prekdcname, drawkdc.kLineWidth, penColor);//绘制上一段曲线; } drawptcol.Clear(); } drawptcol.Add(currpt); } prekdcname = currkdcname; prexvalue = (double)drawht[yval]; preyval = yval; } else//该点已超界 drawkdc == null { if (m_KDCList.Count > 0) { currpt = GetPtZBByKDC(outdrawkdc, jdstruc.JDPtStart, (double)drawht[yval], yval, jdstruc.JDtop); currkdcname = ""; if (lineItemStruct.LineItemChaoJie == CJQXChaoJie.BiaoZhu) //添加标注信息; { if (!StrUtil.IfTwoStrEqul(prekdcname, currkdcname)) //跳变点 { lrptstart = ZuoBiaoOper.UpdateLRStartPt(outdrawkdc.KDir, jdstruc.JDPtStart, lineRoadEnvironment.LineRoadWidth); this.lrptstart = lrptstart; this.lrptstartName = lineItemStruct.LiSubClass; if (xvalue < outdrawkdc.KMin) { chajieinterpt = ZuoBiaoOper.GetTiaoBianIntersectionPoint(currpt, prept, lrptstart.XValue); } else { chajieinterpt = ZuoBiaoOper.GetTiaoBianIntersectionPoint(currpt, prept, lrptstart.XValue + outdrawkdc.KDir * lineRoadEnvironment.LineRoadWidth); } drawptcol.Add(chajieinterpt); if (drawptcol.Count > 0) { this.DrawContinuousLine(drawptcol, prekdcname, outdrawkdc.kLineWidth, penColor);//绘制上一段非超界曲线; drawptcol.Clear(); } } prept = currpt; prekdcname = currkdcname; prexvalue = (double)drawht[yval]; preyval = yval; continue; } if (StrUtil.IfTwoStrEqul(prekdcname, currkdcname)) { outdrawcol.Add(currpt);//和上一点为同一刻度尺;则加入绘图集合; } else//此时为从非超界向超界跳变;上一段非超界曲线结束; { outdrawcol = new List <LJJSPoint>(); lrptstart = ZuoBiaoOper.UpdateLRStartPt(outdrawkdc.KDir, jdstruc.JDPtStart, lineRoadEnvironment.LineRoadWidth); this.lrptstart = lrptstart; this.lrptstartName = lineItemStruct.LiSubClass; if (xvalue < outdrawkdc.KMin) { chajieinterpt = ZuoBiaoOper.GetTiaoBianIntersectionPoint(currpt, prept, lrptstart.XValue); } else { chajieinterpt = ZuoBiaoOper.GetTiaoBianIntersectionPoint(currpt, prept, lrptstart.XValue + outdrawkdc.KDir * lineRoadEnvironment.LineRoadWidth); } drawptcol.Add(chajieinterpt); if (drawptcol.Count > 1) { this.DrawContinuousLine(drawptcol, prekdcname, outdrawkdc.kLineWidth, penColor);//绘制上一段非超界曲线; drawptcol.Clear(); } if (outdrawcol.Count > 0) { outdrawcollist.Add(outdrawcol); } outdrawcol.Clear(); if (i != 0) { outdrawcol.Add(chajieinterpt); } outdrawcol.Add(currpt); prekdcname = currkdcname; prexvalue = (double)drawht[yval]; preyval = yval; } } } prept = currpt; lastxvalue = xvalue; }//遍历完所有的点; #endregion lrptstart = ZuoBiaoOper.UpdateLRStartPt(outdrawkdc.KDir, jdstruc.JDPtStart, lineRoadEnvironment.LineRoadWidth); this.set_start_point_dele = SuiZuanForm.set_startpoint; //这两行代码用于随钻界面画图后界面的放大,如果是绘图可无视 this.set_start_point_dele(lrptstart); //这两行代码用于随钻界面画图后界面的放大,如果是绘图可无视 this.lrptstart = lrptstart; this.lrptstartName = lineItemStruct.LiSubClass; if ((currkdcname == "") && (outdrawcol.Count > 1)) { outdrawcollist.Add(outdrawcol); //add here? } if (drawptcol.Count > 1 && drawkdc != null) { //在循环进行完毕,将drawptcol ,即画的线上的所有点的集合保存在一个静态类中 if (lineItemStruct.LiSubClass == "msev" && DrawPointContainer.list[index].msevList == null) { DrawPointContainer.list[index].msevList = drawptcol; //MsehAndMsevContainer.msevList = drawptcol; } if (lineItemStruct.LiSubClass == "mseh" && DrawPointContainer.list[index].msehList == null) { DrawPointContainer.list[index].msehList = drawptcol; } if (lineItemStruct.LiSubClass == "wxcs" && DrawPointContainer.list[index].wxcsList == null) { DrawPointContainer.list[index].wxcsList = drawptcol; } if (lineItemStruct.LiSubClass == "wxcs2" && DrawPointContainer.list[index].WXCSJiaoHuiList == null) { DrawPointContainer.list[index].WXCSJiaoHuiList = drawptcol; } if (lineItemStruct.LiSubClass == "jgl" && DrawPointContainer.list[index].JinGeiLiangList == null) { DrawPointContainer.list[index].JinGeiLiangList = drawptcol; } this.DrawContinuousLine(drawptcol, currkdcname, drawkdc.kLineWidth, penColor);//绘制上一段非超界曲线;在此画线 } if (outdrawcollist.Count > 0) { AddChaoJieLine(outdrawcollist, lrptstart.XValue + outdrawkdc.KDir * lineRoadEnvironment.LineRoadWidth, outdrawkdc.KDir, outdrawkdc.KName, outdrawkdc.kLineWidth, penColor); } }
public CurveHatch(KeDuChiItem keDuChiItem, double lineRoadWidth) { this._keDuChiItem = keDuChiItem; this._lineRoadWidth = lineRoadWidth; }
private LJJSPoint GetPtZBByKDC(KeDuChiItem drawkdc, LJJSPoint lrptstart, LJJSPoint converPt, double jdtop) { ZuoBiaoOper zbopp = new ZuoBiaoOper(FrameDesign.ValueCoordinate); return(zbopp.GetDrawingZuoBiaoPt(lrptstart, drawkdc, converPt.XValue, converPt.YValue, jdtop, LineRoadEnvironment.LineRoadWidth)); }
public override void InitOtherItemDesign() { kdcItem = KDCBuildExec.GetFirstKDCItemByItemName(this.ItemName); }