Skip to content

Instantly share code, notes, and snippets.

@t-nissie
Last active October 17, 2020 03:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save t-nissie/270ef5d54947d53f025d773f051dcc6b to your computer and use it in GitHub Desktop.
Save t-nissie/270ef5d54947d53f025d773f051dcc6b to your computer and use it in GitHub Desktop.
文化式成人女子原型 | nbbbp.eps | New Bunka Basic Bodice Pattern | Bunka Sloper | 日本新文化式女装原型 | Pola Dasar Badan Wanita Bunka Baru

文化式成人女子原型 | nbbbp.eps | New Bunka Basic Bodice Pattern | Bunka Sloper | 日本新文化式女装原型 | Pola Dasar Badan Wanita Bunka Baru

文化式成人女子原型をPostScript言語で描きます

Drafting New Bunka Basic Bodice Pattern in PostScript language

nbbp

使い方

Macでの使い方(大判プリンタがある場合)

  • 下のnbbbp.epsの右の[Raw]というボタンを右クリックして「リンク先のファイルをダウンロード」します
  • nbbbp.eps.txtというファイル名でダウンロードされているはずなのでそれをダブルクリックして《テキストエディット》で開きます
  • バスト、ウエスト、背丈を変更して保存します
  • ファイル名をnbbbp.eps.txtからnbbbp.epsに変更します
  • nbbbp.epsをダブルクリックして《プレビュー》で開きます
  • 大判プリンタに倍率100%で印刷します

UNIXまたはMacでの使い方(GhostScriptすなわちgsコマンドが必要)

7枚のA4用紙に印刷して貼り合わせて作ることができます。 GhostScriptというアプリケーションが必要です。 ターミナルから以下のUNIXコマンドを実行します。 長辺の糊代は1.5 cmです。 外周は1.5 or 2.5 cmの縫い代分の余白が付きます。 バストが90 cm以下の場合は7枚目の印刷は不要です。

git clone https://gist.github.com/270ef5d54947d53f025d773f051dcc6b.git bunka
cd bunka
emacs nbbbp.eps   # Edit BUST, WAIST, CBL.
make              # It will generate A4 papers of nbbbpA4.pdf.
open nbbbpA4.pdf  # Preview the PDF file and print them in 100% scale.

UNIXの場合はopenのかわりにevinceを使ってください。

バストが92 cm以上の場合、参考文献1,3,6などを参照して、印刷後に前袖ぐり線を修正してください。

各部の長さや角度はmakeで同時に生成されるnbbbp.txtに記録されます。 phiはバストライン (BL) とバストの上のダーツ線のなす角度です。

設計方針

各点の座標を定義してそれらを線でつなげます

  • Define vertices
  • Connect vertices with lines

TODO

  • 曲線をなめらかに
  • バスト寸法が92 cm以上の場合の胸ぐせダーツの上下のアームホールのカーブの自動補正 (Auto front-arm-hole-curve correction for BUST > 92 cm)

Glossary 用語集

C

center back length 背丈

E

Encapsulated PostScript (EPS) 画像ファイルフォーマットの1 https://ja.wikipedia.org/wiki/Encapsulated_PostScript

F

finish line 仕上がり線

P

PostScript アドビシステムズが開発したページ記述言語 https://ja.wikipedia.org/wiki/PostScript

S

shoulder width 肩幅

sleeve cap height 袖山の高さ

References 参考文献

[1] 文化服装学院編『文化ファッション大系 改訂版・服飾造形講座(1)服飾造形の基礎』2009年 文化出版局.

[2] English Translation of the Bunka Fashion College Garment Design Textbooks (1) Fundamentals of Garment Design, 2009, Bunka publishing center.

[3] ミセスのスタイルブック 2020年 初夏号 文化出版局.

[4] 洋裁CADの動画 https://www.youtube.com/watch?v=RZ4TAYOsvt4 他.

