Sichtbare Kanten sind verdeckte Linien, die in 3ds Max normalerweise nicht sichtbar sind. Das Problem tritt in der Regel bei Revit-Modellen auf, da für alle aus Revit exportierten Objekte eine Dreieckseinteilung vorgenommen wird. Das führt dazu, dass Kanten, die 3ds Max normalerweise ausblenden würde, sichtbar werden.
Eine sichtbare Kante können Sie beispielsweise dann erkennen, wenn in Revit eine Mauer vorhanden ist, die in 3ds Max nur mit vier Kanten dargestellt werden sollte, die die vier Seiten der Mauer bilden. Stattdessen zeigt 3ds Max das mittlere Dreieck an, das beide Scheitelpunkten der Ecken miteinander verbindet. Dieses mittlere Dreieck ist normalerweise ausgeblendet.
Mit diesem Skript blenden Sie nicht gewünschte Kanten aus importierten Modellen aus. Dabei handelt es sich normalerweise um Modelle aus den Versionen Revit 2010 und früher, die mit FBX in 3ds Max geladen wurden. Das Skript liest alle Kanten und ermittelt diejenigen, die ausgeblendet werden können, indem es auswertet, ob sie sich neben angrenzenden Kanten befinden. Wenn diese unerwünschten Kanten ausgeblendet werden, ist das Modell viel einfacher visuell zu erfassen.
So verwenden Sie dieses Skript
Sie können dieses Skript auch in 3ds Max speichern und die .ms-Datei per Drag & Drop im Ansichtsfenster ablegen, während die Objekte ausgewählt werden.
( -- do this in a local scope so I don't pollute the global scope. function setVisibilityEdges obj = ( local edgeSelSet = #() -- Go through all faces local numFaces = obj.numfaces for faceIndex = 1 to numFaces do ( -- And for every one of the 3 edges for edgeIndex = 1 to 3 do ( --collect the edge append edgeSelSet ( ((faceIndex-1)*3) + edgeIndex ) ) ) -- Select all visible edges meshop.autoedge obj edgeSelSet 5 type:#setclear ) --============================================== -- Start of the runtime script --============================================== local timestart = timestamp() -- turn off undo during this operation. with undo off ( local editMeshArray = #() for obj in Selection do ( if (classof obj == Editable_Mesh) do ( -- collect all the edit meshes first, because the -- user could have selected some helper objects too, which we -- don't want to process. append editMeshArray obj ) ) -- we don't need to hold the selection anymore, clear it out. clearselection() -- Array of object handles that have already had their edges hidden local allReadyProcessed = #() -- iterate through all selected edit meshes... for editMeshobj in editMeshArray do ( local found = (FindItem allReadyProcessed editMeshobj.handle) > 0 if (not found) then ( setVisibilityEdges editMeshobj append allReadyProcessed editMeshobj.handle -- Mark all the instances as processed too! InstanceMgr.GetInstances editMeshobj &repeatArray if (repeatArray.count > 0) then ( -- mark them as processed by adding their handle to the array for repeat in repeatArray do ( append allReadyProcessed repeat.handle ) ) ) ) ) redrawviews() local timeend = timestamp() format "Total time: % (seconds)\n" ((timeend - timestart)/1000.0))