Planeur téléguidé

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
User avatar
Chris_G
Veteran
Posts: 2598
Joined: Tue Dec 31, 2013 4:10 pm
Location: France
Contact:

Re: Planeur téléguidé

Post by Chris_G »

Salut,
Voilà qui devrait t'aider à avancer un peu :

Code: Select all

import FreeCAD
import Part

coord_list_1 =  [ (0,0,0),
(0.0598,0,0.371469868801423),
(0.1521,0,0.728485657104737),
(0.3913,0,1.12741827885257),
(0.7904,0,1.62752946408717),
(1.4885,0,2.25339114965533),
(2.6468,0,3.0136757838559),
(4.2744,0,3.78841449855459),
(6.175,0,4.44896597731821),
(8.2004,0,4.97798532354903),
(10.2882,0,5.38414498554592),
(13.494,0,5.83222148098732),
(16.7466,0,6.13864798754725),
(20.0252,0,6.33811429842117),
(23.322,0,6.45230153435624),
(26.624,0,6.5),
(29.9351,0,6.49566377585057),
(33.2488,0,6.44651990215699),
(37.674,0,6.32366021792306),
(42.1031,0,6.15021125194574),
(46.5335,0,5.93340004447409),
(55.393,0,5.40438069824327),
(59.8143,0,5.10807204803202),
(64.2447,0,4.79441850122304),
(73.086,0,4.13386702245942),
(77.5177,0,3.79419613075384),
(81.9572,0,3.4472981987992),
(89.7117,0,2.84456304202802),
(93.0241,0,2.58872581721147),
(96.3391,0,2.33722481654436),
(99.6606,0,2.08572381587725),
(102.9795,0,1.84144985545919),
(106.3023,0,1.60006671114076),
(109.6173,0,1.36301979097176),
(112.9388,0,1.131754503002),
(116.2642,0,0.918912847231488),
(119.5948,0,0.736853047809651),
(122.9228,0,0.561994288636869),
(126.2391,0,0.401472609962197),
(130,0,0.15) ]

coord_list_moule_1 =  [ (0,0,0),
(-10,0,0),
(-10,0,5),
(-20,0,5),
(-20,0,0),
(-30,0,0),
(-30,0,30),
(160,0,30),
(160,0,0),
(150,0,0),
(150,0,0.15),
(130,0,0.15) ]

#EmpennageNervure2
coord_list_2 =  [ (1.82052010259084,60,0),
(1.87932124992822,60,0.365265125197183),
(1.97007954255766,60,0.716317599608484),
(2.2052841319072,60,1.10858676129884),
(2.59771787609366,60,1.60034447849038),
(3.28415735696705,60,2.2157522575191),
(4.42311001517596,60,2.96333768885653),
(6.02352385140218,60,3.72513577097984),
(7.89237770808168,60,4.37465391189467),
(9.88394700268268,60,4.89483693065798),
(11.9368740162444,60,5.29421241774128),
(15.0891268278529,60,5.73480459210364),
(18.287397928682,60,6.03611278876435),
(21.5112347457447,60,6.23224736960953),
(24.752967564171,60,6.344527310818),
(27.999813525844,60,6.39142905841142),
(31.2556074881988,60,6.38716526317565),
(34.5139580221769,60,6.33884225050365),
(38.8652429251434,60,6.21803471882365),
(43.2203626855449,60,6.04748290939306),
(47.5767607317582,60,5.83429314760482),
(56.2882785383729,60,5.31411012884151),
(60.6357285839044,60,5.02275078773092),
(64.9921266301176,60,4.71433626567727),
(73.6857484353688,60,4.06481812476243),
(78.0434247673937,60,3.73082083129419),
(82.4087708142887,60,3.38971721243301),
(90.0337456809735,60,2.7970496746617),
(93.29081792914,60,2.54548575575158),
(96.5504467489298,60,2.29818563207722),
(99.816466997778,60,2.05088550840286),
(103.079930675003,60,1.81069171012145),
(106.347229209663,60,1.57334044199721),
(109.606858029453,60,1.34025296910873),
(112.872878278301,60,1.11285055653461),
(116.142733384584,60,0.906069525412491),
(119.417701634114,60,0.72705071119814),
(122.690113312021,60,0.555112656660496),
(125.951020417622,60,0.397272207185684),
(129.649101270819,60,0.15) ]

#EmpennageMoule2
coord_list_moule_2 =  [ (1.82052010259084,60,0),
(-8.17947989740916,60,0),
(-8.17947989740916,60,5),
(-18.1794798974092,60,5),
(-18.1794798974092,60,0),
(-30,60,0),
(-30,60,30),
(160,60,30),
(160,60,0),
(149.649101270819,60,0),
(149.649101270819,60,0.15),
(129.649101270819,60,0.15) ]


