Click here to sign up!
Hi, C Lee Bremer
HomeForumForumCorsetsFrench Corset draft from E. Lorentz, A. Lacroix
dexiss's Avatar
  • Welcome, dexiss
  • Last Visit Date: Today
  • Page:
  • 1
  • 2

TOPIC: French Corset draft from E. Lorentz, A. Lacroix

French Corset draft from E. Lorentz, A. Lacroix 2 years 8 months ago #112

  • jerwin
  • jerwin's Avatar
  • OFFLINE
  • Junior Boarder
  • Posts: 31
  • Thank you received: 94
  • Karma: 0
front and back pattern pieces-- as they appeared in the book
This text is hidden from guests

and

is what my script generates, so far.
Last Edit: 2 years 8 months ago by jerwin. Report to moderator
The following user(s) said Thank You: rachaelreichert, ancalime, dexiss

French Corset draft from E. Lorentz, A. Lacroix 2 years 8 months ago #150

  • jerwin
  • jerwin's Avatar
  • OFFLINE
  • Junior Boarder
  • Posts: 31
  • Thank you received: 94
  • Karma: 0
latest results:
The last image is what my script generates. (If you can use python, I can post the source, and if you use a cad program like draftsight, I

can supply a dxf file.)
I'm not too happy with the front's hip extension-- it looks a little short.


Corset droit en 6 Pièces
EXPLICATION DE LA QUATRIÈME LEÇON
Dos
Le Dos de ce corset étant identiquement le même que le précédent,
nous ne répéterons cette leçon, chères lectrices, que pour la forme,
en nous reportant aux nouvelles mesures de ce modèle.
Tracez donc les lignes de construction du dos comme il est expliqué.
Les lignes fondamentales terminées, indiquez de suite les 3 centimètres
de lacet. par une ligne pleine, parallèle à la ligne verticale pointillée.
Commencez ensuite le tracé de vos pièces, sur la ligne de taille, en
déduisant d'abord les 3 centimètres du lacet de votre point d'aplomb de
taille, afin d'obtenir la largeur de chacune de ces pièces.
Exemple : point d'aplomb de la taille . . . . . . . . . .. 11 centimètres.
moins le lacet . . . . . . . . . . . . . . . . . . . . . ... 3 centimètres.
reste 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 8 centimètres.
ll nous reste donc 8 centimètres, soit 4 centimètres pour chaque pièce
sur la ligne de taille.
Portez une première fois ces la centimètres de 1 à 2, et tracez une ligne
verticale pointillée, parallèle à la ligne pleine du lacet, dans toute la hauteur
du corset.
À 10 centimètres environ du point 2, comptez encore une fois la centi-
mètres et formez un deuxième rectangle, en l'indiquant par des lignes pointillées et parallèles au premier rectangle, qui vous donnent les Chiffres 3 et 4
De 4 u 5, descendez la ligne de taille du 1/3 du renversement.
Exemple : longueur de taille devant . . . . . . . . . 42 centimètres.
longueur du dos . . . . . . . . . . . . . . . . . ... 37 centimètres 1/2.
le renversement est donc de . . . . . . . .4 1/2 centimètres
dont vous portez le 1/3, soit 1 cent. 1/2, de 4 à 5,
Votre point d'aplomb de taille est complet.


Exemple : lacet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 centimètres
première pièce . . . . . . . . . . . . . . . . . . . . . . .4 centimètres
. .
deuxième pièce . . . . . . . . . . . . . . . . . . . . . . .4 centimètres

