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 が設定された場合(選択されたフラグ ビットまたは無効なフラグ ビット)、この操作は常にやり直し可能です。