文档章节

OpenSCAD中使用include或use引入外部库

openthings
 openthings
发布于 2015/04/07 10:09
字数 813
阅读 382
收藏 0

一、OpenSCAD 使用include或use引入外部库

    本文英文版本参考:https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Include_Statement

    =============================================

    OpenSCAD可以快速引入外部库,功能非常强大。意味着不仅可以把一些实用函数进行封装,放到库中进行重用,还可以方便地共享代码和使用第三方代码库。包含外部库的代码,可以使用include和use两个语句:

  • include <filename> 所有的内容跟写在主文件一样。

  • use <filename> 引入模块和函数,但不执行其它的任何定义。

二、OpenSCAD库文件路径

    库文件默认放在设计文件目录或者OpenSCAD的安装目录,可以使用相对目录指定路径,或者直接指定绝对路径。新版本可以使用与定义的用户库路径,查看 OpenSCAD_User_Manual/Libraries ,该文档描述了包含在OpenSCAD的几个库文件。

    注意:Windows and Linux/Mac 使用不同的路径分隔符。Windows 使用 \, 譬如 directory\file.ext,其它的使用 /,譬如 directory/file.ext。这会带来跨平台的一些问题,但OpenSCAD 在 Windows 上能正确地处理 /,所以在所有文件中include or use使用 / 能够工作在所有的平台

三、使用include方法包含文件

    使用 include <filename> 允许缺省变量在库中指定,这些缺省值可被主文件的代码覆盖。openscad 变量在运行期间只能是一个值,当给了多个赋值时将至采用最后一次的值,当变量第一次创建时被赋值。当在库中赋值时, 后续改变缺省值的variables ,必须在include之前被赋值,参考下面第二个例子。

    创建一个Ring的库文件 (定义一个函数并且提供一个例子):

    ring.scad:

module ring(r1, r2, h) {
     difference() { 
         cylinder(r = r1, h = h);
         translate([ 0, 0, -1 ]) 
         cylinder(r = r2, h = h+2);
     } 
} 

ring(5, 4, 10);

    Includ该库:

include <ring.scad>; 
rotate([90, 0, 0]) 
ring(10, 1, 1);

四、使用use方法引入函数和模块

    只显示旋转的环,使用use方法:

use <ring.scad>; 
rotate([90, 0, 0]) 
ring(10, 1, 1);

    如果使用use 方法,请确保将use语句放在文件的开始,至少不要放在module里面!

    下面的代码可以工作:

 // a.scad  
use <ring.scad>;  
module a() {
    ring();  
}

    下面的用法将会引起语法错误:

 //a.scad
 module a() {
    use <ring.scad>;
    ring();
  }

    在 include 中的缺省变量可以被覆盖,例如:

lib.scad

i=1; 
k=3; 
module x() {
     echo("hello world");
     echo("i=",i,"j=",j,"k=",k); 
}

hello.scad

j=4; 
include <lib.scad>; 
x(); 
i=5; 
x(); 
k=j; 
x();

    产生的输出结果如下:

ECHO: "hello world" 
ECHO: "i=", 5, "j=", 4, "k=", 4 
ECHO: "hello world" 
ECHO: "i=", 5, "j=", 4, "k=", 4 
ECHO: "hello world" 
ECHO: "i=", 5, "j=", 4, "k=", 4

    但是,如果将 j=4; 放在include之后将会失败,产生的输出结果如下:

ECHO: "hello world" 
ECHO: "i=", 5, "j=", 4, "k=", undef 
ECHO: "hello world" 
ECHO: "i=", 5, "j=", 4, "k=", undef 
ECHO: "hello world" 
ECHO: "i=", 5, "j=", 4, "k=", undef


© 著作权归作者所有

共有 人打赏支持
openthings
粉丝 273
博文 1011
码字总数 544432
作品 1
东城
架构师
私信 提问
OpenSCAD三维造型设计语言

cube Creates a cube at the origin of the coordinate system. When center is true the cube will be centered on the origin, otherwise it is created in the first octant. The argumen......

openthings
2015/02/11
0
0
OpenSCAD使用总结-中文

OpenSCAD是用程序的方式生成模型,搞软件的人应该很熟悉这种方式,但习惯交互式造型设计的就不用看这个了。创建模型的方法就像是用脚本语言编写一段程序,然后编译,总体感觉简单、便捷、易学...

openthings
2015/01/29
0
0
UbuntuKylin15.04编译OpenSCAD源码

OpenSCAD(http://www.openscad.org)是一个简单高效的三维建模软件,使用模型描述脚本进行建模,使用CGAL引擎进行几何体的空间布尔运算。这里介绍其源码编译方法,使用UbuntuKylin15.04. 把下...

openthings
2015/08/03
0
0
OpenSCAD、Blender和Textmate\SublimeText遇见后发生的一切...

TextmateSublimeText是编码极客们喜爱的玩具。OpenSCAD可以用MDL(机械定义语言)的方式来构建三维几何对象,而Blender除了交互三维建模之外,也支持以Python来构建几乎任何几何对象。 现在,这...

openthings
2015/03/13
0
1
OpenSCAD 2015.03的大变化,更方便了。

OpenSCAD 2015.03出来了,有几个大的变化: 1、增加工具按钮,操作起来更方便,尤其是在Mac OS X的窗口全屏模式下。 2、坐标的标尺显示尺寸的刻度,这个对3D打印的模型设计很方便。 3、代码编...

openthings
2015/03/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CAS和AQS

CAS(Compare And Swap) 什么是CAS CAS(Compare And Swap),即比较并交换。是解决多线程并行情况下使用锁造成性能损耗的一种机制。 CAS是一种系统原语,原语属于操作系统用语范畴,是由若干条...

狼王黄师傅
21分钟前
1
0
Python利用pandas处理Excel数据的应用

Python利用pandas处理Excel数据的应用 最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化...

上官夏洛特
35分钟前
1
0
100:代码管理平台svn

1:代码管理平台:代码版本管理工具,工作中用于代码更新,代码发布统计,代码版本控制;(频繁更新代码的版本记录),方便查阅历史变更,协同开发及合并; 版本管理工具发展: cvs(编码兼容不太好)...

芬野de博客
36分钟前
0
0
Linux学习-1101(rsync下、log、screen)

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 一、 rsync通过服务同步 rsync 通过服务的方式同步,首先需要开启一个服务。它是C/S架构,开启rsync服务,默认端口是8...

wxy丶
42分钟前
1
0
使用jpmml-sparkml-executable生成PMML模型文件

加载依赖的jar包通过./spark-shell --jars ./jpmml-sparkml-executable-1.2.13.jar 启动spark import org.apache.spark.ml.classification.LogisticRegressionimport org.apache.spark.m......

KYO4321
46分钟前
1
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部