Total . . . . . . . . . . . . .11 centimètres
Occupez-vous maintenant de la ligne de poitrine. sur laquelle vous avez
actuellement la même largeur que sur la ligne de taille, soit 11 centimètres.
Votre point d `aplomb de poitrine étant de 17 centimètres, il vous manque
pour le compléter 6 centimètres dont vous porterez le 1/3, soit 2 centimètres,
de 6 à 7, de 8 à 9, et de 10 à 11.
Réunissez 5 à 11 par une ligne pleine sur laquelle vous portez en partant
de 5, la hauteur du dessous de bras moins 4 centimètres; joignez aussi
2 à 7 et 3 à 9 par des lignes pleines.
Rapprochez vos pièces à la taille en pliant votre papier, comme on vous l'a indiqué, et tracez alors votre ligne de taille.
Pour terminer le haut de vos pièces, réunissez 6 à 11 comme l'indique
la fig. 12.
Passez maintenant à la ligne des hanches, prise å 12 centimètres au-
dessous de la ligne de taille, et cherchez la diférence qui existe entre votre
point d'aplomb des hanches à 12 centimètres, et votre point d'aplomb de
taille.
Exemple : point d'aplomb des hanches à 12centimètres 17 centimètres.
point d`aplomb de la taille . . . . . . . . . . . . . .. . 11 centimètres.
c`est donc le tiers de ces 6 centimètres,
soit 2 centimètres, qu'il faut ajouter à droite et gauche des lignes verticales
pointillées, sur la ligne des hanches à 12 centimètres, pour trouver le point
d'aplomb.
Sur la ligne des hanches, prise 20 centimètres au-dessous de la ligne de
taille, procédez comme sur la ligne des hanches à 12 centimètres, mais en se
basant sur le point d'aplomb des hanches à 20 centimètres.
Exemple : point d'aplomb des hanches à 20 centimètres….. 19 centimètres.
point d'aplomb de la taille . . . . . . . . . . . . .. . 11 centimètres.
c'est donc le tiers de ces 8 centimètres,
soit 2 centimètres 7 mm., que vous porterez de 12 à 13, de 14 à 15 et de 16
à 17.
Réunissez par des lignes pleines arrondies 2 à 13, 3 à 14 et 5 à 17, en
passant par les points trouvés aux hanches à 12 centimètres. La longueur
5 à l7 est facultative, suivant la longueur que l'on veut donner au corset.
Terminez le bas des pièces en consultant le dessin
Devant
Tracez d'abord les lignes de construction du devant, en consultant la
deuxième leçon.
Comme nous allons faire quatre pièces pour le devant de ce corset, nous
partirons toujours des mêmes principes, mais en basant nos divisions sur
le quart du complément des tours de poitrine, taille et hanches, au lieu du
tiers.
La différence de construction est si peu sensible que vous n'aurez aucune difficulté à établir ce patron.
Les lignes de construction dessinées, sortez sur la ligne de poitrine, à
droite de la ligne pointillée, 1 centimètre 1/2, marquez le chiffre 1 et réunissez 10 à 1 par une ligne pleine, que vous prolongerez comme à la précédente
leçon, afin de pouvoir déterminer sur ce prolongement la hauteur du corset.
Comptez maintenant de 1 vers 2, le demi-tour de poitrine, moins
le point d'aplomb de la poitrine.
Exemple : demi-tour de poitrine . . . . . . . . . . . . . . . . . .. . 47 centimètres.
moins le point d'aplomb de la poitrine.. . . . 17 centimètres.
la largeur 1-2 sera donc égale à . . . . . . . . . .. . 30 centimètres.
De 10 à 3, sur la ligne de taille, portez cette même largeur. moins
1 centimètre 1/2.
Exemple : nous avons sur la ligne de poitrine 30 centimètres, qui sont
comptés entre les chiffres 1-2, vous n'aurez donc à donner entre les chiffres
10-3 qu'une largeur de 28 centimètres 5 mm.
Joignez, à présent, 3 à 2 en prolongeant la ligne au-delà de ce dernier
chiffre.
De 3 à 4, elevez votre ligne de taille du 1/8 du demi-tour de poitrine.
Exemple : demi-tour de poitrine li7 centimètres, le 1/ 8 de 47 centimètres
donne 5 centimètres 9 mm., que vous comptez de 3 à 4.

Réunissez 4 à 10, par une ligne pointillée qui devient la ligne de taille
réelle (voir dessin), et indiquez ensuite les lignes des hanches à 12 et à
20 centimètres au-dessous de la ligne de taille, par des lignes parallèles å la
ligne de taille 4-10.
De 4 à 5, portez la hauteur du dessous de bras, moins 4 centimètres ce
qui donne le point 5 et détermine la hauteur du corset sur le côté.
Donnez, de 1 à 6, la moitié de la hauteur 2-5, et joignez 5 à 6 par une
ligne pointillée (voir la fig. 13).
A la moitié de cette distance, élevez de 3 à 5 centimètres, suivant que
vous voudrez un corset enveloppant plus ou moins la gorge.
Tracez enfin une ligne pleine arrondie qui réunit encore 5 à 6, en passant par l'élévation que vous venez de donner à votre corset (voir dessin).
Divisons maintenant la largeur 5-6 en quatre parties égales.
Exemple : complément du demi-tour de poitrine, 30 centimètres, soit
7 centimètres 1/2 pour chaque pièce sur cette ligne.
Laissez la division 6-7 intacte, mais tracez, au milieu des trois autres
pièces, des lignes pointillées dans toute la hauteur du corset, et parallèles au
côté 5-3.
Descendez ensuite à la ligne de taille, et donnez à chaque pièce le quart
du complément du demi-tour de taille.
Exemple : demi-tour de taille . . . . . . . . . . . . . . . . . . . . . 30 centimètres.
moins le point d'aplomb de la taille . . . . .. . 11 centimètres.
c'est donc le 1/4 de ces 19 centimètres,
soit li centimètres 8 mm., que vous donnerez comme largeur à chaque pièce
sur la ligne de taille.
Portez une première fois ces 4 centimètres 8 mm.. de 10 à 11.
A droite et à gauche des lignes verticales pointillées, reportez cette
même mesure, soit 2 centimètres 4 mm. de chaque côté, ce qui donne les
points 12-13, 14-15, 16-17.
Réunissez par des lignes pleines 11 à 7. 12 à 7, 13 à 3, 14 à 8. 15 à 9.
16' à 9 et 17 à 5 en prolongeant ces lignes au-delà de la ligne pointillée 5-6
(consulter le dessin).
A la moitié de la hauteur 15-9, et de la hauteur 16-9, cintrez d'un demi-
centimètre (voir dessin).
Ceci fait, rapprochez toutes les pièces sur la ligne de taille, en pliant le
papier de manière que les lignes 16-9, 15-.9 se touchent, ainsi que 13-8 et 14-8.
11-7 et 12-7.
Marquez enfin par une ligne pleine votre ligne de taille (voir dessin).
Passons maintenant å la ligne des hanches prise à 12 centimètres au-
dessous de la ligne de taille, et cherchons le complément du demi-tour des
hanches à 12 centimètres.
Exemple : demi-tour des hanches à 12 centimètres . 46 centimètres
moins le point d`aplomb des hanches à 12 centimètres . 17 centimètres
le complément du demi-tour des hanches est donc de . . 29 centimètres.
dont nous porterons le 1/4, moins 2 centimètres, de 18 à 19.
Exemple : le 1/4 de 29 étant 7 centimètres 3 mm, c'est donc ce 1/4 moins
2 centimètres. soit 5 centimètres 3 mm.. que nous comptons de 18 à 19.
Joignez par une ligne pleine 11 à 19, en prolongeant cette ligne au-delà
de la ligne des hanches à 20 centimètres (voir dessin).
Puis. à droite de la première ligne pointillée, sortez 1 centimètre et
marquez le chiffre 20.
Réunissez encore 12 in 20 par une ligne pleine, en prolongeant cette ligne
comme la précédente.
Donnez de 20 à 21. le 1/4 moins 1 centimètre du complément, soit
6 centimètres 3 mm., et réunissez 13 à 21. toujours en prolongeant la ligne
(voir dessin).
Toujours à droite de la deuxième ligne verticale pointillée ,ressortez
1 centimètre, ce qui vous donne le point 22, et réunissez 14 à 22 en donnant
à cette ligne la même longueur que celle de la ligne 13-21.
De 22-23 porter le complément du demi-tour des hanches moins les largueurs 18-19 et
20-21.
Exemple : le complément du demi-tour des hanches à 12 centimètres
étant de 29 centimètres, moins la largeur 18-19 et 20-21, qui donnant ensemble 11 centimètres 6 mm., il reste à donner de 22 à 23 une largeur de
29 centimètres, moins 11 centimètres 6 mm., soit 17 centimètres 4 mm
Faites de même pour la ligne des hanches à 20 centimètres et
réunissez 17 à 23, en prolongeant cette ligne de la même longueur qu'à ligne
du dos 5-17.
Joignez enfin 16' à 24, par une ligne pleine, que vous prolongez jusqu'au
bas du corset; réunissez ensuite 15 à 24 (voir le dessin).
Termines ce corset, en arrondissant le bas comme indique le croquis.
Attachments:
Last Edit: 2 years 8 months ago by jerwin. Report to moderator
The following user(s) said Thank You: rachaelreichert, ancalime, dexiss

