How to create an arch in FreeCAD for architecture?

I would like to create an arch in FreeCAD, which will be used in the architecture module. In OpenSCAD, it will look like this:

Arch in OpenSCAD

A source:

rotate(270, v=[1,0,0]) {difference() {rotate_extrude(fn=500) {translate([750, 0, 0])square([400,400]);}; translate([-2000, 0, 0]) {cube([4000, 1500, 1500]);}; }}; 

Using the OpenSCAD module is not a solution, because I would like to use the grid snap functions and be able to edit the arch without deleting and reconstructing it from the OpenSCAD source code (which, apparently, is necessary in FreeCAD).

Finding solutions using a search engine is not possible, because, apparently, they only refer to the architecture module (= Arch).

+5
source share
1 answer

It is possible to create an arch for use in an architecture module using

  • creating a sketch in the design mode of a part representing an edge of an arch
  • make a structure from it in Arch mode

Equivalent FreeCAD script code:

 import Part import Sketcher import Arch App.newDocument("Unnamed") App.setActiveDocument("Unnamed") App.ActiveDocument=App.getDocument("Unnamed") Gui.ActiveDocument=Gui.getDocument("Unnamed") Gui.activateWorkbench("PartDesignWorkbench") App.activeDocument().addObject('Sketcher::SketchObject','Sketch') App.activeDocument().Sketch.Placement = App.Placement(App.Vector(0.000000,0.000000,0.000000),App.Rotation(-0.707107,0.000000,0.000000,-0.707107)) #Gui.activeDocument().activeView().setCamera('#Inventor V2.1 ascii \n OrthographicCamera {\n viewportMapping ADJUST_CAMERA\n position 0 -87 0 \n orientation -1 0 0 4.712389\n nearDistance -112.88701\n farDistance 287.28702\n aspectRatio 1\n focalDistance 87\n height 143.52005\n\n}') Gui.activeDocument().setEdit('Sketch') App.ActiveDocument.Sketch.addGeometry(Part.ArcOfCircle(Part.Circle(App.Vector(0.000000,-0.000000,0),App.Vector(0,0,1),200.000000),0.000000,3.141593)) App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Coincident',0,3,-1,1)) App.ActiveDocument.Sketch.addGeometry(Part.ArcOfCircle(Part.Circle(App.Vector(0.000000,-0.000000,0),App.Vector(0,0,1),300.000000),0.000000,3.141593)) App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Coincident',1,3,-1,1)) App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('PointOnObject',1,2,-1)) App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('PointOnObject',1,1,-1)) App.ActiveDocument.Sketch.addGeometry(Part.Line(App.Vector(-300.000000,-0.000000,0),App.Vector(-200.000000,-0.000000,0))) App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Coincident',2,1,1,2)) App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Coincident',2,2,0,2)) App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Horizontal',2)) App.ActiveDocument.Sketch.addGeometry(Part.Line(App.Vector(200.000000,-0.000000,0),App.Vector(300.000000,-0.000000,0))) App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Coincident',3,1,0,1)) App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Coincident',3,2,1,1)) App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Horizontal',3)) Gui.activeDocument().resetEdit() App.ActiveDocument.recompute() Gui.activateWorkbench("ArchWorkbench") Gui.activeDocument().activeView().viewAxometric() Arch.makeStructure(FreeCAD.ActiveDocument.Sketch) FreeCAD.getDocument("Unnamed").getObject("Structure").Height = '100 mm' Gui.SendMsgToActiveView("ViewFit") App.ActiveDocument.recompute() Gui.SendMsgToActiveView("ViewFit") 
+2
source

All Articles