栏目
/ Category
联系我们
/ CONTACT US
  • 地 址:江苏省如皋市中山路东方豪都6楼
  • 电 话:0513-87289069/68760932
  • 传 真:0513-87289069
  • 邮 箱:webmaster@jsyyl.com
技术新闻|Safe前处理程序新的小版本0.8

一、算法:


1、根据AutoCad里的预应力筋布置图,应用ObjectArx2002结合VC++6.0程序,读取图层上所有AcDbLine的功能,然后设定支座线Split图层,求取两个直线数组的交点集合,以确定预应力筋的支座。


2、编程过程中,因为读取的线段是随机的,所以某个split点不是按顺序进行排列,C++标准程序库STL中虽然有泛型Sort算法,但是不能对Point进行排列。仔细研究STL的Sort函数后,确定是ObjectArx的AcGePoint3d类没有"<"运算符,所以导致无法正确地调用Sort函数。因此,本程序进行了改进,重新设计了一个继承自AcGePoint3d的CKLAcGePoint3d类,并且重载了几个运算符,使得本程序可以对点坐标进行正确地排列。


3、类的定义如下:


class CKLAcGePoint3d :public AcGePoint3d

{

public:

CKLAcGePoint3d& operator=(const CKLAcGePoint3d&pt);

bool operator<(const CKLAcGePoint3d&pt);

bool operator==(const CKLAcGePoint3d&pt);

CKLAcGePoint3d();

CKLAcGePoint3d(const AcGePoint3d&pt);

virtual ~CKLAcGePoint3d();

};


4、运算符"<"重载如下:


bool CKLAcGePoint3d::operator<(const CKLAcGePoint3d&pt)

{

if (*this==pt)

{

return false;

}

if (fabs(this->x)<0.001f&&fabs(pt.x)<0.001f)

{

if (this->y<pt.y)

{

return true;

}

else

{

return false;

}

}

else

{

if ((this->x-pt.x)<0.001f)

{

return true;

}

else

{

return false;

}

}

}


二、程序界面:


1、在ObjectArx中调用mfc的对话框如图所示:




2、预应力筋平面布置图:



其中,红线表示预应力筋,蓝线表示支座。


3、Cad命令流:



其中yyltxt为ObjectArx生成的Autocad命令。


4、生成的数据文件:



5、生成的Safe预应力计算模型及曲线:




三、Safe前处理程序具备的基本功能:


1、程序根据图形,自动划分板带,生成板带数据文件,然后在safe里布置板带。


2、自动读取AutoCad的预应力平面布置图,根据预应力平面布置图,确定预应力筋的基本数据信息,然后写入预应力筋数据文件。


3、自动合并预应力筋、板带数据生成的重复点,自动计算点编号,并生成最终的计算文件,供Safe软件导入。


上一篇:程序技术 | 浅析函数的堆栈框架
下一篇:技术文章|Safe前处理程序新的小版本0.85
返回顶部