freecad脚本

任务

import FreeCAD as App
import Part

doc = App.activeDocument()

#1.构建一个D30x70的圆柱;
#2.构建一个D50x80的圆柱;

#3.构建X方向切割面CX;

#4.构建Z方向切割面CZ;

#5.移动X方向切割面CX5次,得到5个相交轮廓;

#6.移动Z方向切割面CZ5次,得到5个相交轮廓;

任务gpt查询结果

import FreeCAD as App
import FreeCADGui as Gui
import Part

doc = App.activeDocument()
if doc is None:
    doc = App.newDocument("CutMacro")

# 清理旧对象(如果已存在)
for obj in doc.Objects:
    doc.removeObject(obj.Name)

# 1. 构建一个 D30x70 的圆柱
cylinder1 = doc.addObject("Part::Cylinder", "Cylinder1")
cylinder1.Radius = 15  # D30 -> 半径15
cylinder1.Height = 70
cylinder1.Placement.Base = App.Vector(0, 0, 0)

# 2. 构建一个 D50x80 的圆柱
cylinder2 = doc.addObject("Part::Cylinder", "Cylinder2")
cylinder2.Radius = 25  # D50 -> 半径25
cylinder2.Height = 80
cylinder2.Placement.Base = App.Vector(0, 0, 0)

# 3. 构建 X方向切割面CX
cuttersX = []
for i in range(5):
    plane = doc.addObject("Part::Box", f"CX_{i}")
    plane.Length = 1  # X方向厚度
    plane.Width = 100  # Y方向
    plane.Height = 100  # Z方向
    plane.Placement.Base = App.Vector(i * 5 - 10, -50, -50)  # 从 -10 开始,间隔5
    cuttersX.append(plane)

# 4. 构建 Z方向切割面CZ
cuttersZ = []
for i in range(5):
    plane = doc.addObject("Part::Box", f"CZ_{i}")
    plane.Length = 100  # X方向
    plane.Width = 100  # Y方向
    plane.Height = 1  # Z方向厚度
    plane.Placement.Base = App.Vector(-50, -50, i * 5 - 10)  # 从 -10 开始,间隔5
    cuttersZ.append(plane)

doc.recompute()
Gui.SendMsgToActiveView("ViewFit")

 

任务1:

  1. 构建一个D30x70的圆柱;
#1. 构建一个D30x70的圆柱;
import FreeCAD as App
import FreeCADGui as Gui
import Part

doc = App.activeDocument()
if doc is None:
    doc = App.newDocument("CutMacro")

for obj in doc.Objects:
    doc.removeObject(obj.Name)

cylinder1 = doc.addObject("Part::Cylinder", "Cylinder1")
cylinder1.Radius = 15 
cylinder1.Height = 70
cylinder1.Placement.Base = App.Vector(0, 0, 0)
  1. 构建一个D50x80的圆柱;
#构建一个D50x80的圆柱;
import FreeCAD as App
import FreeCADGui as Gui
import Part

doc = App.activeDocument()
if doc is None:
    doc = App.newDocument("CutMacro")

for obj in doc.Objects:
    doc.removeObject(obj.Name)

cylinder1 = doc.addObject("Part::Cylinder", "Cylinder1")
cylinder1.Radius = 25 
cylinder1.Height = 80
cylinder1.Placement.Base = App.Vector(0, 0, 0)
  1. 构建X方向切割面CX;
#构建X方向切割面CX;
import FreeCAD as App
import FreeCADGui as Gui
import Part

doc = App.activeDocument()
if doc is None:
    doc = App.newDocument("CutMacro")

# 清理旧对象(如果已存在)
for obj in doc.Objects:
    doc.removeObject(obj.Name)

cylinder1 = doc.addObject("Part::Cylinder", "Cylinder1")
cylinder1.Radius = 15 # D30 -> 半径15
cylinder1.Height = 70
cylinder1.Placement.Base = App.Vector(0, 0, 0)

plane = doc.addObject("Part::Box", "CX")
plane.Length = 1 # X方向厚度
plane.Width = 40 # Y方向
plane.Height = 70 # Z方向
plane.Placement.Base = App.Vector(10, -20, 0) # 位置固定
  1. 构建Z方向切割面CZ;
#构建Z方向切割面CZ;
import FreeCAD as App
import FreeCADGui as Gui
import Part

doc = App.activeDocument()
if doc is None:
    doc = App.newDocument("CutMacro")

# 清理旧对象(如果已存在)
for obj in doc.Objects:
    doc.removeObject(obj.Name)

cylinder1 = doc.addObject("Part::Cylinder", "Cylinder1")
cylinder1.Radius = 15 # D30 -> 半径15
cylinder1.Height = 70
cylinder1.Placement.Base = App.Vector(0, 0, 0)

plane = doc.addObject("Part::Box", f"CZ")
plane.Length = 30 # X方向
plane.Width = 30 # Y方向
plane.Height = 1 # Z方向厚度
plane.Placement.Base = App.Vector(-15, -15, 0) # 位置固定

  5.移动X方向切割面CX5次,得到5个相交轮廓;

#移动X方向切割面CX5次,得到5个相交轮廓;
import FreeCAD as App
import FreeCADGui as Gui
import Part

doc = App.activeDocument()
if doc is None:
    doc = App.newDocument("CutMacro")

# 清理旧对象(如果已存在)
for obj in doc.Objects:
    doc.removeObject(obj.Name)

cylinder1 = doc.addObject("Part::Cylinder", "Cylinder1")
cylinder1.Radius = 15 # D30 -> 半径15
cylinder1.Height = 70
cylinder1.Placement.Base = App.Vector(0, 0, 0)

cuttersX = []
for i in range(5):
    plane = doc.addObject("Part::Box", f"CX_{i}")
    plane.Length = 1  # X方向厚度
    plane.Width = 40  # Y方向
    plane.Height = 70  # Z方向
    plane.Placement.Base = App.Vector(i * 5 - 10, -20,0)  # 从 -10 开始,间隔5
    cuttersX.append(plane)

  6.移动Z方向切割面CZ5次,得到5个相交轮廓;

#移动Z方向切割面CZ5次,得到5个相交轮廓;
import FreeCAD as App
import FreeCADGui as Gui
import Part

doc = App.activeDocument()
if doc is None:
    doc = App.newDocument("CutMacro")

# 清理旧对象(如果已存在)
for obj in doc.Objects:
    doc.removeObject(obj.Name)

cylinder1 = doc.addObject("Part::Cylinder", "Cylinder1")
cylinder1.Radius = 15 # D30 -> 半径15
cylinder1.Height = 70
cylinder1.Placement.Base = App.Vector(0, 0, 0)

cuttersZ = []
for i in range(5):
    plane = doc.addObject("Part::Box", f"CZ_{i}")
    plane.Length = 30 # X方向
    plane.Width = 30 # Y方向
    plane.Height = 1 # Z方向厚度
    plane.Placement.Base = App.Vector(-15, -15, i * 10) # 从 -10 开始,间隔10
    cuttersZ.append(plane)
posted @ 2025-04-24 15:03  驼七  阅读(63)  评论(0)    收藏  举报