French Corset draft from E. Lorentz, A. Lacroix 2 years 8 months ago #152

  • jerwin
  • jerwin's Avatar
  • OFFLINE
  • Junior Boarder
  • Posts: 31
  • Thank you received: 94
  • Karma: 0
I made the lines less grey
Last Edit: 2 years 8 months ago by jerwin. Report to moderator
The following user(s) said Thank You: rachaelreichert, ancalime, dexiss

French Corset draft from E. Lorentz, A. Lacroix 2 years 8 months ago #160

  • mmcnealy
  • mmcnealy's Avatar
  • OFFLINE
  • Administrator
  • Posts: 24
  • Thank you received: 75
  • Karma: 0
Very neat!
The following user(s) said Thank You: rachaelreichert, ancalime, dexiss

French Corset draft from E. Lorentz, A. Lacroix 2 years 8 months ago #169

  • jerwin
  • jerwin's Avatar
  • OFFLINE
  • Junior Boarder
  • Posts: 31
  • Thank you received: 94
  • Karma: 0
And here I shall demonstrate my worth as a programmer. I'm not very skilled at python.

Right now, I don't have time to think about licenses; I'll probably open source it properly at some later point.
#Copyright 2012Jeremy Erwin. All rights reserved
from dxfwrite import DXFEngine as dxf
import patterndxf as pat
import math

