Air Plane Design Workbench - discussion thread

Have some feature requests, feedback, cool stuff to share, or want to know where FreeCAD is going? This is the place.
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
User avatar
LVAeronautics
Posts: 105
Joined: Sun Nov 20, 2022 6:21 pm
Contact:

Re: Air Plane Design Workbench - discussion thread

Post by LVAeronautics »

Just found this discussion thread. Now that gents like @adrianinsaval know we are in the process of putting our design to paper as well within FreeCAD, count us in as users of this WB.

Is there any ideation of integrating X-Foil or some XFLR5 functions, namely airfoil design & possibly analysis, into this WB?

Also, from one Autodesk expat to another, welcome to FreeCAD @scott_aero !
"Testing leads to Failure, and Failure leads to Understanding" -Burt Rutan
tweety_pie
Posts: 14
Joined: Wed Jun 15, 2016 1:09 pm

Re: Air Plane Design Workbench - discussion thread

Post by tweety_pie »

Hello

I have a proposal for this workbench.
I work on some Macro to design fuselage of glider based on this document

http://claudel.dopp.free.fr/Les_planeur ... cadres.htm

Code: Select all

__Name__ = ''
__Comment__ = ''
__Author__ = ''
__Date__ = ''
__Version__ = ''
__License__ = ''
__Web__ = ''
__Wiki__ = ''
__Icon__ = ''
__Xpm__ = ''
__Help__ = ''
__Status__ = ''
__Requires__ = ''
__Communication__ = ''
__Files__ = ''



# -*- coding: utf-8 -*-

# Macro Begin: C:\Users\Admin\AppData\Roaming\FreeCAD\Macro\Test2.FCMacro +++++++++++++++++++++++++++++++++++++++++++++++++
import FreeCAD as App
import PartDesign
import PartDesignGui
import Sketcher
import Spreadsheet



NomDuProjet = 'ASW_27'
NomDuBody = 'Fuselage_' + NomDuProjet

doc = App.activeDocument()

#Create Body

#if App.ActiveDocument.getObject.name(NomDuBody) != NomDuBody:
body = doc.addObject('PartDesign::Body',NomDuBody)

#Create Sketch
#doc.getObject(NomDuBody).newObject('Sketcher::SketchObject',NomSketch)
#doc.getObject(NomSketch).Support = (doc.getObject('XY_Plane'),[''])
#doc.getObject(NomSketch).MapMode = 'FlatFace'
#doc.getObject(NomSketch).AttachmentOffset = App.Placement(App.Vector(0.000,0.000,Z),App.Rotation(App.Vector(0.000,0.000,1.000),0.000))
#ActiveSketch = doc.getObject(NomSketch)

sheet = App.ActiveDocument.Spreadsheet

