在Python里应用Openscad实现3D建模(修改简化版)之3D螺纹建模初探1
在Python里应用Openscad实现3D建模(修改简化版)-2
–SolidPython学习笔记2
- –form https://github.com/SolidCode/SolidPython
参考Parkinbotshortcuts.scad做了部分修改使得代码更为简洁易读
以下是对solidpython的readme的学习笔记(其中的部分code进行了简化):
–3D螺纹建模初探
为了进一步学习SolidPython从thingiverse上搜集几个常见的3D螺纹建模的方法,应用solidpython方法重新建模。
方案一:扭出来 Solution One: linear exturde with twist
由linear_extrude()拖出多边形 polygon()的方法:
首先应用polygon()创建一个多边形(螺丝的横截面)
继而将该截面应用linear_extrude()扭转挤出
比如:
MCAD库里的screw.scad
from solid import *
from solid.utils import *
pitch=1#螺距
length=5#螺丝的总长
outside_radius=2.5#外径
inner_radius=2#内径
rotations = int(length/pitch)#圈数
taper_ratio = 0.25#锥度
points=[[0,inner_radius],[outside_radius,(inner_radius * taper_ratio)],[outside_radius,(inner_radius * -1 * taper_ratio)],[0,(-1 * inner_radius)]]
paths=[[0,1,2,3]]
c = P2(points, paths)
c = Le(height=length, center=False, convexity=10, twist=360*rotations, slices = 500)(c)
c += Cy(h=length, r=inner_radius)
c
from solid import *
from solid.utils import *
import viewscad
import os
import sys
import subprocess
import shutil
import imageio
import glob
import numpy as np
def P32gif(Po, Fa, Ro):num = 1c = Sp(.1, segments=60)c += C("Blue")(Cy(.01,length+2))c += C("Red")(Ry(90)(Cy(.01, outside_radius*2)))c += C("Green")(Rx(90)(Cy(.01, outside_radius*2)))c += bac(Cy(h=length, r=inner_radius, segments = 60))PNGFILE = './pngxx/'#创建文件夹保存scad和pngif not os.path.exists(PNGFILE):os.mkdir(PNGFILE)else:shutil.rmtree(PNGFILE)os.mkdir(PNGFILE)for x in Po:#第一圈点位置演示c += deb(translate(x)(Sp(.25, segments=60)))scadfile = PNGFILE + "test" + '%03d' %num + ".scad"pngfile = PNGFILE + "test" + '%03d' %num + ".png"scad_render_to_file(c,scadfile)num = num + 1pngf = "openscad --preview -o " + pngfile + " " + scadfilesubprocess.call(pngf, shell=True)for y in Fa:# 第一个多面体每个面演示c += deb(Le(.1)(P2(Po,[y])))scadfile = PNGFILE + "test" + '%03d' %num + ".scad"pngfile = PNGFILE + "test" + '%03d' %num + ".png"scad_render_to_file(c,scadfile)num = num + 1pngf = "openscad --preview -o " + pngfile + " " + scadfilesubprocess.call(pngf, shell=True)for z in np.arange(0, Ro-1, 1/12):# 第一个多面体每个面演示s = c + Le(height=length, center=False, convexity=10, twist=360*z, slices = 500)(P2(Po, Fa))scadfile = PNGFILE + "test" + '%03d' %num + ".scad"pngfile = PNGFILE + "test" + '%03d' %num + ".png"scad_render_to_file(s,scadfile)num = num + 1pngf = "openscad --preview -o " + pngfile + " " + scadfilesubprocess.call(pngf, shell=True)png_filenames = sorted(glob.glob("./pngxx/*.png"))#读取并排序pngbuf=[]for png_file in png_filenames:buf.append(png_file)frames = [] for image_name in buf: frames.append(imageio.imread(image_name))#Save them as frames into a gif imageio.mimsave('testxx.gif', frames, 'GIF', duration = 1)#生成pig动图return(s)
# shutil.rmtree(PNGFILE)#删除文件夹
P32gif(points,paths, rotations)
在Python里应用Openscad实现3D建模(修改简化版)之3D螺纹建模初探1相关推荐
- 在Python里应用Openscad实现3D建模(修改简化版)之3D螺纹建模初探2
在Python里应用Openscad实现3D建模(修改简化版)-3 –SolidPython学习笔记3 –form https://github.com/SolidCode/SolidPython 参 ...
- python三维建模和cad比较_【3D建模】CAD与3D建模软件:有什么区别?
当有人问以上问题时,每个论坛上都有数百个答案:我应该选择哪种3D软件?人们总是列出他们使用的3D软件,但要为你所zuo做的项目选择最佳软件其实并不容易. 首先,你需要知道3D软件分为两类:CAD和3D ...
- 3d游戏建模基础教程:3D建模应用领域和四种常用建模方法
3D建模应用领域 影视动画表现 电影行业将它们用于活动的任务.物体以及现实电影:视频游戏产业将它们作为计算机与视频游戏中的资源,通过设计稿,建模,最终完成. 游戏美术表现 多用于游戏类建模,包括:角色 ...
- 中望3D Overdrive内核技术之“容差建模”
一.引言: 现代社会人都向往美好,然而容颜没有十全十美的,这也是为什么众多女性朋友选择"美容化妆"出街:又或者通过手机美颜.视频滤镜等效果出镜.可见化妆术.美颜术的重要性. 同样的 ...
- 3D建模怎么学,3D游戏建模怎么学
3D建模怎么学,3D游戏建模怎么学 第一 :学3d建模需要美术基础,但是不代表现在就需要美术基础. 很多朋友想学3d建模,但是遗憾的是,圈内人总是对他们说,学3d建模需要有美术基础,你们有吗?然后很多 ...
- 10个常用的3D建模软件,作为3D建模的软件东西很杂很碎,还需多练习才最重要
很多人都会好奇,电脑是怎么将 手绘的2D图形变成3D的实际物品 的?究竟是什么神奇魔法能够瞬间将我们的想法变成现实的呢? 今天来和大家介绍下工业设计师经常会用到的10个3D建模软件. Solidwor ...
- Maya打造3D真实热带雨林场景模型-3D建模场景模型教程
此教程仅供参考.(交流的是思路,初学者想了解更多参数含义) 最终效果,如图所示: 软.硬件配备: (01)软件:Maya8.5 3DSMAX PS AE (02)硬件:工作站 涉及技术点: (03)P ...
- 3D建模:0基础如何学习建模及行业应用范围
最近很多人问我如何0基础学习3D建模,以及3D建模行业的前景如何. 今天统一给大家写一篇行业介绍,以及3D建模可以应用到哪些领域. 一.应用范围 先解释一下什么是3D建模: 总的来说,3D是一种视觉的 ...
- python如何多行输出_python换行输出 Python里具体怎么用\n换行输出一个数字?
python里 如何把每打印10个数就换行的实现 print("每输出十个数字换行,共计输出100个:")for num in range(1,100):#循环一百次 print( ...
最新文章
- 一起来了解React的四种优秀甘特图方案(下篇)
- 符号主义对深度学习的意义浅谈
- 视频监控行业解决方案
- 基本数据类型与表达式5 - 零基础入门学习Delphi06
- docker集群运行在calico网络上
- 规范化编程:ANSI和UNICODE的使用
- numpy.reshape(与ndarray.reshape一样)使用方法
- Linux下zip的操作命令
- Error: Cannot find module
- KNN之约会网站测试
- 哪种存储器是非易失的_ROM是易失性存储器还是非易事性存储器?
- SPR传感原理(附Matlab源码)
- GD32 USB调试、DFU过程问题
- wireshark:包重组
- zooKeeper篇-zk的选举机制
- pycharm出现 Pycharm this applicatation failed to start because it could not find or laod the qt 的解决办法
- 设计模式----仲裁者模式(Mediator Pattern)例题
- java jlabel 字体大小_java-如何在更改字体大小时更改JLabel的大小...
- java 统计汉字个数_Java简单统计字符串中汉字,英文字母及数字数量的方法
- 读《从一到无穷大》之后感
热门文章
- 导入微信小程序显示未选择环境或未指定环境,解决办法
- JavaScript基础系列之五 浏览器
- 网页中嵌入MediaPlayer各种属性与方法设置大全
- 2020年个人年终总结,记录疫情下不同寻常的一年
- (案例复盘)用抽象数据结构解决问题【集合的交、并、补】
- NKOJ 2182 (HEOI 2012) 采花(树状数组/线段树)
- 二十世纪西方文化三大发现:莫菲定律 派金森定理 彼得原理
- 旺旺老师JavaSE基础第一章(04)HelloWorld
- centos 7 安装后的必要设置 (将centos 7改造为LINUX桌面系统)
- [BZOJ3639][LCT]Qtree7