#setup dxf document
drawing = dxf.drawing('corsetdroit6.dxf')
drawing.add_layer('LINES',color=0,linetype='SOLID')
drawing.add_layer('GUIDES',color=1,linetype='DASHED')
drawing.add_layer('TEST',color=3,linetype='DOT')

def printpoint(pstring):
    drawing.add(dxf.text(pstring, eval(pstring), height=0.4))
    return pstring
#sizes


longDos=37.5
hatDeBra=22.5
hatPinces=24
longTailleDev=42
dtTaille=30
paTaille=11
dtPoitrine=47
paPoitrine=17
dtHanches12=46
paHanches12=17
dtHanches20=49
paHanches20=19
renversment= longTailleDev-longDos
bottomextension=4


#construction lines for the back

cb1=(0, longDos) #ligne de poitrine

cb2=pat.directionVector(cb1,pat.down,longDos/2.0) #ligne de taille
cb3=pat.directionVector(cb2,pat.down,12) #ligne de hanches 12
cb4=pat.directionVector(cb2,pat.down,20) #ligne de hanches 20
#construction lines for the front


cf1=pat.displacementVector(cb1,dtHanches20*1.5,-2*renversment)  #ligne de poitrine
cf2=pat.directionVector(cf1,pat.down,longTailleDev-hatPinces) #ligne de taille
cf3=pat.directionVector(cf2,pat.down,12) #ligne de hanches 12
cf4=pat.directionVector(cf2,pat.down,20) #ligne de hanches 20

#back corset pattern

b1=pat.directionVector(cb2, pat.right, 3.0)
b1poitrine=pat.directionVector(cb1, pat.right, 3.0)
b1hanches12=pat.directionVector(cb3, pat.right, 3.0)
b1hanches20=pat.directionVector(cb4, pat.right, 3.0)


b2=pat.directionVector(b1, pat.right, paTaille -3.0)
b3=pat.directionVector(b2, pat.right, 10)
b4=pat.directionVector(b3, pat.right, paTaille -3.0)

b5=pat.directionVector(b4, pat.down, renversment/3.0)

b6= pat.angleAngleIntersectionVector(b2,pat.up, b1poitrine, pat.right )
b8= pat.angleAngleIntersectionVector(b3,pat.up, b1poitrine, pat.right )
b10= pat.angleAngleIntersectionVector(b4,pat.up, b1poitrine, pat.right )

backbustflare= (paPoitrine-paTaille)/3.0

b7= pat.directionVector(b6,pat.right, backbustflare)
b9= pat.directionVector(b8,pat.left, backbustflare)
b11= pat.directionVector(b10,pat.right, backbustflare)

b11a= pat.alongVector(b5, b11, hatDeBra-4.0)
backbustangle=math.degrees(math.atan2(b11a[1]-b11[1], paPoitrine-3.0))
b7a=pat.directionVector(b1poitrine, backbustangle, pat.dist(b1poitrine, b7) )
b9a= pat.directionVector(b11, backbustangle-180.0, pat.dist(b9, b11) )

backhip12flare= (paHanches12-paTaille)/3.0
#need to establish points along hip12 line

b18=pat.angleAngleIntersectionVector(b2,pat.up, b1hanches12, pat.right )
b21=pat.angleAngleIntersectionVector(b3,pat.up, b1hanches12, pat.right )
b23=pat.angleAngleIntersectionVector(b4,pat.up, b1hanches12, pat.right )


b19= pat.directionVector(b18,pat.right, backhip12flare)
b20= pat.directionVector(b21,pat.left, backhip12flare)
b24= pat.directionVector(b23,pat.right, backhip12flare)
printpoint("b19")
printpoint("b20")
printpoint("b24")


