首页 > 其他分享 >CADquery 螺纹的绘制

CADquery 螺纹的绘制

时间:2023-11-19 13:57:46浏览次数:33  
标签:frac CADquery eps 螺纹 import r0 绘制 def

 

from cadquery import *
import cadquery as cq
from math import *


def helix(r0, r_eps, p, h, d=0, frac=1e-1):
    def func(t):

        if frac < t < 1 - frac:
            z = h * t + d
            r = r0 + r_eps
        elif t <= frac:
            z = h * t + d * sin(pi / 2 * t / frac)
            r = r0 + r_eps * sin(pi / 2 * t / frac)
        else:
            z = h * t - d * sin(2 * pi - pi / 2 * (1 - t) / frac)
            r = r0 - r_eps * sin(2 * pi - pi / 2 * (1 - t) / frac)

        x = r * sin(-2 * pi / (p / h) * t)
        y = r * cos(2 * pi / (p / h) * t)

        return x, y, z

    return func


def thread(radius, pitch, height, d, radius_eps, aspect=10):
    e1_bottom = (cq.Workplane("XY")
                 .parametricCurve(helix(radius, 0, pitch, height, -d)).val()
                 )
    e1_top = (cq.Workplane("XY")
              .parametricCurve(helix(radius, 0, pitch, height, d)).val()
              )

    e2_bottom = (cq.Workplane("XY")
                 .parametricCurve(helix(radius, radius_eps, pitch, height, -d / aspect)).val()
                 )
    e2_top = (cq.Workplane("XY")
              .parametricCurve(helix(radius, radius_eps, pitch, height, d / aspect)).val()
              )

    f1 = Face.makeRuledSurface(e1_bottom, e1_top)
    f2 = Face.makeRuledSurface(e2_bottom, e2_top)
    f3 = Face.makeRuledSurface(e1_bottom, e2_bottom)
    f4 = Face.makeRuledSurface(e1_top, e2_top)

    sh = Shell.makeShell([f1, f2, f3, f4])
    rv = Solid.makeSolid(sh)

    return rv


radius = 4
pitch = 2
height = 4
d = pitch / 4
radius_eps = 0.5
eps = 1e-3

core = cq.Workplane("XY", origin=(0, 0, -d)).circle(4).circle(3).extrude(height + 1.75 * d)
th1 = thread(radius - eps, pitch, height, d, radius_eps)
th2 = thread(radius - 1 + eps, pitch, height, d, -radius_eps)

res = core.union(Compound.makeCompound([th1, th2]))

 

标签:frac,CADquery,eps,螺纹,import,r0,绘制,def
From: https://www.cnblogs.com/arwen-xu/p/17841960.html

相关文章

  • 七段数码管绘制
    importturtle,datetimedefdrawGap():#绘制数码管间隔turtle.penup()turtle.fd(5)defdrawLine(draw):#绘制单段数码管drawGap()turtle.pendown()ifdrawelseturtle.penup()turtle.fd(40)drawGap()turtle.right(90)defdrawDigit(d):#根据数字......
  • 在线CAD SDK前端库绘制规则多边形图形
    前言在CAD(计算机辅助设计)领域,绘制多边形是常见的任务之一。MxCAD是一款专注在线CAD的前端库,提供了丰富的绘图和设计功能,使得绘制多边形变得轻松而灵活。本文将带领您通过使用MxCAD实现绘制多边形的过程,深入了解其基本概念和功能。mxcad 是一个基于TypeScript的前端库,专为......
  • Python绘制神经网络模型的结构示意图的方法
      本文介绍基于Python语言,对神经网络模型的结构进行可视化绘图的方法。  最近需要进行神经网络结构模型的可视化绘图工作。查阅多种方法后,看到很多方法都比较麻烦,例如单纯利用graphviz模块,就需要手动用DOT语言进行图片描述,比较花时间;最终,发现利用第三方的ann_visualizer模块,可......
  • 利用leafletCN包在R里绘制可交互地图(叠加高德地图替代)
    Leaflet是一个开源并且对移动端友好的交互式地图JavaScript库。在R语言中也使用相应的leaflet包调用。然而,在国内,一些国外的地图资源在加载或使用中会存在问题。为此,需要一个适应国情的扩展包leafletCN(GitHub-Lchiffon/leafletCN:AnRgalleryforChinaandothergeoj......
  • canvas绘制圆环
    初识canvascanvas我们可以理解为是一个画布。它是一个载体。我们的文字,图案,都是在这个载体(画布)上来进行操作的。canvas的5个要素canvas具有的5个要素:1.id元素的唯一标识2.width宽度3.height高度4.画笔,上下文canvas.getContext('2d')5.内容(文字,图形,其他)can......
  • 第二十三篇 - d3绘制直方图
    当下探讨用d3制作简单横向直方图效果图:一、下载d3【npminstalld3】二、导入d3【import*asd3from"d3";】二、画直方图参考链接:https://www.cnblogs.com/xuepei/p/7527082.html1.准备表格数据rectlist:[{week:"星期一",product:8......
  • 软件测试|使用python绘制等高线密度图
    简介等高线密度图(ContourDensityPlot)是一种可视化数据分布的有效方式,特别适用于显示二维数据的密度分布情况。Python提供了丰富的工具和库,使得创建等高线密度图变得相对容易。在本文中,我们将介绍如何使用Python和Matplotlib库创建等高线密度图,并提供一个示例来演示整个过程。步骤......
  • uniapp 之绘制海报 并适应机型
    之前绘制的海报出现的问题:①海报有一角圆角没体现出来②海报内容随机型,变动到其他位置(并不是想要的地方)针对于这个问题进行修改注意:海报设置的宽度与你canvas给的标签的宽高是保持一致,下面图片为完成的海报图    一、设置海报的初......
  • 百度地图GL javascript API 如何绘制流动箭头的线?
    要使用百度地图GLJavaScriptAPI绘制流动箭头线,可以使用Polyline和Symbol样式来实现。下面是一个示例代码://创建地图实例varmap=newBMapGL.Map("mapContainer");map.centerAndZoom(newBMapGL.Point(116.404,39.915),11);//创建折线varpoints=[newBMapG......
  • matlab地图仪绘制
    %绘制地球仪,并标出我们的位置clareset;loadtopo;[x,y,z]=sphere(45);%45是画出来的球面的经纬分面数s=surface(x,y,z,'FaceColor','texturemap','CData',topo);colormap(topomap1);%Brightenthecolormapforbetterannotationvisibility:brighten......