在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

以下是Python代码:

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

上面的代码用到了linear_extrude)(height,center,convexity,twist,slices,scale),其中的twist参数就是:将P2(多边形)挤出3d形状的度数。设置参数twist = 360将通过一次旋转挤出。扭转方向遵循左手规则。加下来我试着应用动画的形式来演示一下建模过程:

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)

下面是gif动图:

好了,今天先到这里

下节预告:

在Python里应用Openscad实现3D建模(修改简化版)之3D螺纹建模初探1相关推荐

  1. 在Python里应用Openscad实现3D建模(修改简化版)之3D螺纹建模初探2

    在Python里应用Openscad实现3D建模(修改简化版)-3 –SolidPython学习笔记3 –form https://github.com/SolidCode/SolidPython 参 ...

  2. python三维建模和cad比较_【3D建模】CAD与3D建模软件:有什么区别?

    当有人问以上问题时,每个论坛上都有数百个答案:我应该选择哪种3D软件?人们总是列出他们使用的3D软件,但要为你所zuo做的项目选择最佳软件其实并不容易. 首先,你需要知道3D软件分为两类:CAD和3D ...

  3. 3d游戏建模基础教程:3D建模应用领域和四种常用建模方法

    3D建模应用领域 影视动画表现 电影行业将它们用于活动的任务.物体以及现实电影:视频游戏产业将它们作为计算机与视频游戏中的资源,通过设计稿,建模,最终完成. 游戏美术表现 多用于游戏类建模,包括:角色 ...

  4. 中望3D Overdrive内核技术之“容差建模”

    一.引言: 现代社会人都向往美好,然而容颜没有十全十美的,这也是为什么众多女性朋友选择"美容化妆"出街:又或者通过手机美颜.视频滤镜等效果出镜.可见化妆术.美颜术的重要性. 同样的 ...

  5. 3D建模怎么学,3D游戏建模怎么学

    3D建模怎么学,3D游戏建模怎么学 第一 :学3d建模需要美术基础,但是不代表现在就需要美术基础. 很多朋友想学3d建模,但是遗憾的是,圈内人总是对他们说,学3d建模需要有美术基础,你们有吗?然后很多 ...

  6. 10个常用的3D建模软件,作为3D建模的软件东西很杂很碎,还需多练习才最重要

    很多人都会好奇,电脑是怎么将 手绘的2D图形变成3D的实际物品 的?究竟是什么神奇魔法能够瞬间将我们的想法变成现实的呢? 今天来和大家介绍下工业设计师经常会用到的10个3D建模软件. Solidwor ...

  7. Maya打造3D真实热带雨林场景模型-3D建模场景模型教程

    此教程仅供参考.(交流的是思路,初学者想了解更多参数含义) 最终效果,如图所示: 软.硬件配备: (01)软件:Maya8.5 3DSMAX PS AE (02)硬件:工作站 涉及技术点: (03)P ...

  8. 3D建模:0基础如何学习建模及行业应用范围

    最近很多人问我如何0基础学习3D建模,以及3D建模行业的前景如何. 今天统一给大家写一篇行业介绍,以及3D建模可以应用到哪些领域. 一.应用范围 先解释一下什么是3D建模: 总的来说,3D是一种视觉的 ...

  9. python如何多行输出_python换行输出 Python里具体怎么用\n换行输出一个数字?

    python里 如何把每打印10个数就换行的实现 print("每输出十个数字换行,共计输出100个:")for num in range(1,100):#循环一百次 print( ...

最新文章

  1. 一起来了解React的四种优秀甘特图方案(下篇)
  2. 符号主义对深度学习的意义浅谈
  3. 视频监控行业解决方案
  4. 基本数据类型与表达式5 - 零基础入门学习Delphi06
  5. docker集群运行在calico网络上
  6. 规范化编程:ANSI和UNICODE的使用
  7. numpy.reshape(与ndarray.reshape一样)使用方法
  8. Linux下zip的操作命令
  9. Error: Cannot find module
  10. KNN之约会网站测试
  11. 哪种存储器是非易失的_ROM是易失性存储器还是非易事性存储器?
  12. SPR传感原理(附Matlab源码)
  13. GD32 USB调试、DFU过程问题
  14. wireshark:包重组
  15. zooKeeper篇-zk的选举机制
  16. pycharm出现 Pycharm this applicatation failed to start because it could not find or laod the qt 的解决办法
  17. 设计模式----仲裁者模式(Mediator Pattern)例题
  18. java jlabel 字体大小_java-如何在更改字体大小时更改JLabel的大小...
  19. java 统计汉字个数_Java简单统计字符串中汉字,英文字母及数字数量的方法
  20. 读《从一到无穷大》之后感

热门文章

  1. 导入微信小程序显示未选择环境或未指定环境,解决办法
  2. JavaScript基础系列之五 浏览器
  3. 网页中嵌入MediaPlayer各种属性与方法设置大全
  4. 2020年个人年终总结,记录疫情下不同寻常的一年
  5. (案例复盘)用抽象数据结构解决问题【集合的交、并、补】
  6. NKOJ 2182 (HEOI 2012) 采花(树状数组/线段树)
  7. 二十世纪西方文化三大发现:莫菲定律 派金森定理 彼得原理
  8. 旺旺老师JavaSE基础第一章(04)HelloWorld
  9. centos 7 安装后的必要设置 (将centos 7改造为LINUX桌面系统)
  10. [BZOJ3639][LCT]Qtree7