php读取dxf,分享个DXF转G代码的实例

import win.ui;

/*DSG{ {*/

var winform = win.form(text="aardio form";right=759;bottom=469;acceptfiles=1)

winform.add(

button={cls="button";text='\u2460获取有效数据';left=609;top=363;right=757;bottom=466;font=LOGFONT(h=-21);z=2};

button2={cls="button";text='\u2461生成ARC';left=5;top=363;right=138;bottom=466;font=LOGFONT(h=-21);z=3};

button3={cls="button";text='\u2464生成正序G';left=304;top=363;right=436;bottom=466;font=LOGFONT(h=-21);z=6};

button4={cls="button";text='\u2462排序';left=139;top=363;right=221;bottom=466;font=LOGFONT(h=-21);z=4};

button5={cls="button";text='\u2463结果';left=225;top=363;right=300;bottom=466;font=LOGFONT(h=-21);z=5};

button6={cls="button";text="生成反序G";left=442;top=363;right=579;bottom=466;font=LOGFONT(h=-21);z=7};

edit={cls="edit";left=0;top=0;right=760;bottom=362;edge=1;multiline=1;vscroll=1;z=1}

)

/*}}*/

var filePath,fileContents;

import console;

console.open()

winform.wndproc = function(hwnd,message,wParam,lParam){

select( message ) {

//拖拽文件到窗体里

case 0x233/*_WM_DROPFILES*/{

filePath = win.getDropFile(wParam )[1];

}

else{

}

}

}

class entitiesClass{

line = {};

arc = {};

}

class line{

//线段的第一个点

float x1 = 0.0;

float y1 = 0.0;

float z1 = 0.0;

//线段的第二个点

float x2 = 0.0;

float y2 = 0.0;

float z2 = 0.0;

};

class arc{

//弧形的第一个点

float x1 = 0.0;

float y1 = 0.0;

float z1 = 0.0;

//弧形第二个点

float x2 = 0.0;

float y2 = 0.0;

float z2 = 0.0;

//弧形半径

float R = 0.0;

//弧形圆心点

float xx = 0.0;

float yy = 0.0;

float zz = 0.0;

//弧形起始角度和终止角度

float startN = 0.0;

float endN = 0.0;

};

var G_line = line();

var G_arc = arc();

var entitiesTab = entitiesClass();

var entitiesStart = false;

winform.button.oncommand = function(id,event){

winform.edit.text = "";

fileContents = io.open(filePath,"r+");

fileContents.seek("set");

do{

//读取文件的一行

var stringLine = tostring(fileContents.read());

//去除该行的首尾空白字符之后进行判断

select( string.trim( stringLine ) ) {

case "ENTITIES" {

console.log("找到实体文件! 开始解析:");

entitiesStart = true;

}

case "LINE" {

//只有找到实体线条模块之后,线条类型解析才有效

if(entitiesStart == true){

//循环读取直到找到线属性这行

while( fileContents.read() != "AcDbLine" ){        };

//LINE线属性共有6组,其中每组第一行是特定属性名,第二行是属性值

for(i=1;6;1){

select( string.trim(tostring( fileContents.read() )) ) {

case "10" {

var pos = fileContents.read();

G_line.x1 = tonumber( string.format("%.3f",pos ) );

}

case "20" {

var pos = fileContents.read();

G_line.y1 = tonumber( string.format("%.3f",pos ) );

}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值