#EmpennageNervure3
coord_list_3 =  [ (4.57988298417009,120,0),
(4.63692241178326,120,0.354321550032992),
(4.72496152831664,120,0.694856269325401),
(4.95311923876932,120,1.0753727977655),
(5.3337954187094,120,1.55239714138969),
(5.99966873671533,120,2.14936691245695),
(7.10449764983132,120,2.87455420941163),
(8.65696207095502,120,3.6135283371069),
(10.4698238790084,120,4.24358650195156),
(12.4017244925154,120,4.74818450705691),
(14.3931445087491,120,5.1355944508673),
(17.4509538238378,120,5.56298620382538),
(20.5534026909716,120,5.85526701552575),
(23.6806513092416,120,6.0455252797458),
(26.8252597533068,120,6.15444124259641),
(29.9748281475993,120,6.19993778404034),
(33.1330764547895,120,6.19580173481816),
(36.2938047370932,120,6.14892651030018),
(40.5147223804679,120,6.03173844900522),
(44.739359986513,120,5.86629648011822),
(48.9652375801149,120,5.65949401900947),
(57.4157527797618,120,5.15489601390412),
(61.6329504604661,120,4.87226598372216),
(65.858828054068,120,4.5730917566515),
(74.2919834279196,120,3.94303359180684),
(78.5191010090783,120,3.61904306940313),
(82.7536585155779,120,3.28815913162913),
(90.150184291938,120,2.7132482897468),
(93.309672586685,120,2.46922138563848),
(96.4716408565455,120,2.22933053075233),
(99.6398090641901,120,1.98943967586618),
(102.805497296721,120,1.75644223635032),
(105.974905491923,120,1.52620216298258),
(109.136873761783,120,1.30009813883701),
(112.305041969428,120,1.07950884698768),
(115.476930139743,120,0.883417202182236),
(118.653778260285,120,0.709761905352967),
(121.828146405714,120,0.542975224142853),
(124.991354663131,120,0.38986377479321),
(128.578638664977,120,0.15) ]

#EmpennageMoule3
coord_list_moule_3 =  [ (4.57988298417009,120,0),
(-5.42011701582991,120,0),
(-5.42011701582991,120,5),
(-15.4201170158299,120,5),
(-15.4201170158299,120,0),
(-30,120,0),
(-30,120,30),
(160,120,30),
(160,120,0),
(148.578638664977,120,0),
(148.578638664977,120,0.15),
(128.578638664977,120,0.15) ]

profiles = [coord_list_1, coord_list_2, coord_list_3]
moules = [coord_list_moule_1, coord_list_moule_2, coord_list_moule_3]

wires = list()
for i in range(len(profiles)):
	bs = Part.BSplineCurve()
	bs.approximate(Points=profiles[i], DegMax=5, Tolerance=0.05, Continuity='C3')
	profil = bs.toShape()
	polyline = Part.makePolygon(moules[i])
	edges = polyline.Edges
	edges.append(profil)
	closed_wire = Part.Wire(Part.__sortEdges__(edges))
	wires.append(closed_wire)
	obj = FreeCAD.ActiveDocument.addObject("Part::Feature","EmpennageMoule_%d"%i)
	obj.Shape = closed_wire


# Part.makeLoft(list of wires,[solid=False,ruled=False,closed=False,maxDegree=5])
loft_shape = Part.makeLoft(wires,False,False,False,5)
loft_obj = FreeCAD.ActiveDocument.addObject("Part::Feature","Loft")
loft_obj.Shape = loft_shape
User avatar
Stéphane Combet
Posts: 43
Joined: Mon Feb 05, 2018 5:46 pm
Contact:

Re: Planeur téléguidé

Post by Stéphane Combet »

Argh merci infiniment ! :D :D :D

Le reste devrait suivre facilement, je n'ai plus trop de temps aujourd'hui mais je vous tiendrai au jus, si le loft se fait bien sur l'empennage entier, il me restera juste à convertir en solide et ce sera une énorme avancée pour mon projet.

Résultat du code de Chris_G :
Attachments
Capture.JPG
Capture.JPG (32.01 KiB) Viewed 781 times
User avatar
Chris_G
Veteran
Posts: 2598
Joined: Tue Dec 31, 2013 4:10 pm
Location: France
Contact:

Re: Planeur téléguidé

Post by Chris_G »

Stéphane Combet wrote: Sun May 20, 2018 5:04 pm il me restera juste à convertir en solide
Pour que le loft soit un solide, il faut mettre l'option correspondante à True :

Code: Select all

# Part.makeLoft(list of wires,[solid=False,ruled=False,closed=False,maxDegree=5])
loft_shape = Part.makeLoft(wires,True,False,False,5)
User avatar
Stéphane Combet
Posts: 43
Joined: Mon Feb 05, 2018 5:46 pm
Contact:

Re: Planeur téléguidé

Post by Stéphane Combet »

Woohooo!

Bon je m'en vais côté fabrication confirmer des choses (en particulier les différentes formes de rainures et leurs avantages/inconvénient). Je vous raconterai la suite et reviendrai sans doute avec d'autres questions pour designer d'autres pièces du planeur, là c'était la plus simple ! ;)
J'aurai peut-être aussi des péripéties pour que la personne qui va m'usiner les moules réussisse à ouvrir les fichiers sur son logiciel de fraisage, on verra ça.

Merci encore à tous !
Attachments
Capture.JPG
Capture.JPG (39.79 KiB) Viewed 764 times
Post Reply