自文件一次创建多条曲线的方法(ibl文件的使用)附图片教程
- 格式:doc
- 大小:247.50 KB
- 文档页数:3
基准特征建议尽可能先选择点、线(轴)、面,然后再进入命令,这样操作较快,且不容易出错。
一、基准点1.在曲面上---所创建的点在一曲面上,通过定位尺寸确定其位置。
2.顶点---零件上的尖点。
3.偏移坐标系---选择坐标系--选择对应的按钮(第三按钮“偏移坐标系基准点工具”)--点的编辑(输入点的xyz坐标值)。
4.在曲线上---有两种方式。
第一种:选择曲线---长度比率第二种:选择曲线---实际长度注意偏移参照的选取也有两种方式(常用曲线端点方式,也可以选择别的参照)。
5.通过“偏移坐标系”输入点:可以支持ibl和pts格式。
可以选择自文件创建基本曲线的点文件。
选择偏移坐标系建立点按钮---选择坐标系---“输入”--选择点文件--确定。
1 0 0 02 5 10 233 10 80 304 20 60 355 50 10 60二、基准平面(外/内部基准平面)1.偏距平面:与某平面偏距一定值2.穿过一轴线(直线)和某面成一定角度:轴线需在平面上3.过三个点4.偏距坐标系:选择坐标系,平移某一坐标轴。
5.通过两共面边或共面轴(必须共面但不共线)6.一个平面及两个点(点不能和平面的法线共线)---与平面垂直并经过两点7.通过一个点及一直线(平面曲线)--点与线共面。
三、基准轴整个圆柱面会自动创建一个基准轴1.过直线2.垂直平面(需拖动手柄进行定位)3.过点且垂直平面4.过柱面5.两相交平面6.过两个点7.曲面上的点-----通过该点并垂直于曲面创建基准轴8.曲线及其上的一点-----通过点并与曲线相切四、基准曲线1.草绘----通过草绘按钮进入创建环境,进行曲线的绘制2.经过点---通过相对应的按钮进入创建环境,包括点的选取、属性、相切、扭曲等。
属性--指出该曲线是否应该位于选定的曲面上。
相切--(可选)设置曲线的相切条件扭曲--(可选)通过使用多面体处理来修改通过两点的曲线形状。
只适用于通过两个点创建基准曲线。
AndroidLineChart绘制多条曲线的⽅法本⽂实例为⼤家分享了Android LineChart绘制多条曲线的具体代码,供⼤家参考,具体内容如下⽬标效果:1.新建custom_marker_view.xml页⾯作为点击弹出框的页⾯:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android" android:layout_width="wrap_content"android:layout_height="40dp"android:background="@drawable/marker2" ><TextViewandroid:id="@+id/tvContent"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_marginTop="7dp"android:layout_marginLeft="5dp"android:layout_marginRight="5dp"android:text=""android:textSize="12dp"android:textColor="@android:color/white"android:ellipsize="end"android:singleLine="true"android:textAppearance="?android:attr/textAppearanceSmall" /></RelativeLayout>2.activity_main.xml页⾯:<RelativeLayout xmlns:android="/apk/res/android" xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="10dp"android:paddingLeft="10dp"android:paddingRight="10dp"android:paddingTop="10dp"tools:context=".MainActivity" ><com.github.mikephil.charting.charts.LineChartandroid:id="@+id/chartTall"android:layout_width="match_parent"android:layout_height="400dp"android:layout_marginTop="20dp" /></RelativeLayout>3.新建MyMarkerView.java重写MarkView控件:package com.example.weixu.drawline;import android.content.Context;import android.widget.TextView;import com.github.mikephil.charting.data.CandleEntry;import com.github.mikephil.charting.data.Entry;import com.github.mikephil.charting.utils.MarkerView;import com.github.mikephil.charting.utils.Utils;public class MyMarkerView extends MarkerView {private TextView tvContent;public MyMarkerView(Context context, int layoutResource) {super(context, layoutResource);tvContent = (TextView) findViewById(Content);}@Overridepublic void refreshContent(Entry e, int dataSetIndex) {if (e instanceof CandleEntry) {CandleEntry ce = (CandleEntry) e;tvContent.setText("" + Utils.formatNumber(ce.getHigh(), 0, true));} else {tvContent.setText("" +e.getVal());}}}4.MainActivity.java页⾯:package com.example.weixu.drawline;import java.util.ArrayList;import android.app.Activity;import android.graphics.Color;import android.graphics.Typeface;import android.os.Bundle;import android.view.WindowManager;import com.github.mikephil.charting.charts.BarLineChartBase;import com.github.mikephil.charting.charts.BarLineChartBase.BorderPosition; import com.github.mikephil.charting.charts.LineChart;import com.github.mikephil.charting.data.Entry;import com.github.mikephil.charting.data.LineData;import com.github.mikephil.charting.data.LineDataSet;import com.github.mikephil.charting.utils.Legend;import com.github.mikephil.charting.utils.Legend.LegendForm;import com.github.mikephil.charting.utils.XLabels;import com.github.mikephil.charting.utils.XLabels.XLabelPosition;import com.github.mikephil.charting.utils.YLabels;public class MainActivity extends Activity {private LineChart chartTall;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);getWindow().setFlags(youtParams.FLAG_FULLSCREEN, youtParams.FLAG_FULLSCREEN);setContentView(yout.activity_main);chartTall = (LineChart) findViewById(R.id.chartTall);setType();// 刷新图表chartTall.invalidate();}private void setType() {// 设置在Y轴上是否是从0开始显⽰chartTall.setStartAtZero(true);//是否在Y轴显⽰数据,就是曲线上的数据chartTall.setDrawYValues(true);//设置⽹格chartTall.setDrawBorder(true);chartTall.setBorderPositions(new BarLineChartBase.BorderPosition[] {BorderPosition.BOTTOM});//在chart上的右下⾓加描述chartTall.setDescription("⾝⾼曲线图");//设置Y轴上的单位chartTall.setUnit("cm");//设置透明度chartTall.setAlpha(0.8f);//设置⽹格底下的那条线的颜⾊chartTall.setBorderColor(Color.rgb(213, 216, 214));//设置Y轴前后倒置chartTall.setInvertYAxisEnabled(false);//设置⾼亮显⽰chartTall.setHighlightEnabled(true);//设置是否可以触摸,如为false,则不能拖动,缩放等chartTall.setTouchEnabled(true);//设置是否可以拖拽,缩放chartTall.setDragEnabled(true);chartTall.setScaleEnabled(true);//设置是否能扩⼤扩⼩chartTall.setPinchZoom(true);//设置点击chart图对应的数据弹出标注MyMarkerView mv = new MyMarkerView(this, yout.custom_marker_view);mv.setOffsets(-mv.getMeasuredWidth() / 2, -mv.getMeasuredHeight());chartTall.setMarkerView(mv);chartTall.setHighlightIndicatorEnabled(false);//设置字体格式,如正楷Typeface tf = Typeface.createFromAsset(getAssets(),"OpenSans-Regular.ttf");chartTall.setValueTypeface(tf);XLabels xl = chartTall.getXLabels();xl.setPosition(XLabelPosition.BOTTOM); // 设置X轴的数据在底部显⽰xl.setTypeface(tf); // 设置字体xl.setTextSize(10f); // 设置字体⼤⼩xl.setSpaceBetweenLabels(3); // 设置数据之间的间距YLabels yl = chartTall.getYLabels();yl.setTypeface(tf); // 设置字体yl.setTextSize(10f); // s设置字体⼤⼩yl.setLabelCount(5); // 设置Y轴最多显⽰的数据个数// 加载数据setData();//从X轴进⼊的动画chartTall.animateX(4000);chartTall.animateY(3000); //从Y轴进⼊的动画chartTall.animateXY(3000, 3000); //从XY轴⼀起进⼊的动画//设置最⼩的缩放chartTall.setScaleMinima(0.5f, 1f);}private void setData() {String[] babAge = {"0","1","2","3","4","5","6"}; //连线的x轴数据String[] babyTall = {"50","60","90","110","130","135","140"};String[] usuaTall = {"55","65","95","115","125","135","145"};//连线的y轴数据LineData data=new LineData(babAge,setLine(babAge,babyTall,1,"宝宝⾝⾼")); //创建LineData实体类并添加第⼀条曲线 data.addDataSet(setLine(babAge,usuaTall,2,"正常⾝⾼")); //添加第⼆条曲线chartTall.setData(data);}//画线private LineDataSet setLine(String[] babAge, String[] Tall,int flag,String name) {ArrayList<String> xValsAge = new ArrayList<String>();for (int i = 0; i < babAge.length; i++) {xValsAge.add(babAge[i]);}ArrayList<Entry> yValsBabyTall = new ArrayList<Entry>();for (int i = 0; i < Tall.length; i++) {yValsBabyTall.add(new Entry(Float.parseFloat(Tall[i]), i));}//设置baby的成长曲线LineDataSet setData = new LineDataSet(yValsBabyTall,name);setData.setDrawCubic(true); //设置曲线为圆滑的线setData.setCubicIntensity(0.2f);setData.setDrawFilled(false); //设置包括的范围区域填充颜⾊setData.setDrawCircles(true); //设置有圆点setData.setLineWidth(2f); //设置线的宽度setData.setCircleSize(5f); //设置⼩圆的⼤⼩setData.setHighLightColor(Color.rgb(244, 117, 117));//设置曲线颜⾊if(flag==1)setData.setColor(Color.rgb(104, 241, 175)); //宝宝⾝⾼曲线颜⾊else if(flag==2)setData.setColor(Color.rgb(255, 0, 0)); //普通⾝⾼曲线颜⾊return setData; //返回曲线}}源码:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
如何在vb中绘制多条曲线这个是我在点击listview的标题时把获得的值放到数组Batch_array中在mschart中显示相关内容的代码或许有用最大值,最小值可以给数组排一下序bt是标题的意思leng是数组的长度TempArray是临时数组Public Sub ShowChar(bt As String, leng As Integer)On Error GoTo errshowDim Tstr As StringDim TT As StringWith MSChart1.chartType = 9.ColumnCount = Total_City '设置列数.RowCount = 1 '设置每一列的列数TT = Batch_array(1) & ":" & Left(TempArray(1), leng - 1) & " "For Column = 1 To Total_City.Column = Column '返回当前列数.Data = Mid(TempArray(Column), leng, 3).RowLabel = btIf Column < Total_City Then.ColumnLabel = Batch_array(Column + 1) & ":" & Left(TempArray(Column + 1), leng - 1) & " "Else.ColumnLabel = TTEnd IfNext Column'将图表作为图例的背景。
.ShowLegend = True.SelectPart VtChPartTypePlot, 1, 1, _1, 1.EditCopy.SelectPart VtChPartTypeLegend, 1, _1, 1, 1.EditPasteEnd WithExit Suberrshow:MsgBox Err.Descriptionk, vbDefaultButton1, "提示"End Subvb中如何用load导入图像将图片导入至image框编程09-11-28 匿名提问发布1个回答时间投票fx676eu59picturebox控件有一个Load(string url)方法,传入要读取的图片路径就可以了,如: this.pictureBox1.Load(1.png); 在这里要注意的是,程序读取图片文件的默认路径是在其项目文件夹的bin\debug目录下,这里我直接给路径为1.png 是因为我已经把该图片复制到bin\debug目录下面去了.当然也可以指定其它的文件夹如果你需要在窗体显示出来的时候就在picturebox控件中显示出来可以在如窗体的Paint事件中调用此方法,如: private void Form1_Paint(object sender, PaintEventArgs e) {this.pictureBox1.Load(1.png);Private Sub Command1_Click()Picture1.BorderStyle = 0Picture1.Picture = LoadPicture("c:\test.bmp")SavePicture Picture1.Image, "C:\tmp.bmp"ImgEdit1.Image = ("c:\tmp.bmp") '装载一幅图片ImgEdit1.Display '将装载的图片显示出来ImgEdit1.SaveAs "c:\1.jpg", wiFileTypeJPG, , 6 '保存成JPG文件Kill "c:\tmp.bmp"MsgBox "ok"End Sub取得曲线中的坐标值for i=y1 to y2 step 0.1 ’step根据实际情况修改,只要保证曲线上对应的点不会跳过扫描if me.point(x,i)=color then y=i *color是曲线的颜色值next。
Proe利用点的三坐标值生成曲线
方法一:(自文件创建曲线)
1、用记事本把点的三个坐标值编辑好,文件内容编辑的格式如图1。
文件开头的四句话(红色框内的)必须写上。
数字从左到右是x,y,z的值,之间用空格隔开,空格数可以随意。
图1
2、文件编辑保存好后,将文件重命名以.ibl为后缀的文件。
3、打开proe,新建文件,点击,然后点击“自文件”,单击“完成”,如图2
图2
4、选取坐标系,如图3,然后,导入刚编辑好的“curve.ibl文件”,自动生成曲线图4。
图3
图4
方法二:(经过点创建曲线)
1、用记事本把点的三个坐标值编辑好,文件内容编辑的格式如图1。
文件开头的四句话(红色框内的)必须写上。
数字从左到右是x,y,z的值,之间用空格隔开,空格数可以随意。
图1
2、文件编辑保存好后,将文件重命名以“.ibl”为或者“.pts”后缀的文件。
3、打开proe,新建文件,先点击“基准点”图标的“偏移坐标系”,如图2
图2
4、先点坐标系,然后再导入以“.ibl”为或者“.pts”后缀的文件。
如图3
图3
5、导入后如图4所示,还可以点击“更新值”,修改各个坐标值。
单击“确定”,OK!
图4
6、点击,然后点击“经过点”,单击“完成”,如图5
图5
7、点击图4上的任意点,然后确定,就可以生成曲线。
第2章 基 准 曲 线教学提示:曲线是构建曲面的基本元素,如何快速有效地创建曲线,是生成曲面的关键。
利用基准曲线是创建基本曲面最常用的方法。
本章将重点介绍基准曲线的创建方法。
2.1 草绘基准曲线草绘基准曲线就是利用草绘工具绘制所需要的曲线,这是一种十分灵活地创建曲线的方法,它可以获得在二维草绘模块里所能绘制的所有曲线。
下面介绍创建这种曲线的具体方法。
具体操作步骤如下:执行“插入”|“模型基准”|“草绘”命令,或者单击“基准”工具条上的图标,系统弹出“草绘”对话框,如图2.1所示。
在绘图区内选取系统默认的基准平面或在实体特征上选取要草绘曲线的平面,按提示在对话框中选取参照和草绘视图方向,单击“草绘”对话框中“草绘”按钮,即可进入草绘曲线的界面,按草绘模块所述的草绘方法绘制曲线,单击确定后,即可获得曲线,如图2.2所示。
图2.1 草绘对话框图2.2 草绘曲线Pro/ENGINEER Wildfire 3.0曲面设计实例教程·8· ·8· 2.2 曲面相交获得基准曲线“曲面相交”基准曲线就是利用两个曲面相交处的交线创建基准曲线。
两个相交的曲面可以是零件的曲面,也可以是曲面特征或是基准平面。
要成功创建由曲面相交产生的基准曲线,其充分必要条件是保证两个曲面一定相交。
下面通过一个实例介绍创建曲面相交曲线的方法。
实例1:创建一条曲面相交曲线,如图2.3所示。
具体操作步骤如下:(1) 打开实例源文件qmxj.prt ,如图2.4所示。
两曲面交线图2.3 实例 图2.4 qmxj.prt 源文件 (2) 单击“过滤器”右边的三角按钮,打开下拉列表,选择“面组”选项,选取一个曲面,再按住Ctrl 键选取另一个曲面,此时两个曲面皆变成红色,如图2.5所示。
图2.5 选取曲面(3) 执行“编辑”|“相交”命令,系统自动生成曲面交线,单击中键,完成操作,如图2.3所示。
2.3 “经过点”创建基准曲线“经过点”创建基准曲线,就是通过一连串的基准点来创建一条基准曲线。
用C# 绘制曲线图(Curve图,增加自动适应和多曲线绘制)在N久之前,我发过一个绘制曲线的文章先发个绘制曲线图的:用 with C# 绘制曲线图(Curve图)里面介绍了简单的绘制曲线图的方法.近来重新翻阅了这篇文章.心情大好之下又重新修改了一下绘制方法,增加自动适应数据的处理和可以根据传入的数据绘制多条曲线照例先上图:比以前Cool吧?呵呵,其实就是根据数据自动计算边距和字体等.///<summary>///自动根据参数调整图像大小///</summary>public void Fit(){//计算字体距离intFontSpace = FontSize + 5;//计算图像边距float fltSpace = Math.Min(Width / 6, Height / 6); XSpace = fltSpace;YSpace = fltSpace;//计算X轴刻度宽度XSlice = (Width - 2 * XSpace) / (Keys.Length - 1);//计算Y轴刻度宽度和Y轴刻度开始值float fltMinValue = 0;float fltMaxValue = 0;for (int i = 0; i < Values.Length; i++){if (Values[i] < fltMinValue){fltMinValue = Values[i];}else if (Values[i] > fltMaxValue){fltMaxValue = Values[i];}}if (YSliceBegin > fltMinValue){YSliceBegin = fltMinValue;}int intYSliceCount = (int)(fltMaxValue / YSliceValue);if (fltMaxValue % YSliceValue != 0){intYSliceCount++;}YSlice = (Height - 2 * YSpace) / intYSliceCount;}看我把数据缩小一个级别的效果:因为代码里面充斥了大量注释,也不敲太多文字了..完整代码奉上:using System;using System.Collections.Generic;using System.Text;using System.Drawing;using System.Data;using System.Drawing.Drawing2D;namespace SarchPMS.Business.Draw{public class DrawingCurve : DrawingChart{///<summary>///画曲线图///</summary>///<param name="dsParameter"></param>///<returns></returns>public override Bitmap DrawImage(DataSet dsParamet er){Curve2D cuv2D = new Curve2D();cuv2D.Fit();return cuv2D.CreateImage();}}public class Curve2D{private Graphics objGraphics; //Graphics 类提供将对象绘制到显示设备的方法private Bitmap objBitmap; //位图对象private float fltWidth = 480; //图像宽度private float fltHeight = 248; //图像高度private float fltXSlice = 50; //X轴刻度宽度private float fltYSlice = 50; //Y轴刻度宽度private float fltYSliceValue = 20; //Y轴刻度的数值宽度private float fltYSliceBegin = 0; //Y轴刻度开始值private float fltTension = 0.5f;private string strTitle = "曲线图"; //标题private string strXAxisText = "月份"; //X轴说明文字private string strYAxisText = "万元"; //Y轴说明文字private string[] strsKeys = new string[] { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" }; //键private float[] fltsValues = new float[] { 20.0f, 30.0f, 5 0.0f, 55.4f, 21.6f, 12.8f, 99.5f, 36.4f, 78.2f, 56.4f, 45.8f, 66 .5f, 99.5f, 36.4f, 78.2f, 56.4f, 45.8f, 66.5f, 20.0f, 30.0f, 50. 0f, 55.4f, 21.6f, 12.8f }; //值private Color clrBgColor = Color.Snow; //背景色private Color clrTextColor = Color.Black; //文字颜色private Color clrBorderColor = Color.Black; //整体边框颜色private Color clrAxisColor = Color.Black; //轴线颜色private Color clrAxisTextColor = Color.Black; //轴说明文字颜色private Color clrSliceTextColor = Color.Black; //刻度文字颜色private Color clrSliceColor = Color.Black; //刻度颜色private Color[] clrsCurveColors = new Color[] { Color. Red, Color.Blue }; //曲线颜色private float fltXSpace = 100f; //图像左右距离边缘距离private float fltYSpace = 100f; //图像上下距离边缘距离private int intFontSize = 9; //字体大小号数private float fltXRotateAngle = 30f; //X轴文字旋转角度private float fltYRotateAngle = 0f; //Y轴文字旋转角度private int intCurveSize = 2; //曲线线条大小private int intFontSpace = 0; //intFontSpace 是字体大小和距离调整出来的一个比较适合的数字#region公共属性///<summary>///图像的宽度///</summary>public float Width{set{if (value < 100){fltWidth = 100; }else{fltWidth = value; }}get{if (fltWidth <= 100) {return100;}else{return fltWidth; }}}///<summary>///图像的高度///</summary>public float Height{set{if (value < 100){fltHeight = 100; }else{fltHeight = value; }}get{if (fltHeight <= 100) {return100;}else{return fltHeight;}}}///<summary>/// X轴刻度宽度///</summary>public float XSlice{set { fltXSlice = value; }get { return fltXSlice; } }///<summary>/// Y轴刻度宽度///</summary>public float YSlice{set { fltYSlice = value; }get { return fltYSlice; }}///<summary>/// Y轴刻度的数值宽度///</summary>public float YSliceValue{set { fltYSliceValue = value; }get { return fltYSliceValue; } }///<summary>/// Y轴刻度开始值///</summary>public float YSliceBegin{set { fltYSliceBegin = value; }get { return fltYSliceBegin; } }///<summary>///张力系数///</summary>public float Tension{set{if (value < 0.0f && value > 1.0f) {fltTension = 0.5f;}else{fltTension = value;}}get{return fltTension;}}///<summary>///标题///</summary>public string Title{set { strTitle = value; }get { return strTitle; }}///<summary>///键,X轴数据///</summary>public string[] Keys{set { strsKeys = value; }get { return strsKeys; } }///<summary>///值,Y轴数据///</summary>public float[] Values{set { fltsValues = value; }get { return fltsValues; }}///<summary>///背景色///</summary>public Color BgColor{set { clrBgColor = value; }get { return clrBgColor; }}///<summary>///文字颜色///</summary>public Color TextColor{set { clrTextColor = value; }get { return clrTextColor; } }///<summary>///整体边框颜色///</summary>public Color BorderColor{set { clrBorderColor = value; }get { return clrBorderColor; } }///<summary>///轴线颜色///</summary>public Color AxisColor{set { clrAxisColor = value; }get { return clrAxisColor; }}///<summary>/// X轴说明文字///</summary>public string XAxisText{set { strXAxisText = value; }get { return strXAxisText; }}///<summary>/// Y轴说明文字///</summary>public string YAxisText{set { strYAxisText = value; }get { return strYAxisText; }}///<summary>///轴说明文字颜色///</summary>public Color AxisTextColor{set { clrAxisTextColor = value; }get { return clrAxisTextColor; } }///<summary>///刻度文字颜色///</summary>public Color SliceTextColor{set { clrSliceTextColor = value; }get { return clrSliceTextColor; } }///<summary>///刻度颜色///</summary>public Color SliceColor{set { clrSliceColor = value; }get { return clrSliceColor; }}///<summary>///曲线颜色///</summary>public Color[] CurveColors{set { clrsCurveColors = value; }get { return clrsCurveColors; } }///<summary>/// X轴文字旋转角度///</summary>public float XRotateAngle{get { return fltXRotateAngle; }set { fltXRotateAngle = value; } }///<summary>/// Y轴文字旋转角度///</summary>public float YRotateAngle{get { return fltYRotateAngle; }set { fltYRotateAngle = value; }}///<summary>///图像左右距离边缘距离///</summary>public float XSpace{get { return fltXSpace; }set { fltXSpace = value; } }///<summary>///图像上下距离边缘距离///</summary>public float YSpace{get { return fltYSpace; }set { fltYSpace = value; } }///<summary>///字体大小号数///</summary>public int FontSize{get { return intFontSize; }set { intFontSize = value; } }///<summary>///曲线线条大小///</summary>public int CurveSize{get { return intCurveSize; }set { intCurveSize = value; } }#endregion///<summary>///自动根据参数调整图像大小///</summary>public void Fit(){//计算字体距离intFontSpace = FontSize + 5;//计算图像边距float fltSpace = Math.Min(Width / 6, Height / 6); XSpace = fltSpace;YSpace = fltSpace;//计算X轴刻度宽度XSlice = (Width - 2 * XSpace) / (Keys.Length - 1);//计算Y轴刻度宽度和Y轴刻度开始值float fltMinValue = 0;float fltMaxValue = 0;for (int i = 0; i < Values.Length; i++){if (Values[i] < fltMinValue){fltMinValue = Values[i];}else if (Values[i] > fltMaxValue){fltMaxValue = Values[i];}}if (YSliceBegin > fltMinValue){YSliceBegin = fltMinValue;}int intYSliceCount = (int)(fltMaxValue / YSliceValue);if (fltMaxValue % YSliceValue != 0){intYSliceCount++;}YSlice = (Height - 2 * YSpace) / intYSliceCount;}///<summary>///生成图像并返回bmp图像对象///</summary>///<returns></returns>public Bitmap CreateImage(){InitializeGraph();int intKeysCount = Keys.Length;int intValuesCount = Values.Length;if (intValuesCount % intKeysCount == 0){int intCurvesCount = intValuesCount / intKeysCo unt;for (int i = 0; i < intCurvesCount; i++){float[] fltCurrentValues = new float[intKeysCo unt];for (int j = 0; j < intKeysCount; j++){fltCurrentValues[j] = Values[i * intKeysCou nt + j];}DrawContent(ref objGraphics, fltCurrentValues , clrsCurveColors[i]);}}else{objGraphics.DrawString("发生错误,Values的长度必须是Keys的整数倍!", new Font("宋体", FontSize + 5), new SolidBrush(TextColor), new Point((int) XSpace, (int)(Height / 2)));}return objBitmap;}///<summary>///初始化和填充图像区域,画出边框,初始标题///</summary>private void InitializeGraph(){//根据给定的高度和宽度创建一个位图图像objBitmap = new Bitmap((int)Width, (int)Height);//从指定的 objBitmap 对象创建 objGraphics 对象 (即在objBitmap对象中画图)objGraphics = Graphics.FromImage(objBitmap);//根据给定颜色(LightGray)填充图像的矩形区域 (背景) objGraphics.DrawRectangle(new Pen(BorderColor, 1), 0, 0, Width - 1, Height - 1); //画边框objGraphics.FillRectangle(new SolidBrush(BgColor), 1, 1, Width - 2, Height - 2); //填充边框//画X轴,注意图像的原始X轴和Y轴计算是以左上角为原点,向右和向下计算的float fltX1 = XSpace;float fltY1 = Height - YSpace;float fltX2 = Width - XSpace + XSlice / 2;float fltY2 = fltY1;objGraphics.DrawLine(new Pen(new SolidBrush(Axis Color), 1), fltX1, fltY1, fltX2, fltY2);//画Y轴fltX1 = XSpace;fltY1 = Height - YSpace;fltX2 = XSpace;fltY2 = YSpace - YSlice / 2;objGraphics.DrawLine(new Pen(new SolidBrush(Axis Color), 1), fltX1, fltY1, fltX2, fltY2);//初始化轴线说明文字SetAxisText(ref objGraphics);//初始化X轴上的刻度和文字SetXAxis(ref objGraphics);//初始化Y轴上的刻度和文字SetYAxis(ref objGraphics);//初始化标题CreateTitle(ref objGraphics);}///<summary>///初始化轴线说明文字///</summary>///<param name="objGraphics"></param>private void SetAxisText(ref Graphics objGraphics){float fltX = Width - XSpace + XSlice / 2 - (XAxisText .Length - 1) * intFontSpace;float fltY = Height - YSpace - intFontSpace;objGraphics.DrawString(XAxisText, new Font("宋体", FontSize), new SolidBrush(AxisTextColor), fltX, fltY);fltX = XSpace + 5;fltY = YSpace - YSlice / 2 - intFontSpace;for (int i = 0; i < YAxisText.Length; i++){objGraphics.DrawString(YAxisText[i].ToString(), new Font("宋体", FontSize), new SolidBrush(AxisTextColor), fltX, fltY);fltY += intFontSpace; //字体上下距离}}///<summary>///初始化X轴上的刻度和文字///</summary>///<param name="objGraphics"></param>private void SetXAxis(ref Graphics objGraphics){float fltX1 = XSpace;float fltY1 = Height - YSpace;float fltX2 = XSpace;float fltY2 = Height - YSpace;int iCount = 0;int iSliceCount = 1;float Scale = 0;float iWidth = ((Width - 2 * XSpace) / XSlice) * 50; //将要画刻度的长度分段,并乘以50,以10为单位画刻度线。
Excel中表格一个图上画多条曲线的操作技巧
一般情况,我们常用的都是直接插入一条曲线的图表。
今天,店铺就教大家在Excel中表格一个图上画多条曲线的操作技巧。
Excel中表格一个图上画多条曲线的操作步骤
在电脑桌面上,新建一个excel文件(操作过程即为点击右键,在选项中选择“新建”选项,然后再选择“excel文件”,即可成功新建excel文件了)。
双击将新建的excel文件打开,输入你需要统计制作成曲线的数据,记得将X轴的数据输在上方,Y轴的数据输在下方。
然后选中所需X轴范围较大的数据,先绘制曲线。
小编的数据中,下方的数据范围较大,那就先选中下方的全部数据。
然后将上方的菜单栏切换到“插入”选项中,点击“散点图”下方的小三角形,选择其中带有平滑线的曲线类型。
界面中就会弹出这些数据的曲线图。
然后选中这些数据,点击右键,选择其中的“选择数据”选项。
弹出如下图所示的小窗口,点击其中的“添加”选项,出现如下所示的选择数据框。
在“系列名称”中选择数据名称,此图为“吸光度”;“X轴系列值”和“Y轴系列值”中分别选择需添加制作的数据。
设置图如下所示。
点击“确定”后,界面中就能成功在一个图上形成两条曲线了。
下图即为制作后的效果图。
matlab多种曲线的表示方法在 MATLAB 中,有多种方法可以表示和绘制多种曲线。
以下是一些常用的方法:1. 基本绘图函数: `plot()` 是最常用的绘图函数,可以绘制二维线图。
例如:```matlabx = 0::2pi; % 生成一个从0到2pi的等差数列y = sin(x); % 对x应用sin函数plot(x, y); % 绘制图形```2. 多曲线绘图: 使用 `hold on` 和 `hold off` 命令可以在同一张图上绘制多条曲线。
例如:```matlabx = 0::2pi; % 生成一个从0到2pi的等差数列y1 = sin(x); % 对x应用sin函数y2 = cos(x); % 对x应用cos函数plot(x, y1, 'r'); % 绘制红色的sin曲线hold on; % 保持当前图形,以便继续绘制其他曲线plot(x, y2, 'b'); % 绘制蓝色的cos曲线hold off; % 结束当前图形,不再绘制其他曲线```3. 参数曲线: 使用 `plotyy()` 或 `subplot()` 可以绘制参数曲线。
例如:```matlabt = 0::2pi; % 生成一个从0到2pi的等差数列r = t.exp(t); % 对t应用乘法和指数函数,模拟参数曲线c = t.exp(-t); % 对t应用乘法和指数函数,模拟另一参数曲线[ax1, h1] = plotyy(t, r, t, c); % 在两个子图上分别绘制r和cset(h1(1), 'LineWidth', 2); % 设置第一个曲线的线宽为2set(h1(2), 'LineWidth', 2); % 设置第二个曲线的线宽为2```4. 三维曲线: 使用 `plot3()` 可以绘制三维曲线。
例如:```matlabx = linspace(-5,5,100); % 生成一个从-5到5的等差数列y = sin(x); % 对x应用sin函数z = x.^2; % 对x应用平方函数plot3(x, y, z); % 绘制三维曲线```5. 定制化曲线: MATLAB 的绘图功能非常强大,可以定制化曲线的样式、颜色、线型等。
excel怎么绘制多条曲线一般情况,我们常用的都是直接插入一条曲线的图表。
但有些时候,我们在完成实验后,需要对结果进行对比分析。
那么,就会需要在一个图上画多条曲线,将多条曲线进行对比。
但多曲线该如何绘制呢?下面就跟店铺一起看看吧。
excel绘制多条曲线的步骤1、采用的数据如下图所示,数据为作者自己通过matlab随意构造。
两条曲线分别命名为“百度曲线A”和“百度曲线B”。
2、按照下图中的顺序依次操作:插入(红色数字1)-图表(红色数字2)-散点图的选项卡(红色数字3)-红色数字4标识的地方-红色数字5(一个空的图)。
3、在空的图上右键-选择数据-出现选择数据源的对话框,点击添加-出现数据系列的对话框-选择系列名称中的选择区域(红色数字2表示)--点选“百度曲线A”这个名字。
然后点关闭重新回到编辑数据系列对话框。
4、按照同样的方式,编辑x轴的系列值。
点击红色数字2的区域后,按住鼠标左键拉选红色数字1区域的数字,出现后红数2区域的‘编辑数据系列图’。
5、按照同4一样的步骤,选择y轴的系列值。
出现了5-3区域的曲线图。
6、同上,在选择数据源的对话框,点击添加“百度经验曲线B”的系列名称,x轴系列值和y轴系列值。
如下图。
图中已经出现了两条曲线。
7、选择图右侧的“+”号,可以增加坐标轴标题和图例等,如下图。
可以修改坐标轴标题等。
选中“图例(百度曲线A和百度曲线B)”后,可以右键选择“字体”,对图例的字体进行修改。
x轴和y轴的坐标题同样也可这样修改字体等。
8、选中“百度曲线A”后--右键--设置数据系列格式--出现8-3所示的设置区域。
选中“线条”可对线条进行修改(如线条的粗细或颜色等)。
选择“标记”-数据系列标记-内置--如选正方形--还可改变形状的大小。
效果图如下。
9、同样对标记中的‘填充’和‘边框’都可以进行相应的设置,达到自己满意的效果。
10、同样也可以对“效果”和“大小属性”等进行设置,需要自己调整以便达到满意的效果。
应用Bladegen的离心叶轮三维建模新方法董敏;郭信心;马昌飞;李想【摘要】由于离心叶轮外形的复杂性,用传统的三维造型软件直接建模步骤非常繁琐,处理数量庞大的坐标点更是费时费力.通过对叶轮造型方法进行研究,提出了一种基于Bladegen的离心叶轮造型方法,避免了数据调入和数据处理的繁琐,根据计算得到的几何尺寸运用Bladegen生成叶片型线,再将生成的叶型数据文件导入Pro/E进行实体造型.将Bladegen运用到叶轮造型中可以快速生成满足相关条件的叶轮,同时以数据文件作为两个软件之间的桥梁方便了模型的修改,缩短了叶轮设计周期,节约了成本.%The modeling procedure is very complicated with the traditional 3D modeling software due to the complexity of the shape of the centrifugal impeller. It's more time-consuming and laborious processing the large number of data. Three dimensional modeling procedure based on Bladegen is introduced through the research of the centrifugal impeller.According to the geometric dimension obtained by calculation,the blade model lines that generated in Bladegen are imported in Pro/E to generate the impeller entity so as to avoid the complex step of importing data and processing data.Bladegen module used in impeller modeling can rapidly generate impellers that fulfill the relevant conditions and modify the model using data files as an intermediary,shorten the computation period and save the cost.【期刊名称】《机械设计与制造》【年(卷),期】2018(000)002【总页数】4页(P228-230,234)【关键词】叶轮;Bladegen模块;计算机辅助设计;三维建模;PRO/E;离心压缩机【作者】董敏;郭信心;马昌飞;李想【作者单位】燕山大学机械工程学院,河北秦皇岛066004;燕山大学机械工程学院,河北秦皇岛066004;燕山大学机械工程学院,河北秦皇岛066004;燕山大学机械工程学院,河北秦皇岛066004【正文语种】中文【中图分类】TH161 引言在离心压缩机中,叶轮是核心部件。
自文件一次创建多条曲线的方法(ibl文件的使用)附图片教程
大体步骤如下:
1.新建一个txt文件,改后缀为ibl。
2.用记事本打开1中文件,输入类似以下内容
open
arclength
begin section!
begin curve!
1 10 20 50
2 30 40 60
3 50 70 90
4 30 150 100
注意数字对应x,y,z坐标,根据你的需要更改。
(上面的英文一定要留下)
3.保存文件到工作目录下(注意文件名不要用中文)。
4.新建prt,插入基准曲线,选择“自文件”,按照提示直到选择上面你建立的ibl文件为止。
ok成功!
下面是详细过程:(举个例子)
第一步建一个txt文件,改后缀为ibl
第二步仍然用记事本打开ibl文件,输入图中内容,并保存文件到你工作目录,文件名为cure(别的非中文破衣支持的都可以)
第三步新建part档,按图进行以后的步骤!
第四步按系统提示进行成功创建了三条曲线。