GithubHelp home page GithubHelp logo

peterzhousz / carpentry-compiler Goto Github PK

View Code? Open in Web Editor NEW

This project forked from helm-compiler/carpentry-compiler

0.0 0.0 0.0 28.45 MB

Our carpentry compiler converts high-level geometric designs made by users to low-level fabrication instructions that can be directly followed to manufacture parts. The compiler performs multi-objective optimization on the low-level instructions to generate Pareto-optimal candidates.

Home Page: https://grail.cs.washington.edu/projects/carpentrycompiler/

C++ 97.84% CMake 0.04% Python 1.91% Batchfile 0.01% Common Lisp 0.21%

carpentry-compiler's Introduction

PartDesign for Carpentry Compiler Project page

Our carpentry compiler converts high-level geometric designs made by users to low-level fabrication instructions that can be directly followed to manufacture parts. The compiler performs multi-objective optimization on the low-level instructions to generate Pareto-optimal candidates.

*Note that the current implementation is developed for research. We could not gurrentee its robustness. For any problem, please email Haisen Zhao ([email protected]).

Usage

1, Download "FreeCADLibs_12.1.4_x64_VC15" from https://github.com/FreeCAD/FreeCAD/releases/download/0.19_pre/FreeCADLibs_12.1.6_x64_VC15.7z;
Extract the package to the local path, "D:\Develop\FreeCADLibs_12.1.4_x64_VC15". This is a package that provides all necessary dependencies to compile FreeCAD with VS2015/17/19 (both release and debug mode). So we do not need to compiler the thired-party libraries for FreeCAD by ourselves. More details could be found in https://github.com/FreeCAD/FreeCAD/releases/tag/0.19_pre.

2, Clone FreeCAD with "git clone https://github.com/chenming-wu/FreeCAD.git" to the local path, "D:\Develop\FreeCAD";

3, Clone this repository by "git clone https://github.com/helm-compiler/carpentry-compiler.git" to the local path "D:\Develop\Testing";
Replace the content of "D:\Develop\FreeCAD\src\Mod\PartDesign" with "D:\Develop\Testing". Now we have only tried to compiler our framework on Windows operating system.

4, Build FreeCAD code with CMake:

4.1 Set FREECAD_LIBPACK_DIR as the path of "FreeCADLibs_12.1.4_x64_VC15";

4.2 Checked "BUILD_QT5";

4.2 Configure and generate;

4.3 Build to the local path, "D:\Develop\FreeCAD\build\";

5, Copy the following code into "D:\Develop\FreeCAD\src\Gui\ApplicationPy.cpp" after line #1090;

if (icon.isNull())  
{  
	QString file = QString::fromUtf8(content.c_str());  
	icon.load(file);  
	if (icon.isNull()) {  
		// ... or the name of another icon?  
		icon = BitmapFactory().pixmap(file.toUtf8());  
	}  
}

6, Compiler FreeCAD with Visual Studio;

7, Copy some files into building folder:

 7.1. Copy the whole folder of "D:\Develop\Testing\Ext\asm3" into "D:\Develop\FreeCAD\build\Ext\freecad";  
      *"asm3" is a python-based mode for assembling;   
      https://github.com/realthunder/FreeCAD_assembly3

 7.2. Copy "carpentry_geom.dll" and "libgmp-10.dll" into "D:\Develop\FreeCAD\build\bin";  
      *"carpentry_geom.dll" includes some basic geometric functions using CGAL, et al.
     
      If you need new geometric functions, you could build the project of "carpentry-geom-lib",  
  https://github.com/helm-compiler/carpentry-geom-lib;
     
 7.3. Copy all files in "E:\Develop\FreeCADLibs_12.1.4_x64_VC15\bin" into "D:\Develop\FreeCAD\build\bin";
 
 7.4 Copy the folder of "E:\Develop\FreeCADLibs_12.1.4_x64_VC15\plugins\platforms" into "D:\Develop\FreeCAD\build\bin";

8, Run;

Citation

If you use this code for your research, please cite our paper:

@article {wu_siga19,
    author = {Chenming Wu and Haisen Zhao and Chandrakana Nandi and Jeffrey I. Lipton and Zachary Tatlock and Adriana Schulz},
    title = {Carpentry Compiler},
    journal = {ACM Transactions on Graphics},
    note = {presented at SIGGRAPH Asia 2019},
    volume = {38},
    number = {6},
    pages = {Article No. 195},
    year = {2019}
}

License

All rights about the program are reserved by the authors of this project. The programs can only be used for research purpose. In no event shall the author be liable to any party for direct, indirect, special, incidental, or consequential damage arising out of the use of this program.

carpentry-compiler's People

Contributors

haisenzhao avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.