金色的烟 发表于 2008-2-24 02:56:00

数控切割机的切割指令反向编译成cad文件中的一些动态数组的问题

新人上路,一来向大家问好,二来有问题想讨教大家,希望各位多多帮忙
我有一段数控等离子切割机的切割指令,想通过它反向编译成cad文件,在此过程中遇到一些问题讨教
1.轻质多义线动态数组:我不知为何多义线数组老是下标出界,(详见我的程序说明)
2.我将多义线生成写成一个子程序,在主程序中调用也总是无效的过程和参数
请大家指导指导!

----------------------------------------------------------
以下是部分划线指令及坐标
-----------------------------------------------------------
%
O0857               
G92 x 0 y 0                      绝对坐标归0,0
G91                              相对坐标开始
G21
M11                              划线程序开始
G00 x 359.98 y 464.15快速移动到X,Y
M09                              划线开始
G01 x -50.00 y 0.00       直线
G01 x 0.00 y 1072.48
G01 x 30.00 y 40.00
G01 x -30.00 y 40.00
G01 x 0.02 y 1072.48
G01 x 50.00 y 0.00
M10                               划线结束
G00 x 1488.99 y 252.45
。。。。。。。               此处省略一些
M09
G03 x 140.00 y -140.00 i 140.00 j 0.00
G01 x 500.00 y 0.00
G03 x 140.00 y 140.00 i 0.00 j 140.00
G01 x 0.00 y 1300.00
G03 x -140.00 y 140.00 i -140.00 j 0.00
G01 x -500.00 y 0.00
G03 x -140.00 y -140.00 i 0.00 j -140.00
G01 x 0.00 y -1290.00
M10
G00 x -2768.99 y -1127.89
M12
M00
G00 x 12.26 y 9.56

雪山飞狐_lzh 发表于 2008-2-24 10:58:00

直接用直线和圆弧不好么?

金色的烟 发表于 2008-2-24 13:44:00

呵呵,首先谢谢雪山飞狐版主的留意,
用直线和圆弧是可以的,但因为划线和切割都是圆弧和直线的话,选择起来有可能不是很方便,一张切割版图有可能有几千条小的直线和圆弧产生,特别是二次函数样条捏合的曲线。
再讲数组和多义线始终是我们这些初学VB的蔡鸟要逾越的门槛,所以还请多多指教。
我才自学VB了10几天,如果说法上有些不妥,还请见谅。

雪山飞狐_lzh 发表于 2008-2-24 20:31:00


Dim pnts() as double
ReDimPreservepnts(1)
pnts(0) = 0
pnts(1) = 10
count = 1
count = count + 2
ReDimPreservepnts(count )
......

金色的烟 发表于 2008-2-25 19:43:00

谢谢,版主
我昨天夜里已经修正好了,和你教的大同小异,
现在已经可以成功的转换了,果然用Preserve可以保存原来的值。

金色的烟 发表于 2008-2-25 19:45:00

转换后如图

Snowflying 发表于 2008-2-29 20:28:00

呵呵我也是做线切割的,不过我用的是3b程序
我现在做完了,用图形生成3b程序的功能。(反向的用3b程序生成图形,以前用vb实现过,不是很难,只是有些繁琐)
利用图形生成3b程序的确为难了我很长时间,其核心是偏移补偿的算法。为了偷懒我利用的是cad内建的 多段线的偏移功能,然后生成代码。我的实现方案是选取串连的图形,然后生成多段线,然后根据补偿量利用多段线的偏移生成补偿后的图形,然后将偏移后的多段线分解成直线和圆弧。
其中的核心算法是,多段线解析成圆弧,就是求凸度值非0的多段线的圆心。
奇怪的是我的程序,当单独的解析多段线的时候毫无问题能够正确的判断圆心,可是当利用其生成3b代码是判断却错误,而使用的核心函数完全相同。。。。
太郁闷了 。。。

chenhhui 发表于 2008-8-31 15:49:00

牛X,把你做的发上来看看呀。
我也学着做一个。
5
+4600+100
6
11
5
9
+0+8950
+300+400
-300+400
+0+8450
+500+0
10
+5445+0
9
-500+0
+0-8450
+300-400
-300-400
+0-8950
10
+5555+0
9
+0+8950
-300+400
+300+400
+0+8450
-500+0
10
+5500+0
9
+500+0
+0-8450
-300-400
+300-400
+0-8950
10
+7700+0
9
+0+8950
-300+400
+300+400
+0+8450
-500+0
10
+7500+0
9
+500+0
+0-8450
-300-400
+300-400
+0-8950
10
+7600+0
9
+0+8950
-300+400
+300+400
+0+8450
-500+0
10
+6700+0
9
+0-8700
-300-400
+300-400
+0-8700
10
+9000+0
9
+0+8700
-300+400
+300+400
+0+8700
10
+9000+0
9
+0-8700
-300-400
+300-400
+0-8700
10
+6270+0
9
+0+7200
-300+400
+300+400
+0+7200
10
+7600+0
9
+0-7200
-300-400
+300-400
+0-7200
10
+6200+0
9
+0+7200
-300+400
+300+400
+0+7200
10
+7700+0
9
+500+0
+0-6950
-300-400
+300-400
+0-7450
10
6
12
0
5
-96340+18350
6
30
7
+20+0
+50-50+0-50-
+0-18300
+69500+0
+0+18300
-69500+0
8
38
5
+69530-2950
6
30
7
+20+0
+50-50+0-50-
+0-15300
+30170+0
+0+15300
-30170+0
8
38
64
页: [1]
查看完整版本: 数控切割机的切割指令反向编译成cad文件中的一些动态数组的问题