ref = '{}{}'
for row in range(2, 1000):
	if hasattr(sheet, ref.format('A', row)):
		NomCouple, H, L, Z, Ydec = (sheet.get(ref.format(column, row)) for column in 'ABCDE')
		Ld = float(L)/2
		NomSketch = 'Sketch_' + NomCouple #Nom du coupe
		#Create Sketch
		doc.getObject(NomDuBody).newObject('Sketcher::SketchObject',NomSketch)
		doc.getObject(NomSketch).Support = (doc.getObject('XY_Plane'),[''])
		doc.getObject(NomSketch).MapMode = 'FlatFace'
		doc.getObject(NomSketch).AttachmentOffset = App.Placement(App.Vector(0.000,Ydec,Z),App.Rotation(App.Vector(0.000,0.000,1.000),0.000))
		ActiveSketch = doc.getObject(NomSketch)
		A1 = App.Vector(0,-Ld,0)
		A2 = App.Vector(0,H-Ld,0)
		L1 = App.Vector(-Ld,0,0)
		L2 = App.Vector(Ld,0,0)
		#Create Segment A1 A2 => Id 0
		ActiveSketch.addGeometry(Part.LineSegment(A1, A2), False)
		ActiveSketch.addConstraint(Sketcher.Constraint('PointOnObject',0,1,-2))
		ActiveSketch.addConstraint(Sketcher.Constraint('PointOnObject',0,2,-2))
		ActiveSketch.addConstraint(Sketcher.Constraint('DistanceY',0,1,-1,1,Ld))
		ActiveSketch.addConstraint(Sketcher.Constraint('DistanceY',0,1,0,2,H))
		ActiveSketch.toggleConstruction(0)
		#Create Arc L1/A1/L2 => Id 1
		ActiveSketch.addGeometry(Part.Arc(L1,A1,L2))
		ActiveSketch.addConstraint(Sketcher.Constraint('PointOnObject',1,1,-1))
		ActiveSketch.addConstraint(Sketcher.Constraint('PointOnObject',1,2,-1))
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',1,3,-1,1))
		ActiveSketch.addConstraint(Sketcher.Constraint('Radius',1,Ld))
		#Create Segment L1 A2 => Id 2 
		ActiveSketch.addGeometry(Part.LineSegment(L1, A2), False)
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',2,1,1,1))
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',2,2,0,2))
		ActiveSketch.toggleConstruction(2)
		#Create Segment L2 A2 => Id 3
		ActiveSketch.addGeometry(Part.LineSegment(L2, A2), False)
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',3,2,0,2))
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',3,1,1,2))
		ActiveSketch.toggleConstruction(3)
		#Create point D1 => Id 4
		ActiveSketch.addGeometry(Part.Point(App.Vector(0,0,0)))
		ActiveSketch.addConstraint(Sketcher.Constraint('PointOnObject',4,1,2))
		ActiveSketch.addConstraint(Sketcher.Constraint('Distance',1,1,4,1,H-L))
		#Create point D1 => Id 5
		ActiveSketch.addGeometry(Part.Point(App.Vector(0,0,0)))
		ActiveSketch.addConstraint(Sketcher.Constraint('PointOnObject',5,1,3))
		ActiveSketch.addConstraint(Sketcher.Constraint('Distance',5,1,1,2,H-L))
		#Create point M1 => Id 6
		ActiveSketch.addGeometry(Part.Point(App.Vector(0,0,0)))
		ActiveSketch.addConstraint(Sketcher.Constraint('Symmetric',4,1,0,2,6,1))
		#Create point M2 => Id 7
		ActiveSketch.addGeometry(Part.Point(App.Vector(0,0,0)))
		ActiveSketch.addConstraint(Sketcher.Constraint('Symmetric',5,1,0,2,7,1))
		#Create point M1 C2 => Id 8
		ActiveSketch.addGeometry(Part.LineSegment(App.Vector(0,0,0),App.Vector(10,10,0)),False)
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',8,1,6,1))
		ActiveSketch.addConstraint(Sketcher.Constraint('PointOnObject',8,2,-1))
		ActiveSketch.addConstraint(Sketcher.Constraint('Perpendicular',8,2))
		ActiveSketch.toggleConstruction(8)
		#Create point M2 C1 => Id 9
		ActiveSketch.addGeometry(Part.LineSegment(App.Vector(0,0,0),App.Vector(10,10,0)),False)
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',9,1,7,1))
		ActiveSketch.addConstraint(Sketcher.Constraint('PointOnObject',9,2,-1))
		ActiveSketch.addConstraint(Sketcher.Constraint('Perpendicular',3,9))
		ActiveSketch.toggleConstruction(9)
		#Create point C3 => Id 10
		ActiveSketch.addGeometry(Part.Point(App.Vector(0,0,0)))
		ActiveSketch.addConstraint(Sketcher.Constraint('PointOnObject',10,1,8))
		ActiveSketch.addConstraint(Sketcher.Constraint('PointOnObject',10,1,9)) 
		#Create top => Id 11
		ActiveSketch.addGeometry(Part.ArcOfCircle(Part.Circle(App.Vector(0.000000,119.371292,0),App.Vector(0,0,1),46.266017),0.273698,2.832275),False)
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',11,3,10,1))
		#doc.Sketch.addConstraint(Sketcher.Constraint('PointOnObject',11,2,8)) 
		#doc.Sketch.addConstraint(Sketcher.Constraint('PointOnObject',11,1,9))
		#Create Left => Id 12
		ActiveSketch.addGeometry(Part.ArcOfCircle(Part.Circle(App.Vector(359.882111,38.198967,0),App.Vector(0,0,1),446.432519),-3.349089,-3.084398),False)
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',12,3,8,2))
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',12,2,1,1))
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',12,1,11,2))
		#Create Right => Id 13
		ActiveSketch.addGeometry(Part.ArcOfCircle(Part.Circle(App.Vector(-330.171356,29.049904,0),App.Vector(0,0,1),452.186196),-0.022723,0.239535),False)
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',13,3,9,2))
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',13,1,1,2))
		ActiveSketch.addConstraint(Sketcher.Constraint('Coincident',13,2,11,1))
		ActiveSketch.addConstraint(Sketcher.Constraint('PointOnObject',0,2,11))
		FreeCAD.Console.PrintMessage(NomCouple + ' created; ')

App.ActiveDocument.recompute()
You nee to create a Spreadsheet:
=> title of the Colum you should put
Colum A = Name of the section
Colum B = High of the section
Colum C = Width of the section
Colum D = Z postions of the section
Colum E = distance between the center of section and Y0
Brian H.
Posts: 41
Joined: Tue Jan 03, 2023 7:25 pm

Re: Air Plane Design Workbench - discussion thread

Post by Brian H. »

Not a lot of activity on this workbench for two+ years. I would really like to use a workbench dedicated to aircraft design being that I want to cut my teeth in FC by designing an elliptical vertical stabilizer for a DLG glider and to be manufactured with FDM printing. I don't know if this is the right place to start. The creator of this WB told another here that "the best tool for a job is the one you know" I don't disagree entirely with the statement but if I only rely on tools I know that would mean I would be reliant on mostly traditional materials and building techniques for my own designs and if I wanted to utilize my FDM or SLA printers I would be mostly dependent upon other people's designs. I want to utilize my intuitive design ability combined with CAD and Automated processes to bring forth real world craft. This means I must learn a new tool and that is CAD. If a particular work bench that seems to be specifically intended for modelling aircraft has been abandoned or has little to no activity/support what use is there in integrating it into an ability/workflow that I'm only just learning?
Bush-Hawk-RC
Posts: 1
Joined: Fri Nov 17, 2023 3:54 pm

Re: Air Plane Design Workbench - discussion thread

Post by Bush-Hawk-RC »

hey guys,
just installed this,

is there any way to modify or add wing sections, after i have used the create wing, and input the dimensions,
other than starting all over again?

if that makes sense

Thanks
matt
User avatar
LVAeronautics
Posts: 105
Joined: Sun Nov 20, 2022 6:21 pm
Contact:

Re: Air Plane Design Workbench - discussion thread

Post by LVAeronautics »

Bush-Hawk-RC wrote: Fri Nov 17, 2023 4:09 pm hey guys,
just installed this,

is there any way to modify or add wing sections, after i have used the create wing, and input the dimensions,
other than starting all over again?

if that makes sense

Thanks
matt
We have not toyed with this WB too much; so we did our project in a more conventional manner (ie standard FreeCAD WB's)

If anything, use the cross section feature in the Part WB; that is how we pulled rib cutting templates and fuselage frames/stringers/longerons, etc.
"Testing leads to Failure, and Failure leads to Understanding" -Burt Rutan
Post Reply