b12=pat.angleAngleIntersectionVector(b1hanches20,pat.right, b2, pat.down)
b15=pat.angleAngleIntersectionVector(b1hanches20,pat.right, b3, pat.down)
b16=pat.angleAngleIntersectionVector(b1hanches20,pat.right, b4, pat.down)

backhip20flare= (paHanches20-paTaille)/3.0
b13= pat.directionVector(b12,pat.right, backhip20flare)
b14= pat.directionVector(b15,pat.left, backhip20flare)
b17= pat.directionVector(b16,pat.right, backhip20flare)

b17a=pat.directionVector(b17,pat.down, bottomextension)
backhip20angle=math.degrees(math.atan2(-bottomextension, paHanches20-3.0))


b13a=pat.directionVector(b1hanches20, backhip20angle, pat.dist(b1hanches20, b13) )

b14a=pat.directionVector(b17a, backhip20angle-180.0, pat.dist(b17,b14) )

drawing.add(dxf.line(cb1,cb4,layer= 'GUIDES'))
drawing.add(dxf.line(b1poitrine,b1hanches20,layer= 'LINES'))
drawing.add(dxf.line(b1poitrine,b7a,layer= 'LINES'))
drawing.add(dxf.line(b2,b7a,layer= 'LINES'))
drawing.add(dxf.line(b2,b19,layer= 'LINES'))
drawing.add(dxf.line(b13a,b19,layer= 'LINES'))
drawing.add(dxf.line(b13a,b1hanches20,layer= 'LINES'))
drawing.add(dxf.line(b6,b12,layer= 'GUIDES'))

drawing.add(dxf.line(b8,b15,layer= 'GUIDES'))
drawing.add(dxf.line(b10,b16,layer= 'GUIDES'))

drawing.add(dxf.line(b9a,b11a,layer= 'LINES'))
drawing.add(dxf.line(b11a,b5,layer= 'LINES'))
drawing.add(dxf.line(b5,b24,layer= 'LINES'))
drawing.add(dxf.line(b24,b17a,layer= 'LINES'))
drawing.add(dxf.line(b17a,b14a,layer= 'LINES'))
drawing.add(dxf.line(b14a,b20,layer= 'LINES'))
drawing.add(dxf.line(b20,b3,layer= 'LINES'))
drawing.add(dxf.line(b3,b9a,layer= 'LINES'))

printpoint("b1")
printpoint("b2")
printpoint("b3")
printpoint("b4")
printpoint("b5")
printpoint("b6")
printpoint("b7")
printpoint("b8")
printpoint("b9")
printpoint("b10")
printpoint("b11")
printpoint("b12")
printpoint("b13")
printpoint("b14")
printpoint("b15")
printpoint("b16")
printpoint("b17")

           

f1=pat.directionVector(cf1,pat.right,1.5)
f2=pat.directionVector(cf1,pat.left, dtPoitrine-paPoitrine)
f10=pat.directionVector(cf1,pat.down,(longTailleDev-hatPinces))
f3=pat.angleAngleIntersectionVector(f10, pat.left, f2, pat.down)
f4=pat.directionVector(f3,pat.up, dtPoitrine/8.0)
f5=pat.directionVector(f4,pat.up, hatDeBra-4.0)
f6a=pat.circleLSIntersectionVector(cf1,f10,f1,pat.dist(f2,f5)/2.0) #we want the othe root. sigh
f6=pat.circleLSIntersectionVector(cf1,f6a,f1,pat.dist(f2,f5)/2.0) #yay. It worked.
f8=pat.midPointVector(f5,f6)
f8a=pat.directionVector(f8,pat.up,2.0)
f9=pat.midPointVector(f5,f8)
f7=pat.midPointVector(f8,f6)


#guides in the center of each panel
f59=pat.midPointVector(f5,f9)
f98=pat.midPointVector(f8,f9)
f87=pat.midPointVector(f8,f7)

#bring the guides down to the waistline

f59a=pat.teeIntersectionVector(f59,pat.down,f4,f10)
f98a=pat.teeIntersectionVector(f98,pat.down,f4,f10)
f87a=pat.teeIntersectionVector(f87,pat.down,f4,f10)




waistpanel=(dtTaille-paTaille)/4.0

f11=pat.alongVector(f10,f4, waistpanel)
f12=pat.alongVector(f87a,f10, waistpanel/2.0)
f13=pat.alongVector(f87a,f4, waistpanel/2.0)
f14=pat.alongVector(f98a,f10, waistpanel/2.0)
f15=pat.alongVector(f98a,f4, waistpanel/2.0)
f16=pat.alongVector(f59a,f10, waistpanel/2.0)
f15a=pat.perpendicularbisector(f9,f15, 0.5)
f16a=pat.perpendicularbisector(f9,f16, -0.5)