[5] DIY : Drafting New Bunka Basic Bodice Pattern https://www.youtube.com/watch?v=qyOQeiNQlqc .

[6] ミセスのスタイルブック 2007年 初夏号 付録 文化式成人女子原型 文化出版局.

蛇足

ダーツaの頂点のBPからの距離を「2〜3cm」のどの値にすればよいのかわかりませんでした。 古本として入手した参考文献[1]に 4.5-D_total/6 ということが書き込みしてありました。 バスト大→ウエストとの差(D_total)大→BPのより近くからダーツを入れる、という道理。 ここでD_totalは総ダーツ量。

#-*-Makefile-*- for nbbbp.eps
##
SED = sed -e 's/PrintParameters *true *def/PrintParameters false def/'
GS = gs -dEPSCrop -dSAFER -dBATCH -dQUIET -sDEVICE=pdfwrite
BUST = $(shell egrep '/BUST.*def' nbbbp.eps | sed -e 's%/BUST *%%' -e 's/ *def//')
WWW = $(shell echo 'scale=2; ($(BUST)/2+6.0 + 1.5 ) * 28.346' | bc)
HHH = $(shell echo 'scale=2; ($(BUST)/2+6.0 + 0.5 ) * 28.346' | bc)
X0 = $(shell echo 'scale=2; ($(BUST)/2+6.0 - (29.7-2.5)) * 28.346' | bc)
X1 = $(shell echo 'scale=2; ($(BUST)/2+6.0 + 2.5 ) * 28.346' | bc)
X2 = $(shell echo 'scale=2; ($(BUST)*0.234 + 3.6 - 10.5) * 28.346' | bc)
X3 = $(shell echo 'scale=2; ($(BUST)*0.234 + 3.6 + 10.5) * 28.346' | bc)
all: nbbbp.eps
$(SED) -e "s/BoundingBox:.*$$/BoundingBox: -42.52 1034.65 799.37 1629.92/" $< | $(GS) -o nbbbp1.pdf -
$(SED) -e "s/BoundingBox:.*$$/BoundingBox: -42.52 481.89 799.37 1077.17/" $< | $(GS) -o nbbbp2.pdf -
$(SED) -e "s/BoundingBox:.*$$/BoundingBox: -42.52 -70.87 799.37 524.41/" $< | $(GS) -o nbbbp3.pdf -
$(SED) -e "s/BoundingBox:.*$$/BoundingBox: -42.52 -70.87 799.37 1119.67/" $< | $(GS) -o nbbbpX.pdf -
$(SED) -e "s/BoundingBox:.*$$/BoundingBox: -42.52 -70.87 $(WWW) $(HHH)/" $< | $(GS) -o nbbbp.pdf -
$(SED) -e "s/BoundingBox:.*$$/BoundingBox: $(X0) -70.87 $(X1) 524.41/" $< | $(GS) -o nbbbp4.pdf -
$(SED) -e "s/BoundingBox:.*$$/BoundingBox: $(X0) -70.87 $(X1) 1119.67/" $< | $(GS) -o nbbbpY.pdf -
$(SED) -e "s/BoundingBox:.*$$/BoundingBox: $(X0) 481.89 $(X1) 1077.17/" $< | $(GS) -o nbbbp5.pdf -
$(SED) -e "s/BoundingBox:.*$$/BoundingBox: $(X0) 1034.65 $(X1) 1629.92/" $< | $(GS) -o nbbbp6.pdf -
$(SED) -e "s/BoundingBox:.*$$/BoundingBox: $(X2) -70.87 $(X3) 771.02/" $< | $(GS) -o nbbbp7.pdf -
pdfunite nbbbp[1-7].pdf nbbbpA4.pdf
pdfunite nbbbp[X-Y].pdf nbbbpA3.pdf
gs -dSAFER -dBATCH -dQUIET -sDEVICE=txtwrite -o - $< | colrm 20 | tee nbbbp.txt
zip nbbbp.zip nbbbp.pdf nbbbpA4.pdf nbbbpA3.pdf nbbbp.txt
clean:
rm -f nbbbp*.pdf nbbbp.txt nbbbp.zip
%!PS-Adobe-3.0 EPSF-3.0
%%Title: nbbbp.eps New Bunka Basic Bodice Pattern
%%BoundingBox: -40 -40 1630 1400
%%%%
%%% Adjustable parameters begin
/BUST 83.0 def
/WAIST 64.0 def
/CBL 38.0 def
/FrontShoulderAngle 22 def
/BackShoulderAngle 18 def
/AuxiliaryLineWidth 0.03 def
/FinishLineWidth 0.15 def
/PrintParameters true def
%%% Adjustable parameters end
%%% tools begin
/str20 20 string def
/fontsize 1.0 def
/rightshow { % stk: string
dup stringwidth pop %get length of string
fontsize 3 mul exch sub %calc. white space
0 rmoveto %Move over that much
show %show string
} def
/showsizelist {
/Helvetica findfont fontsize scalefont setfont
2 index 2 index moveto show
1 index 1 index fontsize -1 mul add moveto (B: ) rightshow BUST str20 cvs show ( cm) show
1 index 1 index fontsize -2 mul add moveto (W: ) rightshow WAIST str20 cvs show ( cm) show
1 index 1 index fontsize -3 mul add moveto (CBL: ) rightshow CBL str20 cvs show ( cm) show
pop pop
} def % Usage: x y (BackOrFront) showsizelist
/connect {newpath moveto count 2 idiv {lineto} repeat stroke} def
/totallength {0.0
count 1 sub 2 idiv 1 sub
{3 1 roll 3 index sub dup mul exch 4 index sub dup mul add sqrt add}
repeat 3 1 roll pop pop} def
/curvemaker {
exch 3 index sub exch 2 index sub % prepare x_start-x_goal y_start-y_goal
count 4 sub 2 idiv
{count -2 roll
exch 3 index mul exch 2 index mul
exch 5 index add exch 4 index add
6 2 roll} repeat
pop pop pop pop
} def % Usage: 0.0 0.0 0.5 0.1 0.7 0.3 0.8 0.5 0.9 0.9 1.0 1.0 x_start y_start x_goal y_goal curvemaker
/drawdart {
newpath
2 index 1 index 2 div sub
0.0 moveto
2 index 2 index
lineto
-0.4 0.0 rmoveto
0.80 0.0 rlineto
-0.4 0.0 rmoveto
1 index dup neg 0.0 exch rlineto
0.0 exch rmoveto
2 div 3 -1 roll
add 0.0 lineto
pop
stroke
} def % Usage: x y width drawdart
%%% tools end
%%%% length
/L2 BUST 2 div 6.0 add def
/L3 BUST 12 div 13.7 add def
/L5 BUST 8 div 7.4 add def
/L9 BUST 5 div 8.3 add def
/L11 BUST 8 div 6.2 add def
/L13 BUST 32 div def
/L14 CBL L3 sub def
/L15 BUST 32 div 7.0 mul 7.6 sub def
/L16 BUST 24 div 2.35 add def
/L17 BUST 24 div 3.4 add def
/L18 L17 0.5 add def
/L19 BUST 12 div 2.8 add FrontShoulderAngle cos div 1.8 add def
/L21 BUST 12 div 3.2 sub def
/L24 L17 0.2 add def
/L25 BUST 32 div 0.8 sub def
/LWS BUST 64 div 15 mul 3.6 add def
/BSL L19 L25 add def % Back Shoulder Line
/BS1 L5 2 div 1.0 add L24 sub
BackShoulderAngle cos div
1.5 add def % Back Shoulder Line 1
/BS2 BS1 L25 add def % Back Shoulder Line 2
/BDL L16 dup mul
BUST 3 mul 32 div 2.4 add dup mul add sqrt def % Bust Dart length
%%% angle
/gamma {L16 BUST 3 mul 32 div 2.4 add atan} def
/phi {gamma BUST 4 div add 2.5 sub} def
%%% vertex coordinates
/Armpit {LWS L14} def
/WaistSide {LWS 0.0} def
/Origin {0.0 0.0} def
/pointA {0.0 CBL} def % or Back Neck Point (BNP)
/pointB {L2 L14 L9 add} def
/pointC {L5 L14} def
/pointD {L5 CBL 8 sub} def
/pointE {L5 2 div 1.0 add CBL 8.0 sub} def
/pointF {L5 L15 add L14} def
/pointG {L5 L15 add
L14 L16 add} def
/BP {L2 L11 2 div sub 0.7 sub
L14} def
/pointH {BP exch BDL phi cos mul sub exch BDL phi sin mul add} def
/pointI {L2 L11 sub L14} def
/pointJ {L2 L11 sub L14 L9 add} def
/pointK {L5 L14 L16 add} def
/pointM {0.0 CBL 8 sub} def
/FNP {L2
L14 L9 add L18 sub} def % front Neck Point
/fSNP {L2 L17 sub
L14 L9 add} def % front Side Neck Point
/fSP {L2 L11 sub 1.8 FrontShoulderAngle cos mul sub
L14 L9 add L19 FrontShoulderAngle sin mul sub} def % front Shoulder Point
/bSNP {L24
L24 3 div CBL add } def % back Side Neck Point
/bSP {bSNP
exch BSL BackShoulderAngle cos mul add
exch BSL BackShoulderAngle sin mul sub } def % Back Shoulder Line End
/BSLM {bSNP
exch BS1 BackShoulderAngle cos mul add
exch BS1 BackShoulderAngle sin mul sub } def % Back Shoulder Line Middle
/BSLN {bSNP
exch BS2 BackShoulderAngle cos mul add
exch BS2 BackShoulderAngle sin mul sub } def % Back Shoulder Line Next
%%% Curve Sources
/BNCsource { % Back Neck Curve source
0.00 0.0000
0.20 0.0000
0.30 0.0200
0.40 0.0467
0.50 0.1227
0.60 0.2120
0.70 0.3467
0.80 0.4893
0.85 0.5947
0.90 0.7040
0.95 0.8360
1.00 1.0000
} def
/FNCsource { % Front Neck Curve source
0.00 0.0000
0.10 0.0050
0.20 0.0225
0.30 0.0383
0.40 0.0790
0.50 0.1198
0.60 0.1793
0.70 0.2602
0.80 0.3769
0.85 0.4553
0.90 0.5289
0.95 0.6638
1.00 1.0000
} def
/BAPCsource { % Back ArmPit Curve source
0.00 0.0000
0.05 0.0060
0.10 0.0137
0.20 0.0369
0.30 0.0702
0.40 0.1148
0.50 0.1755
0.60 0.2451
0.70 0.3373
0.75 0.3867
0.80 0.4462
0.85 0.5057
0.90 0.5889
0.95 0.7109
0.99 0.8500
1.00 1.0000
} def
/FAPCsource { % Back ArmPit Curve source
0.00 0.0000
0.10 0.0028
0.20 0.0167
0.30 0.0389
0.40 0.0723
0.50 0.1196
0.60 0.1848
0.70 0.2700
0.80 0.3728
0.85 0.4380
0.90 0.5398
0.95 0.6611
0.987 0.8000
0.994 0.9000
1.00 1.0000
} def
/bSPCsource { % Back Shoulder Point arm hole Curve source
0.0000 0.00
0.0212 0.10
0.0577 0.20
0.1250 0.30
0.2077 0.40
0.3135 0.50
0.4269 0.59
0.5673 0.69
0.7115 0.80
0.8558 0.90
1.0000 1.00
} def
/fSPCsource { % Front Shoulder Point arm hole Curve source
0.0000 0.00
-0.1267 0.10
-0.1946 0.20
-0.1674 0.30
-0.0814 0.40
0.0317 0.50
0.1584 0.60
0.3348 0.70
0.5200 0.80
0.7330 0.90
1.0000 1.00
} def
%%% Lines
/BustLineAndFront {0.0 L14 L2 L14 pointB pointJ pointI} def
/BackAUX {pointC pointD 0.0 CBL 8.0 sub} def
/FGK {pointF pointG pointK} def
/BNC { BNCsource pointA bSNP curvemaker} def
/FNC { FNCsource FNP fSNP curvemaker} def
/BAPC {BAPCsource Armpit pointK 0.8 add curvemaker} def
/FAPC {FAPCsource Armpit pointG curvemaker} def
/bSPC {bSPCsource pointK 0.8 add bSP curvemaker} def
/fSPC {fSPCsource pointH fSP curvemaker} def
1 setlinecap
1 setlinejoin
%%% Use cm unit
28.34645669 28.34645669 scale
2 CBL 10 sub (Back) showsizelist
L2 8 sub CBL 10 sub (Front) showsizelist
%%% Auxiliary Lines
AuxiliaryLineWidth setlinewidth
%%% Draw Line
BustLineAndFront connect
BackAUX connect
FGK connect
%%% Waist Darts
/Dtotal L2 WAIST 2 div sub 3.0 sub def
/Df Dtotal 0.07 mul def
/De Dtotal 0.18 mul def
/Dd Dtotal 0.35 mul def
/Dc Dtotal 0.11 mul def
/Db Dtotal 0.15 mul def
/Da Dtotal 0.14 mul def
pointM Df 0.0 connect
pointE pop 0.5 sub L14 2.0 add De drawdart
pointK exch 1.0 sub exch Dd drawdart
Armpit Dc drawdart
pointG
exch 1.5 add exch
1.5 gamma cos div gamma sin mul sub
Db drawdart
BP 4.5 sub Dtotal 6 div add Da drawdart
FinishLineWidth setlinewidth
%%% CB
newpath
Origin moveto
pointA lineto
stroke
%%% Side Line
newpath
Armpit moveto
WaistSide lineto
stroke
%%% CF
newpath
L2 0.0 moveto
FNP lineto
stroke
%%% back Waist Line
newpath
0.0 0.0 moveto
WaistSide lineto
stroke
%%% front Waist Line
newpath
WaistSide moveto
L2 0.0 lineto
stroke
%%% front Shoulder Line
newpath
fSNP moveto
fSP lineto
stroke
%%% front Dart
newpath
pointG moveto
BP lineto
pointH lineto
stroke
%%% back Shoulder Line
newpath
bSNP moveto
BSLM lineto
pointE lineto
BSLN lineto
bSP lineto
stroke
%%% back neck line
BNC connect
% 0.0 CBL L24 3 div 5 mul add
% L24 3 div 5 mul
% 270 270 3 4 atan add arc
% stroke
FNC connect
BAPC connect
FAPC connect
bSPC connect
fSPC connect
showpage
PrintParameters {
(BUST = ) print BUST ==
(WAIST = ) print WAIST ==
(CBL = ) print CBL ==
(L2 = ) print L2 ==
(L3 = ) print L3 ==
(L5 = ) print L5 ==
(L9 = ) print L9 ==
(L11 = ) print L11 ==
(L13 = ) print L13 ==
(L14 = ) print L14 ==
(L15 = ) print L15 ==
(L16 = ) print L16 ==
(L17 = ) print L17 ==
(L18 = ) print L18 ==
(L19 = ) print L19 ==
(L21 = ) print L21 ==
(L24 = ) print L24 ==
(L25 = ) print L25 ==
(BSL = ) print BSL == % Back Shoulder Line
(BDL = ) print BDL == % Bust Dart length
(phi = ) print phi ==
} if
%%%local variables:
%%% compile-command: "epstopdf nbbbp.eps && /usr/bin/osascript -e 'tell application \"Preview.app\" to activate'"
%%%End:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment