How to use dxflib library?
-
Hello. Has anyone tried to work with the dxflib library? I have several dxf files and I want to write an application that will return the dimension information of the item in the dxf drawing.
I added dxf to my Qt project. Below is my main function:
int main() { std::string file("/Users/mikolajnawrocki/Documents/GitHub/dxfReader/164448_Freigegeben.dwg.dxf"); DL_Dxf dxf; if (dxf.in(file, nullptr)) { //TODO } return 0; }
and my class:
class MyInterface: public DL_CreationInterface{ public: void addLayer(const DL_LayerData& data); void processCodeValuePair(unsigned int groupCode, const std::string& groupValue); void endSection(); void addLinetype(const DL_LinetypeData& data); void addLinetypeDash(double length); void addBlock(const DL_BlockData& data) ; void endBlock(); void addTextStyle(const DL_StyleData& data) ; void addPoint(const DL_PointData& data); void addLine(const DL_LineData& data); void addXLine(const DL_XLineData& data); void addRay(const DL_RayData& data); void addArc(const DL_ArcData& data); void addCircle(const DL_CircleData& data); void addEllipse(const DL_EllipseData& data); void addPolyline(const DL_PolylineData& data); void addVertex(const DL_VertexData& data); void addSpline(const DL_SplineData& data); void addControlPoint(const DL_ControlPointData& data); void addFitPoint(const DL_FitPointData& data); void addKnot(const DL_KnotData& data); void addInsert(const DL_InsertData& data); void addTrace(const DL_TraceData& data); void add3dFace(const DL_3dFaceData& data); void addSolid(const DL_SolidData& data); void addMText(const DL_MTextData& data); void addMTextChunk(const std::string& text); void addText(const DL_TextData& data); void addArcAlignedText(const DL_ArcAlignedTextData& data); void addAttribute(const DL_AttributeData& data); void addDimAlign(const DL_DimensionData& data, const DL_DimAlignedData& edata); void addDimLinear(const DL_DimensionData& data, const DL_DimLinearData& edata); void addDimRadial(const DL_DimensionData& data, const DL_DimRadialData& edata); void addDimDiametric(const DL_DimensionData& data, const DL_DimDiametricData& edata); void addDimAngular(const DL_DimensionData& data, const DL_DimAngular2LData& edata); void addDimAngular3P(const DL_DimensionData& data, const DL_DimAngular3PData& edata); void addDimOrdinate(const DL_DimensionData& data, const DL_DimOrdinateData& edata); void addLeader(const DL_LeaderData& data); void addLeaderVertex(const DL_LeaderVertexData& data); void addHatch(const DL_HatchData& data); void addImage(const DL_ImageData& data); void linkImage(const DL_ImageDefData& data); void addHatchLoop(const DL_HatchLoopData& data); void addHatchEdge(const DL_HatchEdgeData& data); void addXRecord(const std::string& handle); void addXRecordString(int code, const std::string& value); void addXRecordReal(int code, double value); void addXRecordInt(int code, int value); void addXRecordBool(int code, bool value); void addXDataApp(const std::string& appId); void addXDataString(int code, const std::string& value); void addXDataReal(int code, double value); void addXDataInt(int code, int value); void addDictionary(const DL_DictionaryData& data); void addDictionaryEntry(const DL_DictionaryEntryData& data); void endEntity(); void addComment(const std::string& comment); void setVariableVector(const std::string& key, double v1, double v2, double v3, int code); void setVariableString(const std::string& key, const std::string& value, int code); void setVariableInt(const std::string& key, int value, int code); void setVariableDouble(const std::string& key, double value, int code); void endSequence(); };
As you can see I do not know what should I do after I open dxf file. Of course I checked documentation but I found only instruction for writing dxf file not for reading.
If anyone has had the opportunity to work with this library, I will be grateful for the tip.
Have a good Day
BushyAxis793 -
Hi,
From a quick look at the example from the first GitHub repo listed by a Google search, it seems that the goal of the creation class is for you to handle whatever element is loaded from the file. So in your case you might want to draw each element on a QImage.