使用 pst-uml (或其他) 将 UML 类与东边的连接器连接起来

使用 pst-uml (或其他) 将 UML 类与东边的连接器连接起来

我想将东侧的 UML 类与 连接起来pst-uml。遗憾的是,文档是法语的,而且/usr/share/texmf-dist/tex/latex/pst-uml也没有帮助。

概念(直径)

概念

当前状态pst-umltexlive-pstricks 2011.22586-1

当前状态

来源

\documentclass[a4paper,12pt]{article}

\usepackage{fullpage}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{pst-uml}

\begin{document}

\begin{center}
\begin{pspicture}(10,3)\psgrid
    \rput[r](4,1){\rnode{lorem}{
        \umlClass{LoremText}{}
    }}

    \rput[l](6,2){\rnode{ipsum}{
        \umlClass{IpsumText}{}
    }}

    \rput[l](6,1){\rnode{dolor}{
        \umlClass{DolorText}{}
    }}

    \ncEVE[armA=1]{lorem}{ipsum}
    \ncputicon{umlHerit}

    \ncline{lorem}{dolor}
    \ncputicon{umlHerit}

    \ncEXN[armA=1]{ipsum}{dolor} % update me
    \nbput[npos=0]{1}
    \naput[npos=3]{0..*}
    \naput{do sth.}
    \ncputicon{umlAgreg}
\end{pspicture}
\end{center}

\end{document}

请忽略多重性(线上/线下),因为我没有在概念上对其进行调整。

答案1

修改ipsum节点dolor连接为

\ncEXN[armA=1,angleB=0]{ipsum}{dolor} % update me

在此处输入图片描述

ipsum和之间的节点连接dolor由 给出\ncangles,默认选项angleA=0angleB=-90。上述代码将后者的角度 ( angleB) 覆盖为0,使连接输入“从东侧”。

为了完整起见,这里是 MWE:

\documentclass{article}
\usepackage{pst-uml}% http://ctan.org/pkg/pst-uml
\begin{document}
\begin{center}
\begin{pspicture}(10,3)\psgrid
\rput[r](4,1){\rnode{lorem}{
    \umlClass{LoremText}{}
}}

\rput[l](6,2){\rnode{ipsum}{
    \umlClass{IpsumText}{}
}}

\rput[l](6,1){\rnode{dolor}{
    \umlClass{DolorText}{}
}}

\ncEVE[armA=1]{lorem}{ipsum}
\ncputicon{umlHerit}

\ncline{lorem}{dolor}
\ncputicon{umlHerit}

\ncEXN[armA=1,angleB=0]{ipsum}{dolor} % update me
\nbput[npos=0]{1}
\naput[npos=3]{0..*}
\naput{do sth.}
\ncputicon{umlAgreg}
\end{pspicture}
\end{center}
\end{document}

答案2

\documentclass{article}
\usepackage{pst-uml}
\def\UML[#1](#2)#3#4{\rput[#1](#2){\rnode{#3}{#4}}}
\begin{document}

\begin{pspicture}%[showgrid]
  (10,3)
    \UML[r](4,1){lorem}{\umlClass{LoremText}{}}
    \UML[l](6,2.5){ipsum}{\umlClass{IpsumText}{}}
    \UML[l](6,1){dolor}{\umlClass{DolorText}{}}
    \ncEVE[armA=1]{lorem}{ipsum}
    \ncputicon{umlHerit}
    \ncline{lorem}{dolor}
    \ncputicon{umlHerit}
    \ncEXN[armA=1,angleB=0]{ipsum}{dolor}
    \naput[npos=0.6]{1}
    \nbput[npos=3]{0..*}
    \naput{do sth.}
    \ncputicon{umlAgreg}
\end{pspicture}

\end{document}

在此处输入图片描述

答案3

感谢您的帮助。在了解angleAand的用法后,我做了一些研究angleB,现在我知道了诀窍:

为了得到期望的结果我只需要替换

\ncEXN[armA=1]{ipsum}{dolor} % update me

\ncEVW[armA=1]{admin}{customer}

因为:EVW意味着draw right (East) then vertical (Vertical) then left (West)。代码代表两个对象的相对绘制方向,而不是连接器的位置。

查看/usr/share/texmf-dist/tex/latex/pst-uml中的定义(例如)会更容易理解:

\newpsobject{ncEVW}{ncangles}{angleA=0,angleB=0}

相关内容