//用经纬度表示的DEM起源X坐标,//最上端深度

图片 2

小弟现在在用teechart2014做个图表,以前隐藏网格直接用Axes.Bottom.GridPen.Visible=false,就可以隐藏网格。现在用vs2013,用什么接口类来获取get_GridPen呢?m_TChart-AddSeries(0);CAxesAxis=(CAxes)m_TChart-get_Axis();CAxisY_Axis=Axis.get_Left();CAxisX_Axis=Axis.get_Bottom();X_Axis.SetMinMax(0.5,x+0.5);//X坐标Y_Axis.SetMinMax(up_y+2,low_y-2);//Y坐标X_Axis.put_Inverted(inverse);CXXXXGridPen=X_Axis.get_GridPen();

 

图片 1

IPnt pBlockSize = new DblPntClass();

 


前言Mastercam是一套广泛应用于具有复杂外形零件的建模和CAM加工的软件,它可以根据已建模型产生精确可靠的刀具路径,然后经由所选的不同控制系统的后置处理程序输出不同机床用的NC加工程序。该软件提供了许多种类的后置处理程序,几乎涵盖了所有主流的数控机床。由于数控机床的控制系统版本很多,直接应用软件所提供的后置处理程序产生的NC程序一般都要经过简单的改动后才能投入生产中去,虽然每次改动的工作量不大,但长此以往显得很繁琐且容易出错。经过笔者的研究发现,可以通过更改后置处理程序一劳永益的解决问题,这样还可以使产生的NC程序符合自己的编程习惯。二
MAHO加工中心与Mastercam软件坐标系统的转换某型号MAHO加工中心为五坐标立卧转换式,默认为卧式,坐标系统如图一所示:当使用卧式加工时主轴与Z轴方向平行,当使用立式加工时主轴与Y轴方向平行。Mastercam使用MPMAHOXY.pst后置处理G17平面下的NC程序,用MPMAHOXZ.pst后置处理G18平面平面下的NC程序,而Mastercam系统中3维加工视图的刀路平面默认是TOP面,与图一中的G17卧式加工坐标系统相吻合,所以利用MPMAHOXY.pst作为后置处理程序产生的G17下的卧式NC加工程序的坐标系统没有变化,程序相对正确,几乎不用修改。而使用MPMAHOXZ.pst作为后置处理程序产生的G18下的立式NC加工程序的坐标系统发生了变化,不能直接用于生产,需要经过一些修改才行。经过研究发现,MPMAHOXZ.pst在处理NC程序过程中仍然使用的是G17平面状态下的模型以及刀具路径,只是在生成NC程序时坐标轴的设定做了变动,变化过程如图二所示。第一步:将整个坐标系及工件绕X轴旋转-90度;第二步:将Y、Z坐标值互换,X坐标值改变方向。此时大家可以看到现在的坐标系的方向与G18立式加工平面的X、Z坐标方向相反,所以不能直接用于生产。在不修正后置处理程序的情况下,有两种方法可改动NC程序进行加工:方法一是给程序中加入坐标系旋转指令G93
B4=180,就是将整个坐标系绕现在的Y轴旋转180度;方法二是使用镜像加工指令G73
X-1
Z-1,就是分别将NC程序中的X、Z坐标值变向。虽然这样做可以达到加工的目的,但操作者反应不直观,因为指令中的走刀方向与实际的走刀方向是相反的,给操作者带来了视觉误差。所以很有必要对立式加工的后置处理程序做以修正。三
MPMAHOXZ.pst后置处理程序中坐标变换的修正根据以上分析,我们可以通过修正后置处理程序MPMAHOXZ.pst中的部分语句达到我们的目的,为了满足由卧铣G17模型变立铣后的坐标系统的统一,我们也可通过两步完成,第一步:将整个坐标系及工件绕X轴旋转-90度(与图二中第一步相同);第二步:将Z变为Y,
Y变为Z的负方向,X坐标值不变。原程序坐标系变化的部分程序段如下: #
————————————————————————–#
Axis output formats – Linear [坐标轴输出格式—线性]#
————————————————————————–fmt
X 1 x # X Axis Pos [X轴名称不变]fmt Z 1 y # Y Axis Pos
[Z轴变为Y轴]fmt Y 1 z # Z Axis Pos [Y轴变为Z轴] #
————————————————————————–#
Axis output formats – Circular [坐标轴输出格式—圆形]#
————————————————————————–fmt
I 1 xc # Arc Center X [圆心X坐标为I]fmt K 1 yc # Arc Center Y
[圆心Y坐标变为K]fmt J 1 zc # Arc Center Z [圆心Z坐标变为J]#
————————————————————————–#
Formulas – Use ‘:’ instead of ‘=’ to initialize variables
[坐标值的比例]#
————————————————————————–scalex
: -1.0 # Scaling of .NCI at input – x,y,z,i,j,k [X坐标取负]scaley :
1.0 # Scaling of .NCI at input – x,y,z,i,j,k [Y符号不变]scalez : 1.0
# Scaling of .NCI at input – x,y,z,i,j,k [Z符号不变]#
————————————————————————–现在仅需要修改坐标值的比例部分就可以使后置出来的程序坐标系统无需另外更改了,以下为改正后的内容:#
————————————————————————–scalex
: 1.0 # Scaling of .NCI at input – x,y,z,i,j,k [X坐标不变]scaley :
-1.0 # Scaling of .NCI at input – x,y,z,i,j,k [Y坐标取负]scalez : 1.0
# Scaling of .NCI at input – x,y,z,i,j,k [Z符号不变]#
————————————————————————–四
后置处理程序中程序头尾的完善以MPMAHOXZ.pst程序为例,说明完善的过程。因MAHO加工中心也具有加工图形模拟显示功能,所以在数控加工程序前要加入MAHO用的工件毛坯尺寸,而工件的毛坯尺寸要调用Mastercam中的毛坯尺寸的某些值,这些值的定义和计算的程序段要加入到定义参数项的行后,程序段如下:fmt
9 stck_x [定义Mastercam中毛坯中心点X坐标]fmt 9 stck_y
[定义Mastercam中毛坯中心点Y坐标]fmt 9 stck_z
[定义Mastercam中毛坯中心点Z坐标]fmt 9 stck_ht
[定义Mastercam中毛坯长度]fmt 9 stck_wdth
[定义Mastercam中毛坯宽度]fmt 9 stck_thck
[定义Mastercam中毛坯高度]fmt 9 blk_xmin
[定义MAHO立式状态下毛坯起点X坐标]fmt 9 blk_ymin
[定义MAHO立式状态下毛坯起点Y坐标]fmt 9 blk_zmin
[定义MAHO立式状态下毛坯起点Z坐标]fmt 9 blk_hztwd
[定义MAHO立式状态下毛坯高度增量]blk_xmin=stck_x-stck_ht/2
[计算MAHO立式状态下毛坯起点X坐标值]blk_zmin=-(stck_y-stck_wdth/2)
[计算MAHO立式状态下毛坯起点Z坐标值]blk_ymin=stck_z-stck_thck
[计算MAHO立式状态下毛坯起点Y坐标值]blk_hztwd=-stck_wdth
[计算MAHO立式状态下毛坯高度方向的增量]设定出毛坯尺寸后就可以改动输出部分的程序了,经过改动后的部分程序如下:pheader
“%PM”progno n, “M54” [加入立铣头回位指令]n, “G18”
[加入G18平面指令]n, “G54”
[由G52改为G54,G52只是参考点的暂存值,很容易被误修改]n,
“G98″,”X”,blk_xmin,”Y”,blk_ymin,”Z”,blk_zmin,”I”,stck_ht,
“J”,stck_thck,”K”,blk_hztwd [加入切削模拟范围指令]n,
“G99″,”X”,blk_xmin,”Y”,blk_ymin,”Z”,blk_zmin,”I”,stck_ht,
“J”,stck_thck,”K”,blk_hztwd [加入毛坯范围指令]n, “G90”
[加入绝对坐标指令]psof0 # Start of file for tool zeropinitn, “G0 A0
B0 M13” [加入A、B坐标回零指令]n, pcoolonpsof # Start of file for
non-zero tool numberpinitn, ss, t, “M6″,”(D”,tldia,”)”
[加入刀具直径辅助说明]n, “G0 A0 B0 M13”
[换刀后A、B坐标再次回零,防止操作者换刀后检测工件后误动作A、B坐标,确保在下一刀时参考点回位]……n,
“G53” [撤消G54参考点]n, “G0 X780 Y450 Z450” [机床回到检测工件位置]n,
“G0 A0 B0” [在机床坐标系统下回零]n,
“M30″同理,MPMAHOXY.pst也可以参考上面的程序进行完善。五
结论Mastercam的后置处理程序很全面,但在对特定的数控系统使用时还需要进行一些小的改动。另外在改动过程中一定要做好原程序的备份,还要反复比较改动后输出的NC程序是否正确,努力使修改过的NC程序符合自己的编程习惯。

 

