Editable_Poly フラグによる取得メソッド

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