보이는 가장자리는 일반적으로 3ds Max에 표시되지 않는 숨은선입니다. Revit에서 내보낸 모든 항목은 삼각 측량 처리되기 때문에 일반적으로 Revit 모델에서 문제가 발생합니다. 이로 인해 3ds Max에서 대체로 숨겨지는 가장자리가 표시됩니다.
예를 들어 Revit의 벽이 3ds Max에서만 벽의 4개 측면인 4개의 가장자리로 표시되어야 하는 경우 표시 가장자리를 인식할 수 있습니다. 대신 3ds Max에서는 두 모서리 정점을 연결하는 중간 삼각형을 표시합니다. 이 중간 삼각형은 대체로 숨겨집니다.
이 스크립트를 사용하여 가져온 모델(일반적으로 FBX를 사용하여 3ds Max에 로드된 Revit 2010 및 이전 버전 모델)에서 불필요한 가장자리를 숨깁니다. 다음 스크립트에서는 모든 가장자리를 읽고 인접한 가장자리 옆에 있는지 여부를 평가하여 숨길 수 있는 가장자리를 결정합니다. 이러한 불필요한 가장자리를 숨기면 모델을 보기가 훨씬 쉬워집니다.
이 스크립트를 사용하려면
3ds Max에서 이 스크립트를 저장한 다음 오브젝트를 선택한 상태로 뷰포트에서 .ms 파일을 드래그 앤 드롭할 수도 있습니다.
( -- 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))