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

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

<p>新人上路,一来向大家问好,二来有问题想讨教大家,希望各位多多帮忙</p><p>我有一段数控等离子切割机的切割指令,想通过它反向编译成cad文件,在此过程中遇到一些问题讨教</p><p>1.轻质多义线动态数组:我不知为何多义线数组老是下标出界,(详见我的程序说明)</p><p>2.我将多义线生成写成一个子程序,在主程序中调用也总是无效的过程和参数</p><p>请大家指导指导!</p><p>&nbsp;&nbsp;</p><p>----------------------------------------------------------</p><p>以下是部分划线指令及坐标</p><p>-----------------------------------------------------------</p><p>%<br/>O0857&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>G92 x 0 y 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 绝对坐标归0,0<br/>G91&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相对坐标开始<br/>G21<br/>M11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 划线程序开始<br/>G00 x 359.98 y 464.15&nbsp; 快速移动到X,Y<br/>M09&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 划线开始<br/>G01 x -50.00 y 0.00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 直线<br/>G01 x 0.00 y 1072.48<br/>G01 x 30.00 y 40.00<br/>G01 x -30.00 y 40.00<br/>G01 x 0.02 y 1072.48<br/>G01 x 50.00 y 0.00<br/>M10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 划线结束<br/>G00 x 1488.99 y 252.45<br/>。。。。。。。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此处省略一些<br/>M09<br/>G03 x 140.00 y -140.00 i 140.00 j 0.00<br/>G01 x 500.00 y 0.00<br/>G03 x 140.00 y 140.00 i 0.00 j 140.00<br/>G01 x 0.00 y 1300.00<br/>G03 x -140.00 y 140.00 i -140.00 j 0.00<br/>G01 x -500.00 y 0.00<br/>G03 x -140.00 y -140.00 i 0.00 j -140.00<br/>G01 x 0.00 y -1290.00<br/>M10<br/>G00 x -2768.99 y -1127.89<br/>M12<br/>M00<br/>G00 x 12.26 y 9.56</p>

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

<p>直接用直线和圆弧不好么?</p>

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

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

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

本帖最后由 作者 于 2008-2-24 20:36:25 编辑

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

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

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

转换后如图

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

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

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

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