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 ) );
}