tChart1.Axes.Depth.Visible = true;//底部纵深
tChart1.Axes.DepthTop.Visible = true;//顶部纵深

IPoint pPoint = pEnv2.UpperLeft;

//再看一下,顶部纵深,会发现Y轴顶部有bar1,同时,坐标轴有了纵深

int pRows = pRProps.Height;                         //DEM行数

//Right和Top纯属酱油的,当前是没有使用的,无论是true还是false,看不出变化[可能需要另外绑定数据]

double  pBlockX = (double)pRProps.MeanCellSize().X; //网格的X间距

tChart1.Axes.Depth.Visible = false;//底部纵深
tChart1.Axes.DepthTop.Visible = false;//顶部纵深

pBlockSize.Y = pRows;

图片 2

用pPixelData.GetValue(j,
k)来获得每一个栅格的高程值

 

System.Array pPixelData =
(System.Array)pPixelBlock.get_PixelDataByRef(0);

坐标系在曲线下的图片

IEnvelope2 pEnv2 = new EnvelopeClass();

Minimum :Sets Axis Minimum value. //最小值
Maximum :Sets Axis Maximum value. //最大值
Increment :Is the minimum step between axis labels. Can use
DateTimeSteps for date-time
axis.//步长[TeeChart不存在最小步长和最大步长一说]

IGeoDataset pGeoDataset = (IGeoDataset)pRaster;

Steema.TeeChart.Axes.DrawBehind Property

pRawPixels.Read(pBlockOrigin, (IPixelBlock)pPixelBlock);

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图