I'd like to create an arch in FreeCAD to be used in the architecture module. In OpenSCAD it'd look like this:
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'd like to use the grid snapping features and be able to edit the arch without deleting and recreating it from OpenSCAD source code (which apparently is necessary in FreeCAD).
Searching for solutions with a search engine is impossible because apparently only referring to the architecture module (= Arch) are displayed.
FreeCAD is a great tool for both professionals and hobbyists, and can be used in design, architecture, construction, mechanical engineering, and other fields.
FreeCAD is a general-purpose parametric 3D computer-aided design (CAD) modeler and a building information modeling (BIM) software application with finite element method (FEM) support.
This assembly workbench allows to assemble into a single assembly container other FreeCAD objects, and place them relative to the assembly and to each-other. The parts in the assembly can be in the same document as the assembly or in an external document.
It's possible to create an arch for usage in the architecture module by
The equivalent FreeCAD scripting code is:
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")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With