我是c#和Api的初学者,所以对我来说将有用的解决方案转换为我的代码有些困难。请帮忙理解一下怎么做?达到目标需要找捷径。有一些通过连接器相互连接的元素。有了这个在手,我可以找到所有可能的方法(下面可能实现的代码),但不能为self.weights使用两个键。
Python代码来源
start = IN[0]
end = IN[1]
edges = IN[2]
graph = Graph()
for edge in edges:
graph.add_edge(edge[0],edge[1],1)
class Graph():
def __init__(self):
"""
self.edges is a dict of all possible next nodes
e.g. {'X': ['A', 'B', 'C', 'E'], ...}
self.weights has all the weights between two nodes,
with the two nodes as a tuple as the key
e.g. {('X', 'A'): 7, ('X', 'B'): 2, ...}
"""
self.edges = defaultdict(list)
self.weights = {}
def add_edge(self, from_node, to_node, weight):
# Note: assumes edges are bi-directional
self.edges[from_node].append(to_node)
self.edges[to_node].append(from_node)
self.weights[(from_node, to_node)] = weight
self.weights[(to_node, from_node)] = weight
如何找到连接器并使所有可能的下一个节点的字典
foreach (Connector con in cset)
{
if (con.IsConnected)
{
string key = con.Owner.Id.ToString();
if (conn_dic.ContainsKey(key))
{
List<Connector> conns = conn_dic[key];
conns.Add(con);
conn_dic[key] = conns;
}
else
{
conn_dic.Add(key, new List<Connector>() { con });
}
}
}
Revit API完全是基于。net的。所有。net源代码都转换为中间语言IL (Wikipedia)。您可以反编译中间语言以重新创建原始源代码。这使您能够轻松有效地将源代码从一种。net语言转换为另一种语言,例如从Python转换为c#或VB.NET。这种可能性被许多。net反编译器使用。