summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pst-stru
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2007-11-17 21:11:45 +0000
committerNorbert Preining <preining@logic.at>2007-11-17 21:11:45 +0000
commite1702efb3b4f7e10d45546fd43cb0a8b9bf1d289 (patch)
treecd8733483396ef100c80d630df48e98461e7f6d8 /Master/texmf-dist/tex/generic/pst-stru
parente409d1dee3be50818e789e45ec949a95770aa1b7 (diff)
new package pst-stru (->pstricks)
git-svn-id: svn://tug.org/texlive/trunk@5489 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pst-stru')
-rw-r--r--Master/texmf-dist/tex/generic/pst-stru/pst-stru.tex316
1 files changed, 316 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/pst-stru/pst-stru.tex b/Master/texmf-dist/tex/generic/pst-stru/pst-stru.tex
new file mode 100644
index 00000000000..1500a80ed77
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/pst-stru/pst-stru.tex
@@ -0,0 +1,316 @@
+%%
+%% This is file `pst-stru.tex',
+%%
+%% IMPORTANT NOTICE:
+%%
+%% Package `pst-stru.tex'
+%%
+%% Authors : Giuseppe Matarazza <joematara@hotmail.com>
+%% Manuel LUQUE <Mluque5130@aol.com>
+%% Herbert Voss <voss@pstricks.de> (pst-xkey)
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN archives
+%% in directory macros/latex/base/lppl.txt.
+%%
+%% DESCRIPTION:
+%% `pst-stru' is a PSTricks package for civil engineers
+%%
+\csname PSTCircLoaded\endcsname
+\let\PSTCircLoaded\endinput
+% Require PSTricks and pst-node packages
+\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
+\ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi
+\ifx\PSTnodesLoaded\endinput\else\input pst-plot.tex\fi
+\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey\fi
+%
+\def\fileversion{0.12}%
+\def\filedate{2006/10/26}%
+\message{`PST-Stru v\fileversion, \filedate\space (GM, ML)}%
+%
+\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
+\pst@addfams{pst-stru}
+%
+\SpecialCoor
+\psset{dimen=middle}
+\newdimen\Start
+\newdimen\debut
+\newdimen\fin
+\newdimen\Pst@Pos
+\newcount\PAS
+%
+\define@boolkey[psset]{pst-stru}[Pst@]{node}[true]{}
+\define@key[psset]{pst-stru}{position}{\def\psk@circuit@Pos{#1}}
+\define@key[psset]{pst-stru}{OffsetLabel}{\def\psk@Label@Offset{#1}}
+\define@key[psset]{pst-stru}{OffsetDipole}{\def\psk@Dipole@Offset{#1}}
+\define@key[psset]{pst-stru}{AngleLabel}{\def\psk@Angle@Label{#1}}
+\psset{position=0.5,node=false,OffsetLabel=0.70,OffsetDipole=0,AngleLabel=0}
+%Commande permettant de placer un dipôle entre deux noeuds
+%
+\def\circput{\@ifnextchar[{\pst@circput}{\pst@circput[]}}
+\def\pst@circput[#1](#2)(#3)#4#5{{%
+\psset{#1}
+\Pst@Pos=\psk@circuit@Pos pt
+\multiply\Pst@Pos by 2
+\def\Position{\pst@number\Pst@Pos}
+\pst@getcoor{#2}\pst@tempa
+\pst@getcoor{#3}\pst@tempb
+\pnode(!%
+ /k \psk@circuit@Pos\space def
+ \pst@tempa /Y1 exch \pst@number\psyunit div def
+ /X1 exch \pst@number\psxunit div def
+ \pst@tempb /Y2 exch \pst@number\psyunit div def
+ /X2 exch \pst@number\psxunit div def
+ /XM X1 1 k sub mul X2 k mul add def
+ /YM Y1 1 k sub mul Y2 k mul add def
+ /deno X2 X1 sub def
+ /num Y2 Y1 sub def
+ /angle num deno Atan def
+ /XE1 XM 1 angle cos mul sub def
+ /YE1 YM 1 angle sin mul sub def
+ /XE2 XM 1 angle cos mul add def
+ /YE2 YM 1 angle sin mul add def
+ XM YM){M@}
+\pnode(! XE1 YE1){E@1}
+\pnode(! XE2 YE2){E@2}
+\pcline(E@1)(#2)
+\pcline(E@2)(#3)
+\ncline[linestyle=none]{#2}{#3}
+\ncput[npos=\Position]{\pnode{Temp}}
+\pcline[linestyle=none,offset=\psk@Dipole@Offset](#2)(Temp)
+\lput{:U}{#4}
+\pcline[linestyle=none,offset=\psk@Label@Offset](#2)(Temp)
+\lput{\psk@Angle@Label}{#5}
+ }}
+% Commande permettant de dessiner une flèche de longueur variable
+% entre deux noeuds
+\define@key[psset]{pst-stru}{length}{\edef\psk@circuit@Arrowlenght{#1}}
+\define@key[psset]{pst-stru}{start}{\edef\psk@circuit@start{#1}}
+\psset{length=1,start=0.5}
+%
+\def\psArrow{\@ifnextchar[{\pst@Arrow}{\pst@Arrow[]}}
+\def\pst@Arrow[#1](#2)(#3)#4{{%
+\psset{#1}
+\pst@getcoor{#2}\pst@tempa
+\pst@getcoor{#3}\pst@tempb
+\pnode(!%
+ /length \psk@circuit@Arrowlenght\space def
+ /K \psk@circuit@start\space def
+ \pst@tempa /Y1 exch \pst@number\psyunit div def
+ /X1 exch \pst@number\psxunit div def
+ \pst@tempb /Y2 exch \pst@number\psyunit div def
+ /X2 exch \pst@number\psxunit div def
+ /XM X1 1 K sub mul X2 K mul add def
+ /YM Y1 1 K sub mul Y2 K mul add def
+ \pst@tempa /Y1 exch \pst@number\psyunit div def
+ /X1 exch \pst@number\psxunit div def
+ \pst@tempb /Y2 exch \pst@number\psyunit div def
+ /X2 exch \pst@number\psxunit div def
+ /Angle Y2 Y1 sub X2 X1 sub Atan def
+ /XE1 XM length Angle cos mul add def
+ /YE1 YM length Angle sin mul add def
+ XE1 YE1){E@}%
+\pnode(! XM YM){M@@}
+\psset{arrows=->}
+\psline[#1](M@@)(E@)%
+\pcline[linestyle=none,offset=\psk@Label@Offset,arrows=-](M@@)(E@)
+\lput{\psk@Angle@Label}{#4}
+}}
+
+%
+\def\node(#1){%
+\pscircle*(#1){2\pslinewidth}
+}
+\def\arrow{%
+ \psline[arrowinset=0,arrowscale=1.0,linewidth=0.75\pslinewidth]{->}(-2,0)(0,0)%
+ }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Structural Engineering: MACROs
+% Updating:
+% 7-10-2003 1) \def\fixedend
+% 7-10-2003 2) macro \psArrowCivil
+% 8-10-2003 3) macro \psArrowCivil: revised on loads label position
+% 11-10-2003 4) \def\hinge, \def\roller, \def\guide, \interhinge,
+% \def\clockCouple, \def\noclockCouple
+%
+% 25-10-2003 5) macro \triload for Parameterized Structure ps_01
+% 2-11-2003 6) updating the above macro
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\fixedend{%
+ \psframe[fillstyle=vlines,linestyle=none,hatchwidth=0.5\pslinewidth](-0.5,0)(0.5,-0.2)
+ \psline[linewidth=1.5\pslinewidth](-0.5,0)(0.5,0)
+ }
+
+\def\hinge{%
+ \psframe[fillstyle=vlines,linestyle=none,hatchwidth=0.5\pslinewidth](-0.3,-0.45)(0.3,-0.3)
+ \psline[linewidth=1.5\pslinewidth](-0.3,-0.3)(0.3,-0.3)
+ \psline(0,0)(-0.3,-0.3)
+ \psline(0,0)(0.3,-0.3)
+ }
+
+\def\interhinge{%
+ \pscircle[fillstyle=solid](0,0){0.1}
+ }
+
+\def\guide{%
+ \psframe[fillstyle=vlines,linestyle=none,hatchwidth=0.5\pslinewidth](-0.3,-0.3)(0.3,-0.1)
+ \psline[linewidth=1.5\pslinewidth](-0.3,-0.1)(0.3,-0.1)
+ \psline[linewidth=1.5\pslinewidth](-0.3,0.1)(0.3,0.1)
+ \psframe[fillstyle=vlines,linestyle=none,hatchwidth=0.5\pslinewidth](-0.3,0.3)(0.3,0.1)
+ }
+
+\def\roller{%
+ \psframe[fillstyle=vlines,linestyle=none,hatchwidth=0.5\pslinewidth](-0.3,-0.7)(0.3,-0.5)
+ \psline[linewidth=1.5\pslinewidth](-0.3,-0.3)(0.3,-0.3)
+ \psline(0,0)(-0.3,-0.3)
+ \psline(0,0)(0.3,-0.3)
+ \psline(-0.3,-0.5)(0.3,-0.5)
+ \pscircle(-0.15,-0.4){0.1}
+ \pscircle(0.15,-0.4){0.1}
+ }
+
+\def\noclockCouple{%
+\psset{arrowsize=1.8mm}
+ \psarc{->}(0,0){0.5}{280}{60}
+ }
+
+\def\clockCouple{%
+\psset{arrowsize=1.8mm}
+ \psarc{<-}(0,0){0.5}{120}{260}
+ }
+
+%% Macro \psArrowCivil
+%% ===================
+\define@key[psset]{pst-stru}{RotArrows}{\edef\psk@circ@RotArrows{#1}}
+\psset{RotArrows=0}
+
+\def\psArrowCivil{\@ifnextchar[{\pst@ArrowCivil}{\pst@ArrowCivil[]}}
+
+\def\pst@ArrowCivil[#1](#2)(#3)#4{{%
+\psset{#1}
+\pst@getcoor{#2}\pst@tempa
+\pst@getcoor{#3}\pst@tempb
+\pnode(!%
+ /length \psk@circuit@Arrowlenght\space def
+ /K \psk@circuit@start\space def
+ \pst@tempa /Y1 exch \pst@number\psyunit div def
+ /X1 exch \pst@number\psxunit div def
+ \pst@tempb /Y2 exch \pst@number\psyunit div def
+ /X2 exch \pst@number\psxunit div def
+ /XM X1 1 K sub mul X2 K mul add def
+ /YM Y1 1 K sub mul Y2 K mul add def
+ \pst@tempa /Y1 exch \pst@number\psyunit div def
+ /X1 exch \pst@number\psxunit div def
+ \pst@tempb /Y2 exch \pst@number\psyunit div def
+ /X2 exch \pst@number\psxunit div def
+ /Angle Y2 Y1 sub X2 X1 sub Atan def
+ /RotArrows 180 90 \psk@circ@RotArrows\space add Angle add sub def
+ /XC XM length RotArrows cos mul sub def
+ /YC YM length RotArrows sin mul add def
+ XC YC){C@}%
+\pnode(! XM YM){M@@}
+\psset{arrows=->}
+\psline[#1](C@)(M@@)%
+\pcline[linestyle=none,offset=\psk@Label@Offset,arrows=-](C@)(M@@)
+%\lput{\psk@Angle@Label}{#4}
+\lput{:U}{#4}
+}}
+%%
+%% End: Macro \psArrowCivil %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Starting Macro \triload
+%% =======================
+%
+\define@key[psset]{pst-stru}{K}{\edef\psk@triload@K{#1}}
+\define@key[psset]{pst-stru}{L}{\edef\psk@triload@L{#1}}
+\define@key[psset]{pst-stru}{P}{\edef\psk@triload@P{#1}}
+\define@key[psset]{pst-stru}{scaleFactor}{\edef\psk@triload@F{#1}}
+\psset{K=3,L=6,P=6,scaleFactor=0.15}
+\def\triload{\@ifnextchar[{\pst@triload}{\pst@triload[]}}
+\def\pst@triload[#1]{{%
+\psset{#1}
+\pnode(0,0){A}
+\pnode(! /xB \psk@triload@L\space \psk@triload@K\space mul def xB 0){B}
+\pnode(! /xC \psk@triload@K\space 1 add \psk@triload@L\space mul def xC 0){C}
+%
+\pnode(! /xB1 \psk@triload@L\space \psk@triload@K\space mul def xB1 -1){B1}
+\pnode(! /xC1 \psk@triload@K\space 1 add \psk@triload@L\space mul def xC1 -1){C1}
+%
+\pnode(! /xB2 \psk@triload@L\space \psk@triload@K\space mul def xB2 -3){B2}
+\pnode(! /xC2 \psk@triload@K\space 1 add \psk@triload@L\space mul def xC2 -3){C2}
+%
+\pnode(! /xC3 \psk@triload@K\space 1 add \psk@triload@L\space mul 0.25 add def xC3 0.5){C3}
+%
+\rput{0}(C){\hinge}
+\rput{0}(B){\roller}
+\psline[linecolor=red,fillcolor=yellow,fillstyle=solid](0,0)(!xC 0)(! xC 1)(0,0)
+%
+%
+ \rput(1,-2){$k=\psk@triload@K\space \quad l=\psk@triload@L\space$}
+
+ \rput(C3){\Large p}
+
+ \rput(0,-0.4){\Large A}
+ \rput(B1){\Large B}
+ \rput(C1){\Large C}
+%
+\pcline[offset=0,linecolor=blue]{|-|}(0,-3)(B2)
+\lput*{:U}{\bf $k\cdot l$}
+\pcline[offset=0,linecolor=blue]{|-|}(B2)(C2)
+\lput*{:U}{\bf $l$}
+
+% --------- Triangular Distributed Load -------------------------
+\multido{\nStart=1.00+0.025}{-37}{%
+\psArrowCivil[RotArrows=0,length=\nStart,start=\nStart,%
+ linecolor=magenta](A)(C){}}
+% définir les fonctions ici
+\pnode(! /func1 {\psk@triload@K\space 1 add \psk@triload@P\space exch div
+ -6.0 div \psk@triload@L\space div x mul x mul x mul
+ \psk@triload@F\space mul neg} def
+ /func2 {\psk@triload@K\space 1 add \psk@triload@P\space exch div
+ -2.0 div \psk@triload@L\space div x mul x mul
+ \psk@triload@F\space mul} def
+ /func3 {\psk@triload@K\space 1 add \psk@triload@P\space exch div
+ -6.0 div \psk@triload@L\space div x mul x mul x mul
+ \psk@triload@K\space \psk@triload@L\space mul neg x add
+ \psk@triload@K\space 1 add mul
+ \psk@triload@K\space 1 add mul
+ \psk@triload@P\space mul 6.0 div \psk@triload@L\space mul add
+ \psk@triload@F\space mul neg} def
+ /func4 {\psk@triload@K\space 1 add \psk@triload@P\space exch div
+ -2.0 div \psk@triload@L\space div x mul x mul
+ \psk@triload@K\space 1 add
+ \psk@triload@K\space 1 add mul 6.0 div
+ \psk@triload@P\space mul \psk@triload@L\space mul add
+ \psk@triload@F\space mul} def
+ 0 0){Temp}
+
+%----------- Bending Moment in span AB ----------------------
+\pscustom[linecolor=blue,linewidth=1pt,fillstyle=hlines]{
+\psplot{0}{xB}{func1}
+\psline(B)(A)}
+%----------- Shear in span AB ----------------------
+\pscustom[linecolor=green,linewidth=1pt,fillstyle=crosshatch]{
+ \psplot{0}{xB}{func2}
+ \psline(B)(A)}
+%
+% ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+%
+% ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+%
+%----------- Bending Moment in span BC ----------------------
+\pscustom[linecolor=blue,linewidth=1pt,fillstyle=hlines]{
+\psplot{xB}{xC}{func3}
+\psline(C)(B)}
+%----------- Shear in span BC ----------------------
+ \pscustom[linecolor=green,linewidth=1pt,fillstyle=crosshatch]{
+ \psplot{xB}{xC}{func4}
+
+% Closing Shear diagram in bearing B (right side)
+ \psline(C)(B)(! xB /x xB def func4)}
+}}
+\catcode`\@=\PstAtCode\relax
+%%
+%% End: Macro \triload %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% END: pst-stru.tex