例:
FFS;
SetElement["P","MARK"];
SetElement["L1","DRIFT",{"L"->1}];
SetElement["B1","BEND",{"L"->1,"ANGLE"->0.1,"E1"->0,"E2"->0,"ROTATE"->Pi/4}];
SetElement["B2","BEND",{"L"->1,"ANGLE"->.1,"E1"->.5,"E2"->.5,"ROTATE"->-Pi/4}];
SetElement["Q1","QUAD",{"L"->.5,"ROTATE"->Pi/4}];
USE BeamLine[P,L1,B1,L1,Q1,L1,B2,L1];
(* ここまではビームラインの定義 *)
(* まずBeam Line上のそれぞれの電磁石(Q,Bのみ)に対してMagnetTypeを定義します*)
MagnetType["B1"]="OldWiggler";
MagnetType["B2"]="TestBend";
MagnetType["Q1"]="OldBTQuad";
(*次にMagnetTypeで指し示されたものに対してMagnetSpecを定義します。*)
MagnetSpec["OldWiggler"]={Width->.63,Height->.406,PoleWidth->.13,Gap->.04,
CoilGap->.05,CoilWidth->.15,CoilHeight->.083,Type->Htype,CurvedPole->False,
CoilExtension->.2,FlatCoil->True,EndPlate->0,PhysicalLength->.8,DrawCoils->True};
MagnetSpec["TestBend"]={Width->.63,Height->.406,PoleWidth->.13,Gap->.04,
CoilGap->.05,CoilWidth->.15,CoilHeight->.083,Type->Htype,CurvedPole->False,
CoilExtension->.2,FlatCoil->True,EndPlate->0,PhysicalLength->.8,DrawCoils->True};
(* 上はBendの場合。右辺のパラメータの意味は名前から推量される通りです。
ちなみにDrawCoils->Trueとするとコイルの絵も描いてくれますが、VectorWorks@Rがアホなのでちゃんとは描きません。
あしからず。EndPlateはエンドプレートの厚みです。*)
MagnetSpec["OldBTQuad"]={Width->.45,Height->.45,CrossSection->{Circle[.45/2]}};
(* 上はQuadの場合。右辺のパラメータは断面形状を指定します。
CrossSection->{...}を指定するとWidth, Heightにかかわらず、...の中のGraphics Primitive(Line, Circle 等)
で指定されるgraphicsを断面形状として絵を描いてくれます*)
Get["/users/kikuchim/KEKB/BT/drawmagvw3d.sad"]; (* SAD Scriptの読み込み*)
DrawMagnets3D["a"]; (* ファイル名 "a"にVectorScriptを書き出します*)
(* ちなみにMagnetSpec, MagnetTypeを定義しなくてもデフォルトのパラメータを使って適当に絵を描きます。
バグ情報はご遠慮なくお寄せ下さい。*)
尚ここで用いているdrawmagvw3d.sadは以下の様なものです。ファイルとして添付してあります。