f17=pat.alongVector(f59a,f4, waistpanel/2.0)

f18=pat.directionVector(f10,pat.down, 12)

f20a=pat.directionVector(f87a,pat.down, 12)
f20=pat.alongVector(f20a,f18,1.0)
f19=pat.alongVector(f18,f20,(dtHanches12-paHanches12)/4.0-2)
f21=pat.extendVector(f19,f20,(dtHanches12-paHanches12)/4.0-1)
f22a=pat.intersectionVector(f98,f98a,f18,f21)
f22=pat.alongVector(f22a,f18,1)
f24=pat.intersectionVector(f59,f59a,f18,f21)
f23=pat.extendVector(f18,f22,(dtHanches12-paHanches12-pat.dist(f21,f20)-pat.dist(f18,f19)))

#ok time for the unlabled lower hip

f25=pat.directionVector(f10,pat.down, 20) #18
f27a=pat.directionVector(f87a,pat.down, 20) #20

f26=pat.alongVector(f25,f27a,(dtHanches20-paHanches20)/4.0-2) #19
f28a=pat.extendVector(f25,f27a,(dtHanches20-paHanches20)/4.0-1) #21
f28=pat.alongVector(f21,f28a,6) #21
f29a=pat.intersectionVector(f14,f22,f98,f98a) #22
f29=pat.alongVector(f22,f29a,6)
f30=pat.extendVector(f25,f29a,(dtHanches20-paHanches20-pat.dist(f26,f25)-pat.dist(f28a,f27a))) #23
f31=pat.extendVector(f16,f24,7)
f26a=pat.teeIntersectionVector(f25, pat.left, f19,f26)
f27=pat.alongVector(f20,f27a,pat.dist(f19, f26a)) #20
f27b=pat.directionVector(f27, pat.left, 1.5)

f30a=pat.extendVector(f23,f30, pat.dist(b24,b17a)+pat.dist(b5,b24)-pat.dist(f30,f23)-pat.dist(f17,f23))
f31a=pat.perpendicularVector(f30,f30a,4)
printpoint("f31a")
f28a=pat.alongVector(f21,f28,6)


#drawing.add(dxf.text("f1", f1))
printpoint("f1")
printpoint("f2")
printpoint("f3")
printpoint("f4")
printpoint("f5")
printpoint("f6")
printpoint("f7")
printpoint("f8")
printpoint("f9")
printpoint("f10")
printpoint("f11")
printpoint("f12")
printpoint("f13")
printpoint("f14")
printpoint("f15")
printpoint("f16")
printpoint("f17")
printpoint("f18")
printpoint("f19")
printpoint("f20")
printpoint("f21")
printpoint("f22")
printpoint("f23")
printpoint("f24")
printpoint("f25")
printpoint("f26")
printpoint("f27")
printpoint("f28")
printpoint("f29")
printpoint("f30")
printpoint("f31")

drawing.add(dxf.line(cf1,cf4,layer= 'GUIDES'))
drawing.add(dxf.line(f1,f2,layer= 'TEST'))
drawing.add(dxf.line(f3,f2,layer= 'GUIDES'))
drawing.add(dxf.line(f5,f3,layer= 'GUIDES'))
drawing.add(dxf.line(f5,f4,layer= 'GUIDES'))
drawing.add(dxf.line(f59,f24,layer= 'GUIDES'))
drawing.add(dxf.line(f98,f22a,layer= 'GUIDES'))
drawing.add(dxf.line(f87,f87a,layer= 'GUIDES'))
drawing.add(dxf.line(f10,f3,layer= 'GUIDES'))
drawing.add(dxf.line(f10,f6,layer= 'LINES'))
drawing.add(dxf.line(f10,f4,layer='GUIDES'))

drawing.add(dxf.line(f5,f6,layer= 'GUIDES'))

drawing.add(dxf.line(f7,f11,layer= 'LINES'))
drawing.add(dxf.line(f7,f12,layer= 'LINES'))
drawing.add(dxf.line(f8,f13,layer= 'LINES'))
drawing.add(dxf.line(f8,f14,layer= 'LINES'))
drawing.add(dxf.line(f9,f15,layer= 'GUIDES'))
drawing.add(dxf.line(f9,f16,layer= 'GUIDES'))

