Skip to content

SongZihui-sudo/lua-cad

Repository files navigation

Lua-cad

OpenSCAD for Lua, 使用 lua 来创建三维模型。

Contributors Forks Stargazers Issues GPLv3 License


Logo

Lua-cad

OpenSCAD for Lua, 使用 lua 来快速创建三维模型。
探索本项目的文档 »

报告Bug · 提出新特性 · English

目录

特性

使用基准实现准确定位

在 lua-cad 中使用基准 datum 可以精准确定 3d 对象的基准面,以此根据对象间的几何关系来实行准确定位。

local datum1 = d3object.datum(cube1, 1);

使用 d3object.datum(obj, index) 函数来获取基准面中心的位置,并通过 datum 库来进行几何关系的处理。

快速移植,复用现有代码,兼容 openscad 的模块调用语句

在 lua-cad 中快速复用您再 openscad 中创建模块。

local shoulder_screw1 = $shoulder_screw( "english", 1/2, length = 20 )$;

使用 $ 来在 Lua-cad 创建您要在 openscad 文件中定义的模块,这会将其转换唯一个 table 类型的变量。在 user_define_obj 库中,您可以对其进行进一步的操作。用户自定义对象库

面向对象

采用面向对象的模式,高效复用代码,编码更加灵活,增加了维护性。

Example

简单的离心风机外壳

Example
image1 image2

复用 openscad
-- The directory is specified according to the actual situation
package.path = package.path ..';../../../../?.lua';
user_obj = require("src.user_object.user_obj")

-- test1
test1 = $shoulder_screw( "english", 1/2, length = 20 )$;

test1.postion(test1, {10, 10, 10});

print("offset");
print("x: ".. test1._offset[1]);
print("x: ".. test1._offset[2]);
print("x: ".. test1._offset[3]);
print("test1");
test1.print(test1);

-- test2
test2 = $screw( "#6-32", head="flat undercut",length=12)$;
print("test2")
test2.print(test2);
基本操作
d3object = require("d3object")
boolean = require("boolean")
transform = require("transform")

local cube1 = d3object.cube({ 10, 10, 10 }, true);
local cube2 = d3object.cube({ 10, 10, 10 }, false);

local difference1 = boolean.difference({cube1, cube2});
local difference2 = boolean.difference({difference1, cube1});
local difference3 = boolean.difference({cube1, cube2, difference2});
local union1 = boolean.union({difference1, difference2});
local intersection1 = boolean.intersection({union1, difference3});

print("difference1 code1 : \n" .. code(intersection1));

export("./export.scad", intersection1);

文档

详细文档

上手指南

源码编译
  1. 安装 xmake
  2. Clone the repo
git clone https://github.com/SongZihui-sudo/lua-cad.git
  1. cd lua-cad
  2. 编译源码
xmake
使用说明
lua-cad [filepath]

如果输入了参数 filepath 那么直接运行脚本 filepath 所指向的文件。否则从终端读取输入。 read_line

架构图

架构图

文件目录说明

eg:

filetree
├── doc
│   └── English
├── lua
│   ├── manual
│   └── testes
│       └── libs
│           └── P1
├── port
│   └── openscad
├── src
│   ├── base_object
│   └── user_object
└── test

/doc 文档。
/lua lua 源码,个别文件进行了修改。
/port 文件导出与渲染接口。
/src 源码。
/src/base_object 基础对象源码。
/src/user_object 用户定义对象源码。

使用到的开源项目

贡献者

如何参与开源项目

贡献使开源社区成为一个学习、激励和创造的绝佳场所。你所作的任何贡献都是非常感谢的。

  1. Fork the Project
  2. Make some Changes
  3. Commit your Changes (git commit -m 'Add some feature')
  4. Push to the Branch to you repo (git push)
  5. Open a Pull Request to feature Branch.

版本控制

该项目使用Git进行版本管理。您可以在 repository 参看当前可用版本。

作者

SongZihui-sudo

mail: [email protected]

版权说明

该项目签署了 GPLv3 授权许可,详情请参阅 LICENSE.txt

鸣谢

Star History Chart

About

Lua CAD, OpenSCAD for Lua, uses lua to create 3D models.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages