我们已经通过ad-din创建了连接器,连接器将在图中自动更新。但问题是,当我们尝试在图表链接表中找到连接器时,连接器将不会更新。那么我们怎么能parallel y创建连接器并将线条样式添加到连接器图链接。
使用以下API
创建连接器EA.Connector con = pPortsource.Connectors.AddNew("", "Association");
con.SupplierID = Porttarget.ElementID;
con.Update();
使用上面的API,无论图表中的图表链接是自动创建还是我们应该使用以下代码来创建图表链接
EA.DiagramLink link=Diagram.AddNew("","");
link.ConnectorID=con.ConnectorID;
Link.update();
答案 0 :(得分:0)
掌握了基本问题:设置默认线条样式。您可以使用Tools > Options > Links > Default Style > Routing
和/或Tools > Options > Links > Generalization link style Default = Tree
执行此操作。这就是EA提供的。
如果你想要别的东西,你或多或少会丢失,除非你在你的插件中付出了很多麻烦。为什么?考虑添加新连接器。这不仅会出现在您当前正在处理的图表中,还会出现在两个连接元素出现的所有图表中。在这里,我开始尝试并确认OP的问题:
如果您创建的新连接器没有可见的图表,EA将不在t_diagramlinks
中创建一个条目。然后,如果您修改线条样式,它将只创建一个条目。缺少的条目允许EA创建默认的连接器样式。现在,您可以做的是发布
Repository.Execute("INSERT INTO t_diagramlinks (diagramId, connectorId, style) VALUES (<diagramId>, <con.connectorID> 'Mode=2;')");
连接器创建后立即。这将在单个图中为连接器设置自动路由。您可以使用简单查询来查找两个连接元素也存在的所有图表,并相应地重复上述SQL。要使其完整,您还需要订阅EA_OnPostNewDiagramObject
,因为这也可能是连接器出现在图表上的原因。我还没有对此进行测试,EA是否会立即在t_diagramobject
中创建一个条目,以便您可以调整该条目以及是否需要重新加载图表以使更改可见。在任何情况下,都需要进行大量的调整,这可能会破坏已经存在问题的EA用户界面。
原始回答
为了创建新的连接器并显示它们,你会使用这个(抱歉为Perl)代码:
my $e = $rep->GetElementByGuid("{EB86E518-5BDC-477b-8CF8-2BEE0A102CF7}");
my $e1 = $rep->GetElementByGuid("{28636F81-2B1E-40af-A777-81ECEB067F31}");
my $con = $e1->Connectors->AddNew("", "Dependency");
$con->{SupplierId} = $e->ElementId;
$con->Update();
my $dia = $rep->GetCurrentDiagram();
$rep->ReloadDiagram ($dia->DiagramID);
这将根据需要创建一个新链接,EA将在重新加载图表后显示它。你不必为DiagramLinks弄乱。仅在您想要调整连接器时才需要。也就是说,隐藏它们或添加弯曲等。