D3 selektiver Zoom

Ich arbeite an einem erzwungenen Diagrammlayout mit einigen zusätzlichen Funktionen: auswählbaren Verknüpfungen / Knoten, QuickInfos, Fischaugeneffekt und - wichtig für meine Frage - Zoomen und Schwenken.

Nun funktioniert das Zoomen sehr gut so:

d3 ... .append('svg:g').call(d3.behavior.zoom().on("zoom", redraw))... 

Wo die Redraw-Funktion so aussieht ...

function redraw() {
  trans = d3.event.translate;
  scale = d3.event.scale;
  vis.attr("transform", "translate(" + trans + ")" + " scale(" + scale + ")");
}

Mit dieser Methode wird jedoch die gesamte SVG-Grafik gezoomt, einschließlich Schriftgrößen, Grafikkanten, Strichstärken der Linien, die die Knoten umgeben, usw.

Ist das irgendwie möglich?nicht bestimmte Elemente zoomen? Die einzige Lösung, die ich bisher gesehen habe, besteht darin, eine Zeile wie diese zu setzen (von hier übernommen)http://jsfiddle.net/56RDx/2/)

node.attr("font-size", (nodeFontSize / d3.event.scale) + "px");

Bei der Neuzeichnungsmethode wird das Zoomen bestimmter Elemente im laufenden Betrieb grundsätzlich umgekehrt. Mein Problem ist jedoch (abgesehen davon, dass es sich um einen hässlichen Hack handelt), dass meine Kantenbreiten beim Zeichnen von Diagrammen dynamisch generiert werden (entsprechend einiger Diagrammeigenschaften ...), sodass diese 'Invertierungs'-Methode nicht funktioniert ...

Antworten auf die Frage(2)

Ihre Antwort auf die Frage