drawing.add(dxf.line(f9,f16a,layer= 'LINES'))
drawing.add(dxf.line(f9,f15a,layer= 'LINES'))
drawing.add(dxf.line(f16,f16a,layer= 'LINES'))
drawing.add(dxf.line(f15,f15a,layer= 'LINES'))
drawing.add(dxf.line(f5,f17,layer= 'LINES'))
drawing.add(dxf.line(f11,f19,layer= 'LINES'))
drawing.add(dxf.line(f12,f20,layer= 'LINES'))
drawing.add(dxf.line(f13,f21,layer= 'LINES'))
drawing.add(dxf.line(f14,f22,layer= 'LINES'))
drawing.add(dxf.line(f15,f24,layer= 'LINES'))
drawing.add(dxf.line(f16,f24,layer= 'LINES'))
drawing.add(dxf.line(f18,f23,layer= 'GUIDES'))
drawing.add(dxf.line(f25,f30,layer= 'GUIDES'))
drawing.add(dxf.line(f25,f26a,layer= 'LINES'))
drawing.add(dxf.line(f19,f26a,layer= 'LINES'))
drawing.add(dxf.line(f17,f23,layer= 'LINES'))
drawing.add(dxf.line(f20,f27,layer= 'LINES'))
drawing.add(dxf.line(f27b,f27,layer= 'LINES'))
drawing.add(dxf.line(f27b,f28,layer= 'LINES'))
drawing.add(dxf.line(f21,f28a,layer= 'LINES'))
drawing.add(dxf.line(f23,f30a,layer= 'LINES'))
drawing.add(dxf.line(f31a,f30a,layer= 'LINES'))
drawing.add(dxf.line(f31a,f31,layer= 'LINES'))
drawing.add(dxf.line(f31,f29,layer= 'LINES'))
drawing.add(dxf.line(f29,f22,layer= 'LINES'))

drawing.add(dxf.line(f8a,f5,layer= 'LINES'))
drawing.add(dxf.line(f8a,f6,layer= 'LINES'))
drawing.add(dxf.line(f10,f25,layer= 'LINES'))
drawing.save()

and here is the support library. (patterndxf.py) Warning, some of the unused functions may be buggy...
#Copyright 2012Jeremy Erwin. All rights reserved
import sys,math, numpy as np
up=90
down=270
left=180
right=0
def angle(vectorA, vectorB):
    
    return math.atan2((vectorB[1]-vectorA[1]),(vectorB[0]-vectorA[0]))
def angledegrees(vectorA,vectorB):
    return math.degrees(angle(vectorA,vectorB))\

def dist(vectorA, vectorB):
    dx=vectorA[0]-vectorB[0]
    dy=vectorA[1]-vectorB[1]
    return math.sqrt(dx*dx+dy*dy)

def directionVector(vectorA, degrees, length):
    theta=math.radians(degrees)
    dx=math.cos(theta)*length
    dy=math.sin(theta)*length
    
    return (vectorA[0]+dx, vectorA[1]+dy)

def displacementVector(vectorA, x, y):
    return (vectorA[0]+x, vectorA[1]+y)

def extendVector(vectorA, vectorB, length):
    theta=angle(vectorA,vectorB)

    length2=length+dist(vectorA,vectorB)

    dx=math.cos(theta)*length2
    dy=math.sin(theta)*length2

    return (vectorA[0]+dx, vectorA[1]+dy)

def alongVector(vectorA, vectorB, length):
    theta=angle(vectorA,vectorB)
    dx=math.cos(theta)*length
    dy=math.sin(theta)*length
    return (vectorA[0]+dx, vectorA[1]+dy)

def perpendicularVector(vectorA, vectorB, length):
    theta=angle(vectorA,vectorB)+math.pi/2
    dx=math.cos(theta)*length
    dy=math.sin(theta)*length
    return (vectorB[0]+dx, vectorB[1]+dy)



def midPointVector(vectorA, vectorB):
    x=(vectorA[0]+vectorB[0])/2.0
    y=(vectorA[1]+vectorB[1])/2.0
    return (x,y)

def perpendicularbisector(vectorA, vectorB, length):
    x=(vectorA[0]+vectorB[0])/2.0
    y=(vectorA[1]+vectorB[1])/2.0
    theta=angle(vectorA,vectorB)+math.pi/2
    dx=math.cos(theta)*length
    dy=math.sin(theta)*length
    return (x+dx, y+dy)
    
