diff --git a/README.md b/README.md index ed024ba..dd0de6e 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,7 @@ # OpenOrCadParser -Purpose of this project is to provide a C++17 library for parsing [Cadence](https://en.wikipedia.org/wiki/Cadence_Design_Systems)'s OrCAD Capture binary file formats. This library can be linked to other software for reading/modifying?/writing? OrCAD binary files. - -**See also the complementary project [OpenAllegroParser](https://github.com/Werni2A/OpenAllegroParser).** +Purpose of this project is to provide a C++17 library for parsing [Cadence](https://en.wikipedia.org/wiki/Cadence_Design_Systems)'s OrCAD Capture binary file formats. This library can be linked to other software for reading/modifying?/writing? OrCAD binary files. This repository does not cover every possible use case, maybe you find what you are looking for in section [Related Projects](doc/related_projects.md). The focus lies on schematics (`*.DSN`/`*.DBK`) and symbol libraries (`*.OLB`/`*.OBK`), the second file format is just the extension for its corresponding backup file. Backups should be identical, just with a different file extension. @@ -124,14 +122,6 @@ python pyorlib2ki.py -i $XML_PATH -o $SYM_PATH --- -# Related Projects - -[orlib2ki](https://github.com/fjullien/orlib2ki) (C based OrCAD XML Library to KiCad Converter) - -[pyorlib2ki](https://github.com/fjullien/pyorlib2ki) (Python based OrCAD XML Library to KiCad Converter) - ---- - # How to Contribute? There are different ways to help this project forward. Some are diff --git a/doc/related_projects.md b/doc/related_projects.md new file mode 100644 index 0000000..63a2f53 --- /dev/null +++ b/doc/related_projects.md @@ -0,0 +1,42 @@ +# Related Projects + +## orlib2ki + +C based OrCAD XML Library to KiCad Converter. + +- [Repository](https://github.com/fjullien/orlib2ki) + +## pyorlib2ki + +Python based OrCAD XML Library to KiCad Converter + +- [Repository](https://github.com/fjullien/pyorlib2ki) + +## OrView + +Utility to view Orcad V4.x and Orcad 32-bit Dos files (`*.sch`). Provided by Mace Tech Computer Systems. + +- [Homepage](https://web.archive.org/web/20050305202111/http://www.umace.com/index.html) +- Download: + - [`oview` Version 1.08](https://web.archive.org/web/20051104230341/http://umace.com/downloads/oview108.zip) + - SHA256: `c344cef436deefb7085c1b925fc87721b975f1a424ed59a4435bc6fbb3e01024` +- You are allowed to use this software for evaluation purposes before required to purchase a license. +- Note that the company 'Mace Tech Computer Systems' is dissolved since 2011-03-08, see [Company Information in the UK](https://find-and-update.company-information.service.gov.uk/company/03411782). + +## AutoVue EDA Professional + +'AutoVue is the leading viewer for OrCAD' as statement on Oracle's website. It allows opening multiple file formats ranging from OrCAD version 15.7 to 16.6. + +- [Homepage](https://www.oracle.com/apps-tech/autovue/orcad-viewer.html) +- Commercial Software + +## Altium + +Schematic and layout EDA tool providing an importer for OrCAD designs. + +- [Homepage](https://www.altium.com/) +- Commercial Software +- References: + - [Importing a Design from OrCAD](https://www.altium.com/documentation/altium-designer/orcad-import) + - [Cadence OrCAD to Altium Designer Migration Guide](https://resources.altium.com/sites/default/files/2022-04/Cadence%20OrCAD%C2%AE%20Migration%20Guide_0.pdf) +- Note that you can import into Altium and and import the Altium design into KiCAD \ No newline at end of file diff --git a/src/DataStream.cpp b/src/DataStream.cpp index 30703c3..1c4766c 100644 --- a/src/DataStream.cpp +++ b/src/DataStream.cpp @@ -35,7 +35,7 @@ std::string DataStream::readStringZeroTerm() { std::string str; - const size_t max_chars = 2500u; + const size_t max_chars = 3500u; for(size_t i = 0u; i < max_chars; ++i) { diff --git a/src/PageSettings.cpp b/src/PageSettings.cpp index f49be06..3cc4615 100644 --- a/src/PageSettings.cpp +++ b/src/PageSettings.cpp @@ -43,6 +43,7 @@ void PageSettings::read(FileFormatVersion /* aVersion */) mCtx.mLogger.trace("horizontalCount = {}", horizontalCount); mCtx.mLogger.trace("verticalCount = {}", verticalCount); + // @todo Probably related to Spice simulations ds.printUnknownData(2, getMethodName(this, __func__) + ": 5"); horizontalWidth = ds.readUint32(); diff --git a/src/Streams/StreamPage.cpp b/src/Streams/StreamPage.cpp index f2313e0..e7bf8e6 100644 --- a/src/Streams/StreamPage.cpp +++ b/src/Streams/StreamPage.cpp @@ -163,7 +163,7 @@ void StreamPage::read(FileFormatVersion /* aVersion */) const auto s = parser.readStructure(); if(s) { - mCtx.mLogger.debug("VERIFYING Page Structure10 is {}", NAMEOF_TYPE_RTTI(*s)); + mCtx.mLogger.trace("VERIFYING Page Structure10 is {}", NAMEOF_TYPE_RTTI(*s)); } } @@ -177,7 +177,7 @@ void StreamPage::read(FileFormatVersion /* aVersion */) const auto s = parser.readStructure(); if(s) { - mCtx.mLogger.debug("VERIFYING Page Structure11 is {}", NAMEOF_TYPE_RTTI(*s)); + mCtx.mLogger.trace("VERIFYING Page Structure11 is {}", NAMEOF_TYPE_RTTI(*s)); } } diff --git a/src/Structures/StructPartInst.cpp b/src/Structures/StructPartInst.cpp index 72a57d7..b4d0444 100644 --- a/src/Structures/StructPartInst.cpp +++ b/src/Structures/StructPartInst.cpp @@ -80,9 +80,9 @@ void StructPartInst::read(FileFormatVersion /* aVersion */) localFutureLst.checkpoint(); - const std::string sth1 = ds.readStringLenZeroTerm(); // @todo needs verification + const std::string source_package = ds.readStringLenZeroTerm(); // @todo needs verification - mCtx.mLogger.trace("sth1 = {}", sth1); + mCtx.mLogger.trace("source_package = {}", source_package); ds.printUnknownData(2, getMethodName(this, __func__) + ": 5");