次のメソッドは、メッシュ エッジに対する高度なアクセスを提供します。
メソッド:
meshop.chamferEdges <Mesh mesh> <edgelist> <float amount>
指定されたエッジを指定された量だけ面取りを行います。
例
obj = Box() convertToMesh obj meshop.chamferEdges obj #{7,8,11,14,17} 5 update obj
![]()
meshop.extrudeEdges<Mesh mesh> <edgelist> <float height> dir:<{<point3 dir> | #independent | #common}=#independent> node:<node=unsupplied>
指定されたエッジに対応する新しいエッジを作成して、新しいエッジを <height>
で移動します。
エッジを移動する方向は、<dir>
によって決定されます。<dir>
が Point3 値の場合、エッジはその方向に移動します(<mesh>
がノードの場合、または <mesh>
が編集可能メッシュあるいはメッシュ値で、node:
が指定されている場合、方向は現在の座標系コンテキストにあります。<mesh>
が編集可能メッシュまたはメッシュ値で、node:
が指定されていない場合、方向はメッシュのローカル座標系にあります)。
dir:#independent
が指定されている場合、エッジを使用する面の法線に基づいてエッジが移動します。dir:#common
が指定されている場合、エッジを使用する面集団の法線に基づいてエッジが移動します。
例
obj = Box() --create a Box convertToMesh obj --collapse to EMesh meshop.extrudeEdges obj #{5,7,14,17} 10.0 --extrude edges update obj --update the mesh addmodifier obj (normalmodifier unify:true) --unify normals addmodifier obj (smooth auto:true) --auto-smooth convertToMesh obj --collapse to EMesh
![]()
![]()
meshop.collapseEdges <Mesh mesh> <edgelist>
指定されたエッジを集約します。
例
obj = Box() convertToMesh obj meshop.collapseEdges obj #{14,17} update obj
![]()
meshop.cloneEdges <Mesh mesh> <edgelist>
指定されたエッジのクローンを作成します。
meshop.deleteEdges <Mesh mesh> <edgelist> delIsoVerts:<boolean=true>
指定されたエッジを削除します。
delIsoVerts:
が true
の場合、分離した頂点が削除されます。
meshop.divideEdge <Mesh mesh> <int edgeIndex> <float edgef> visDiag1:<boolean=false> visDiag2:<boolean=false> fixNeighbors:<boolean=true> split:<boolean=false>
<edgef>
の距離(分数)で指定されたエッジをエッジの長さに沿って分割します。
visDiag1:
および visDiag2:
は、分割された 2 つのエッジをそれぞれ表示するかどうかを指定します。
fixNeighbors:
が true
の場合、継ぎ目が適用されるのを防ぐため、エッジの反対側の面(つまり「背面」)も分割されます。
split:
が true
の場合、メッシュの開口部を対角線に沿って分割し、2 等分されたエッジに対して別々の頂点が作成されます。
例
obj = Box() --create a Box convertToMesh obj --collapse to EMesh meshop.divideEdge obj 5 0.33 --divide bottom edge at 1/3 meshop.divideEdge obj 5 0.5 --divide remaining 2/3 at half -> 2 * 1/3 update obj --update the mesh obj.vertexTicks = True --show the vertices obj.allEdges=True --show all edges
![]()
meshop.divideEdges <Mesh mesh> <edgelist>
指定されたエッジをすべて半分に分割して、新しいポイントを作成し、面をサブディバイドします。
例
obj = Box() --create a Box convertToMesh obj --collapse to EMesh meshop.divideEdges obj #{5,7,14,17} --divide edges update obj --update the mesh obj.vertexTicks = True --show the vertices obj.allEdges=True --show all edges
![]()
meshop.edgeTessellate <Mesh mesh> <facelist> <float tension>
指定されたエッジを面分割します。このアルゴリズムは、Faces および Edge SO 要素の操作中に Tessellate モディファイヤで使用されます。
<tension>
は、エッジ面分割のテンションを指定します。テンションの値は 0~.5 で、Tessellate、Edit Mesh、または Editable Mesh UI を 400 で除算した値に一致する必要があります。
例
obj = Box() --create a Box convertToMesh obj --collapse to EMesh meshop.EdgeTessellate obj #{5,6} 0.0 --tessellate faces based on edges update obj --update the mesh
![]()
meshop.turnEdge <Mesh mesh> <int edgeIndex>
指定されたエッジが回転します。両側に面を持つエッジにのみ適用されます。これらの 2 つの面は、四角形と解釈されます。つまり、このエッジは、各面上でこのエッジと反対側にあった頂点との間で対角線を形成し、対角線が結ばれるように再マップされます。
meshop.getVertsUsingEdge <Mesh mesh> <edgelist>
指定されたエッジで使用されるすべての頂点に設定されているビットで、size=(mesh
内の #vertices)の BitArray を返します。
スクリプト:
macroScript Edge2VertSel category:"MXS Help" ( --make sure a single EMesh object is selected on isEnabled return selection.count == 1 and classof selection[1] == Editable_Mesh on execute do ( obj = selection[1]--get selected object edgeSel = getEdgeSelection obj --get selected Edges --get Verts of selected Edges: vertsSel = meshop.getVertsUsingEdge obj edgeSel setVertSelection obj vertsSel --select the Verts max modify mode --switch to Modify panel subObjectLevel =1--set Vertex SO level ) --end on ) --end macro
![]()
meshop.getFacesUsingEdge <Mesh mesh> <edgelist>
指定されたエッジを使用するすべての面に設定されているビットで、size=(mesh
内の #faces)の BitArray を返します。
スクリプト:
macroScript Edge2FaceSel category:"MXS Help" ( --make sure a single EMesh object is selected on isEnabled return selection.count == 1 and classof selection[1] == Editable_Mesh on execute do ( obj = selection[1] --get selected object edgeSel = getEdgeSelection obj --get selected Edges --get Faces of selected Edges: faceSel = meshop.getFacesUsingEdge obj edgeSel setFaceSelection obj faceSel --select the Faces maxmodify mode --switch to Modify panel subObjectLevel =3 --set Face SO level ) --end on ) --end macro
![]()
meshop.getPolysUsingEdge <Mesh mesh> <edgelist> ignoreVisEdges:<boolean=false> threshhold:<float=45.>
指定されたエッジを含む「ポリゴン」にあるすべての面に設定されているビットで、mesh
内の面の数と等しいサイズの BitArray を返します。
ポリゴンは、非表示エッジを共有するすべての面として定義します。エッジ角度はしきい値角度未満です。既定値のしきい値角度は 45 度です。
ignoreVisEdges:
が true
に設定されている場合、エッジの可視性は無視されますが、しきい値の関連性は保持されます。
スクリプト:
macroScript Edge2PolySel category:"MXS Help" ( --make sure a single EMesh object is selected on isEnabled return selection.count == 1 and classof selection[1] == Editable_Mesh on execute do ( obj = selection[1] --get selected object edgeSel = getEdgeSelection obj --get selected Edges --get Polygons of selected Edges: faceSel = meshop.getPolysUsingEdge obj edgeSel setFaceSelection obj faceSel --select the Faces max modify mode --switch to Modify panel subObjectLevel =4 --set Polygon SO level ) --end on ) --end macro
![]()
meshop.getEdgesUsingVert <Mesh mesh> <vertlist>
指定された頂点を使用するすべてのエッジに設定されているビットで、size=(メッシュ内の #edges)の BitArray を返します。
スクリプト:
macroScript Vert2EdgeSel category:"MXS Help" ( --make sure a single EMesh object is selected on isEnabled return selection.count == 1 and classof selection[1] == Editable_Mesh on execute do ( obj = selection[1] --get selected object vertsSel = getVertSelection obj --get selected Verts --get Edges of selected Verts: edgeSel = meshop.getEdgesUsingVert obj vertsSel setEdgeSelection obj edgeSel --select the edges max modify mode --switch to Modify panel subObjectLevel =2 --set Edge SO level ) ) --end macro
![]()
meshop.getEdgesReverseEdge <Mesh mesh> <edgelist>
指定されたエッジと同じ頂点を使用するすべての追加エッジに設定されているビットで、size=(メッシュ内の #edges)の BitArray を返します。これらは隣接する面上のエッジです。
例
Plane length:100 width:100 isSelected:on convertTo $ TriMeshGeometry max modify mode subobjectLevel = 1 select $.verts[13] --get edges that use vertex 13 edges = meshop.getEdgesUsingVert $ (getVertSelection $) --select the vertices used by those edges $.selectedVerts = meshop.getVertsUsingEdge $ edges update $ --not what we wanted, really want all vertices -- "surrounding" vertex 13 faces = meshop.getPolysUsingVert $ 13 $.selectedVerts = meshop.getVertsUsingFace $ faces update $ --or ... faces = meshop.getFacesUsingVert $ #(13) edges = meshop.getEdgesUsingFace $ faces --turn off all visible edges for e in edges do edges[e]=not (getEdgeVis $ (1+(e-1)/3)(1+mod (e-1) 3)) --get the edges on the adjacent faces that are the "reverse" of these edges --"OR" that bitarray with the initial edges bitarray edges = (meshop.getEdgesReverseEdge $ edges) + edges --get the faces that use the edges, and "OR" that bitarray with the initial --face bitarray faces = (meshop.getFacesUsingEdge $ edges) + faces $.selectedVerts = meshop.getVertsUsingFace $ faces update $
meshop.getOpenEdges <Mesh mesh>
単一面で使用されるすべてのエッジに設定されているビットで、size=(mesh
内の #edges)の BitArray を返します。
スクリプト:
macroScript SelOpenEdges category:"MXS Help" ( --make sure a single EMesh object is selected on isEnabled return selection.count == 1 and classof selection[1] == Editable_Mesh on execute do ( obj = selection[1] --get selected object max modify mode --switch to Modify panel subObjectLevel =2 --set Edge SO level openEdges = meshop.getOpenEdges obj --get open edges setEdgeSelection obj openEdges --select the open edges ) ) --end macro
meshop.autoEdge <Mesh mesh> <edgelist> <float threshold> type:<{#SetClear| #Set| #Clear}=#SetClear>
しきい値角度に基づいて、指定されたエッジの可視性を設定またはクリアします。
エッジに autoEdged を実行する場合、そのエッジ、および同一頂点を共有する面上の「逆の」エッジの両方をエッジ仕様で指定する必要があります。
メッシュに関連するメソッドについては、以下を参照してください。