def intersectionVector(vectorA,vectorB,vectorC,vectorD):
    a = np.array([[vectorB[1]-vectorA[1],vectorA[0]-vectorB[0]],[vectorD[1]-vectorC[1],vectorC[0]-vectorD[0]]])
    b = np.array([a[0][0]*vectorA[0] + a[0][1]*vectorA[1],a[1][0]*vectorC[0]+a[1][1]*vectorC[1]])
    x = np.linalg.solve(a, b)
    return (x[0],x[1])

def teeIntersectionVector(vectorA,degrees,vectorB,vectorC):
    theta=math.radians(degrees)
    pseudox=vectorA[0] + math.cos(theta)*1000
    pseudoy=vectorA[1] + math.sin(theta)*1000
    a = np.array([[pseudoy-vectorA[1],vectorA[0]-pseudox],[vectorC[1]-vectorB[1],vectorB[0]-vectorC[0]]])
    b = np.array([a[0][0]*vectorA[0] + a[0][1]*vectorA[1],a[1][0]*vectorB[0]+a[1][1]*vectorB[1]])
    x = np.linalg.solve(a, b)
    return (x[0],x[1])

def angleAngleIntersectionVector(vectorA, degreesA, vectorB, degreesB):
    thetaA=math.radians(degreesA)
    thetaB=math.radians(degreesB)
    
    px1=vectorA[0] + math.cos(thetaA)*1000
    py1=vectorA[1] + math.sin(thetaA)*1000
    
    px2=vectorB[0] + math.cos(thetaB)*1000
    py2=vectorB[1] + math.sin(thetaB)*1000
    
    a = np.array([[py1-vectorA[1],vectorA[0] - px1],
 [py2-vectorB[1],vectorB[0]-px2]])
    b = np.array([a[0][0]*vectorA[0] + a[0][1]*vectorA[1],a[1][0]*vectorB[0]+a[1][1]*vectorB[1]])
    x = np.linalg.solve(a, b)
    return (x[0],x[1])


def circleLineIntersectionVector(vectorA, vectorB, degrees, radius):
    theta=math.radians(degrees)

    #vectorB where line begins,vectorA=circle center
    #determine angle of line connecting lineBeginPoint and centerPoint
    centerangle=angle(vectorA,vectorB)
    #determine distance between A and B
    distance=dist(vectorA,vectorB)
    rho=centerangle-theta

    determinant=radius*radius-(distance*distance*math.sin(rho)*math.sin(rho))

    if determinant < 0:
        return (float('nan'), float('nan'))
    elif determinant==0: #one solution
        s0=distance*math.cos(rho)
        dx=s0*math.cos(theta)
        dy=s0*math.sin(theta)
        return (vectorA[0]+dx, vectorA[1]+dy)
    else: #two solutions
        s0=distance*math.cos(rho)+math.sqrt(determinant)
        s1=distance*math.cos(rho)-math.sqrt(determinant)
        if s0<0:
            s0=sys.float_info.max
        elif s1<0:
            s1=sys.float_info.max
        dx=min(s0,s1) *math.cos(theta)
        dy=min(s0,s1) *math.sin(theta)
        return (vectorA[0]+dx, vectorA[1]+dy)
def circleLSIntersectionVector(vectorA, vectorB, vectorC, radius):
    
    return  circleLineIntersectionVector(vectorB, vectorA, angledegrees(vectorB,vectorC), radius)
  
def circleCircleIntersectionVector(vectorA, radiusA, vectorB, radiusB,up):
#determine distance between A and B
    distance=dist(vectorA,vectorB)	
    deltax=vectorA[0]-vectorB[0];
    deltay=vectorA[1]-vectorB[1];
    #distance to line joining points of intersection
    k = (distance*distance + radiusA*radiusA - radiusB*radiusB)/(2*distance); 

   
    if up:
         newx = vectorA[0] - deltax*k/distance - (deltay/distance)*math.sqrt(radiusA*radiusA - k*k);
         newy = vectorA[1] - deltay*k/distance + (deltax/distance)*math.sqrt(radiusA*radiusA - k*k);
    else:
         newx = vectorA[0] - deltax*k/distance + (deltay/distance)*math.sqrt(radiusA*radiusA - k*k);
         newy = vectorA[1] - deltay*k/distance - (deltax/distance)*math.sqrt(radiusA*radiusA - k*k);
    return (newx, newy)

Last Edit: 2 years 8 months ago by jerwin. Report to moderator
The following user(s) said Thank You: rachaelreichert, ancalime, dexiss
  • Page:
  • 1
  • 2
Time to create page: 0.234 seconds