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:
- 构建一个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)
- 构建一个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)
- 构建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) # 位置固定
- 构建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)

浙公网安备 33010602011771号