polyop.getVertsByFlag <Poly poly> <int flag> mask:<int maskflag>ポリゴンの各頂点には、32 ビット フラグ変数が含まれます。
このメソッドは、このフラグ変数内の特定のビットが設定されている頂点の bitarray を返します。テストされるビットは、<flag> および <maskflag> の組み合わせに基づいて決定されます。
<maskflag> の既定値は 0 です。
内部的には、<maskflag> が 0 の場合、<maskflag> は <flag> 値に設定され、それ以外の場合、<flag>は <flag> と <maskflag> の bitwise-AND に設定されます。次に <maskflag> のビット 2 が設定されます。このビットが <mask> 内に設定されていない限り、返された bitarray に無効な頂点が含まれることはありません。フラグ変数と <maskflag> の bitwise-AND が、<flag> と <maskflag> の bitwise-AND と同一である場合は、返された bitarray の各ビットが設定されます。
頂点レベル フラグは次のとおりです。
bit 1: 頂点が選択されています
bit 2: 頂点が無効です
bit 3: 予約済みです
bit 4: 頂点面が現在のビューポートの「後方」を向いていることを示します
bit 5-24: 予約済みです
bit 25-32: 一般的な用途に使用可能
例
theObj = plane isSelected:true convertto theObj editable_poly nVerts = theObj.numverts bit30 = bit.set 0 30 true bit31 = bit.set 0 31 true bit32 = bit.set 0 32 true -- set a bit on first 3/4 or so verts ( flagsToSet = bit30 flagsToMask = 0 vertexSet = #{1..(3*nVerts/4)} theObj.setVertexFlags vertexSet flagsToSet flagMask:flagsToMask generateUndoRecord:true ok ) -- and another on middle block ( flagsToSet = bit31 flagsToMask = 0 vertexSet = #{(nVerts/3)..(nVerts-4)} theObj.setVertexFlags vertexSet flagsToSet flagMask:flagsToMask generateUndoRecord:true ok ) -- set a bit on last 2 verts ( flagsToSet = bit32 flagsToMask = 0 vertexSet = #{(nVerts-2)..nVerts} theObj.setVertexFlags vertexSet flagsToSet flagMask:flagsToMask generateUndoRecord:true ok ) ( -- get verts with bit30, 31, 32 set format "30: %\n" (polyOp.getVertsByFlag theObj bit30) format "31: %\n" (polyOp.getVertsByFlag theObj bit31) format "32: %\n" (polyOp.getVertsByFlag theObj bit32) -- get verts with bit30 set, but not bit31 format "30 and !31: %\n" (polyOp.getVertsByFlag theObj bit30 mask:(bit30+bit31)) -- get verts with bit31 not set, doesn't matter what the <flag> -- value is as long as it's not bit31 format "!31: %\n" (polyOp.getVertsByFlag theObj bit30 mask:(bit31)) -- get verts with bit30 and bit31 set format "30 and 31: %\n" (polyOp.getVertsByFlag theObj (bit30+bit31)) -- get verts with neither bit31 or bit32 set, doesn't matter what -- the <flag> value is as long as it's not bit31 or bit32 format "!(31 or 32): %\n" (polyOp.getVertsByFlag theObj bit30 mask:(bit31+bit32)) )
polyop.getVertFlags <Poly poly> <int vert>頂点のフラグ ビットを整数として返します。
polyop.setVertFlags <Poly poly> <vertlist> <int flag> \
mask:<int=0> undoable:<boolean=false>指定された頂点のフラグ ビットを <flag> のビットに設定します。
mask が指定された場合、mask: 値に設定されたビットは、指定された頂点のフラグ ビットの設定前に、ポリゴン内のすべての頂点でクリアされます。
undoable:true が指定された場合、この操作はやり直し可能です。<flag> のビット 1 またはビット 2 が設定された場合(選択されたフラグ ビットまたは無効なフラグ ビット)、この操作は常にやり直し可能です。
例
p=convertToPoly (plane()) p.selectedVerts = #{10..20} i=1 -- selected bit j=bit.set 0 30 true -- bit 30 set oldflags = for k = 1 to p.numverts collect polyop.getVertFlags p k theSet=#{5..15} polyop.setvertflags p theSet j mask:i for k = 1 to p.numverts do ( nf=polyop.getVertFlags p k format "% : % : %\n" k nf oldflags[k] oldflags[k]=nf ) j=bit.set 0 1 true -- bit 1 set polyop.setvertflags p theSet j for k = 1 to p.numverts do ( nf=polyop.getVertFlags p k format "% : % : %\n" k nf oldflags[k] )
polyop.getEdgesByFlag <Poly poly> <int flag> \
mask:<int maskflag>ポリゴンの各エッジには、32 ビット フラグ変数が含まれます。このメソッドは、このフラグ変数内の特定のビットが設定されているエッジの bitarray を返します。テストされるビットは、<flag> および <maskflag> の組み合わせに基づいて決定されます。
<maskflag> の既定値は 0 です。
内部的には、<maskflag> が 0 の場合、<maskflag> は <flag> 値に設定され、それ以外の場合、<flag>は <flag> と <maskflag> の bitwise-AND に設定されます。次に <maskflag> のビット 2 が設定されます。このビットが <mask> 内に設定されていない限り、返された bitarray に無効なエッジが含まれることはありません。フラグ変数と <maskflag> の bitwise-AND が、<flag> と <maskflag> の bitwise-AND と同一である場合は、返された bitarray の各ビットが設定されます。
エッジ レベル フラグは次のとおりです。
bit 1: エッジが選択されています
bit 2: エッジが無効です
bit 3: 予約済みです
bit 4: 頂点面が現在のビューポートの「後方」を向いていることを示す
bit 5-24: 予約済みです
bit 25-32:: 一般的な用途に使用可能
polyop.getEdgeFlags <Poly poly> <int edge>エッジのフラグ ビットを整数として返します。
polyop.setEdgeFlags <Poly poly> <edgelist> <int flag> \
mask:<int=0> undoable:<boolean=false>指定されたエッジのフラグ ビットを <flag> のビットに設定します。mask が指定された場合、mask: 値に設定されたビットは、指定されたエッジのフラグ ビットの設定前に、ポリゴン内のすべてのエッジでクリアされます。undoable:true が指定された場合、この操作はやり直し可能です。<flag> のビット 1 またはビット 2 が設定された場合(選択されたフラグ ビットまたは無効なフラグ ビット)、この操作は常にやり直し可能です。
polyop.getFacesByFlag <Poly poly> <int flag> mask:<int maskflag>ポリゴンの各面には、32 ビット フラグ変数が含まれます。このメソッドは、このフラグ変数内の特定のビットが設定されている面の bitarray を返します。テストされるビットは、<flag> および <maskflag> の組み合わせに基づいて決定されます。
<maskflag> の既定値は 0 です。
内部的には、<maskflag> が 0 の場合、<maskflag> は <flag> 値に設定され、それ以外の場合、<flag>は <flag> と <maskflag> の bitwise-AND に設定されます。次に <maskflag> のビット 2 が設定されます。このビットが <mask> 内に設定されていない限り、返された bitarray に無効な面が含まれることはありません。フラグ変数と <maskflag> の bitwise-AND が、<flag> と <maskflag> の bitwise-AND と同一である場合は、返された bitarray の各ビットが設定されます。
面レベル フラグは次のとおりです。
bit 1: 面が選択されています
bit 2: 面が無効です
bit 3: 予約済みです
bit 4: 頂点面が現在のビューポートの「後方」を向いていることを示します
bit 5-24: 予約済みです
bit 25-32: 一般的な用途に使用可能
polyop.getFaceFlags <Poly poly> <int face>面のフラグ ビットを整数として返します。
polyop.setFaceFlags <Poly poly> <facelist> <int flag> \
mask:<int=0> undoable:<boolean=false>指定された面のフラグ ビットを <flag> のビットに設定します。
mask: が指定された場合、mask: 値に設定されたビットは、指定された面のフラグ ビットの設定前に、ポリゴン内のすべての面でクリアされます。
undoable:true が指定された場合、この操作はやり直し可能です。
<flag> のビット 1 またはビット 2 が設定された場合(選択されたフラグ ビットまたは無効なフラグ ビット)、この操作は常にやり直し可能です。