如何 remove/locate 我的 dxf 文件中的无效对象?
How to remove/locate invalid object in my dxf file?
当我在 LibreCAD 中打开特定的 Dxf 文件时,libreCAD 中的命令行对话框显示:
Invalid objects removed : 1
我想在我的 dxf 文件中检测到这个无效对象并将其删除。对象何时变为无效?无效对象是什么意思?
因为我在这里没有收到任何答案,所以我决定深入研究 libreCAD 源代码,并在 rs_graphic.cpp 中找到了这个:
/**
* Removes invalid objects.
* @return how many objects were removed
*/
int RS_Graphic::clean()
{
// author: ravas
int how_many = 0;
foreach (RS_Entity* e, entities)
{
if (e->getMin().x > e->getMax().x
|| e->getMin().y > e->getMax().y
|| e->getMin().x > RS_MAXDOUBLE
|| e->getMax().x > RS_MAXDOUBLE
|| e->getMin().x < RS_MINDOUBLE
|| e->getMax().x < RS_MINDOUBLE
|| e->getMin().y > RS_MAXDOUBLE
|| e->getMax().y > RS_MAXDOUBLE
|| e->getMin().y < RS_MINDOUBLE
|| e->getMax().y < RS_MINDOUBLE)
{
removeEntity(e);
how_many += 1;
}
}
上面的代码是不言自明的,我希望这对以后想知道同样问题的人有所帮助。
当我在 LibreCAD 中打开特定的 Dxf 文件时,libreCAD 中的命令行对话框显示:
Invalid objects removed : 1
我想在我的 dxf 文件中检测到这个无效对象并将其删除。对象何时变为无效?无效对象是什么意思?
因为我在这里没有收到任何答案,所以我决定深入研究 libreCAD 源代码,并在 rs_graphic.cpp 中找到了这个:
/**
* Removes invalid objects.
* @return how many objects were removed
*/
int RS_Graphic::clean()
{
// author: ravas
int how_many = 0;
foreach (RS_Entity* e, entities)
{
if (e->getMin().x > e->getMax().x
|| e->getMin().y > e->getMax().y
|| e->getMin().x > RS_MAXDOUBLE
|| e->getMax().x > RS_MAXDOUBLE
|| e->getMin().x < RS_MINDOUBLE
|| e->getMax().x < RS_MINDOUBLE
|| e->getMin().y > RS_MAXDOUBLE
|| e->getMax().y > RS_MAXDOUBLE
|| e->getMin().y < RS_MINDOUBLE
|| e->getMax().y < RS_MINDOUBLE)
{
removeEntity(e);
how_many += 1;
}
}
上面的代码是不言自明的,我希望这对以后想知道同样问题的人有所帮助。