home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703A.ISO
/
VPR_DATA
/
DOGA
/
SOURCES
/
POLYEDIT.LZH
/
MODEL.DOC
< prev
next >
Wrap
Text File
|
1996-08-01
|
57KB
|
1,252 lines
****************************************************************************
*
* マクロ言語のモデラにおける拡張
*
* Copyright T.Kobayashi 1994.8.7
*
****************************************************************************
1.はじめに
モデラmodel.(x|exe)において拡張されたマクロ言語'ml'の仕様について示す。拡
張はシステム定数と拡張クラス、組み込み関数についてなされている。
'ml'言語自体の仕様は'ml.doc'を参照のこと。
2.システム定数
拡張されたシステム定数を以下に示す。
POLY_SIMPLE ポリゴン属性:単純ポリゴン
POLY_SHADE ポリゴン属性:法線ベクトル付きポリゴン
POLY_UV ポリゴン属性:マッピング座標付きポリゴン
POLY_UVSHADE ポリゴン属性:法線ベクトルとマッピング座標付きポリゴン
SELECT_UPDATE ポリゴンセレクトの属性:UPDATE
SELECT_AND ポリゴンセレクトの属性:AND
SELECT_OR ポリゴンセレクトの属性:OR
SELECT_XOR ポリゴンセレクトの属性:XOR
SELECT_ALL ポリゴンセレクトの属性:すべてが含まれる
SELECT_SUB ポリゴンセレクトの属性:一部が含まれる
WIN_XY 表示タイプ:XY平面表示
WIN_YZ 表示タイプ:YZ平面表示
WIN_ZX 表示タイプ:ZX平面表示
WIN_PERS 表示タイプ:透視図表示
WIN_ALL 表示タイプ:三面図表示
VERTEX_MIN 3次元座標の最小値
VERTEX_MAX 3次元座標の最小値
OVERWRITE 再描画する時にオーバライトする
CLEAR 一度クリアしてから再描画する
LEFT マウスの左ボタン
RIGHT マウスの右ボタン
BUTTON_WIDTH ユーザーボタンの幅
BUTTON_HEIGHT ユーザーボタンの高さ
キーコード定数
KEY_TAB, KEY_ESC, KEY_BS, KEY_RET
KEY_F1~KEY_F10
KEY_ROLLUP, KEY_ROLLDOWN, KEY_INS, KEY_DEL
KEY_UP, KEY_LEFT, KEY_RIGHT, KEY_DOWN
KEY_CLR, KEY_HELP, KEY_HOME, KEY_UNDO
KEY_NUMPAD_0~KEY_NUMPAD_9
KEY_NUMPAD_SLASH, KEY_NUMPAD_ASTERISK
KEY_NUMPAD_MINUS, KEY_NUMPAD_PLUS
KEY_NUMPAD_EQUAL, KEY_NUMPAD_ENTER
KEY_NUMPAD_COMMA, KEY_NUMPAD_PERIOD
MENU_NOCHECK メニューにチェックマークを付けない
MENU_CHECK メニューにチェックマークを付ける
MENU_ENABLE メニューを選択可能にする
MENU_DISABLE メニューを選択不可能にする
BUTTON_ENABLE ボタンを選択可能にする
BUTTON_DISABLE ボタンを選択不可能にする
BUTTON_REPEAT ボタンをキーリピート可能にする
BUTTON_NOREPEAT ボタンをキーリピート不可能にする
型はすべてINTである。これらの定数は拡張された組み込み関数への引数や戻り値と
して使用される。具体的な意味は関数の仕様を参照のこと。
3.拡張クラス
クラス Menu
----------------------------------------------------------------------------
プルダウンメニューの情報を持つための拡張クラスである。
----------------------------------------------------------------------------
クラス Vertex
----------------------------------------------------------------------------
頂点データを表現するクラスである。
3次元座標、法線ベクトル、マッピング座標を保持する。
演算子'=='と'!='はVertexクラスの値を比較する(比較の対象となるのは3次元座標
値のみ)。
演算子'+'と'-'は成分ごとに加算、減算する。加数、減数はVectorクラスでもよい。
Vectorクラスの場合は3次元座標値にだけ線分ごとの和または差をとる。
演算子'*'は行列との積をとる。乗数はMatrixクラスでなければならない。
----------------------------------------------------------------------------
クラス Select
----------------------------------------------------------------------------
ポリゴン選択状態を保持するための拡張クラスである。
演算子'!', '|', '&', '^'が定義されている。
(注)Selectクラスのデータはポリゴンを削除を行うと無効になる。
----------------------------------------------------------------------------
クラス Edge
----------------------------------------------------------------------------
エッジの集合を表現するためのクラスである。
各要素たるエッジは2組の座標データと出現回数を保持する。
演算子'+', '-', '&', '^'が定義されている。
演算子'+'では同一要素が含まれる場合、出現回数は加算される。
他の演算では、基本的に披演算数の出現回数が保存される。
----------------------------------------------------------------------------
クラス VertexSet
----------------------------------------------------------------------------
Vertexの集合を表現するためのクラスである。
演算子'+', '-', '&', '^'が定義されている。
----------------------------------------------------------------------------
4.組み込み関数
4.1.システム制御
function Quit()
----------------------------------------------------------------------------
モデラを終了する。
----------------------------------------------------------------------------
function Version()
----------------------------------------------------------------------------
バージョン文字列を取得する。
戻り値は文字列クラス。
----------------------------------------------------------------------------
function Child( comline [, waitflag [, iconify]] )
----------------------------------------------------------------------------
子プロセスを起動する。
comline はコマンドライン文字列
Windows の場合、拡張子.HLPのファイルを実行するとヘルプを表示できる。
waitflag が指定されていて、TRUEの場合、プログラムの終了を待つ。
----------------------------------------------------------------------------
function Message( str )
----------------------------------------------------------------------------
メッセージを表示する。
----------------------------------------------------------------------------
function Warning()
----------------------------------------------------------------------------
警告ベルを鳴らす。
----------------------------------------------------------------------------
function WaitEvent()
----------------------------------------------------------------------------
イベントが発生するまで待つ。
----------------------------------------------------------------------------
function GetArg( num )
----------------------------------------------------------------------------
model.(x|exe)が起動された時のコマンドライン文字列を得る。
numはコマンドライン文字列の番号(argv[num})
----------------------------------------------------------------------------
function InputMode( input, cursor )
----------------------------------------------------------------------------
入力モードを設定する。
inputは入力(デフォルトはLEFT)
cursorは3Dカーソル移動(デフォルトはRIGHT)
----------------------------------------------------------------------------
function WriteFrame( mat, filename, objname [,back] )
----------------------------------------------------------------------------
フレームファイルを出力する。
matは変換行列、objnameはオブジェクト名、filenameはファイル名を指定する。
back は Vector クラスで背景色。
----------------------------------------------------------------------------
function UpdateAll()
----------------------------------------------------------------------------
画面を再描画する。
----------------------------------------------------------------------------
function StatusBar( str [, pos] )
----------------------------------------------------------------------------
ステータスバーのpos番目の文字列をstrに設定する。
pos が無指定の時は 0 番目を設定する。
pos は 0 ~ 7。
----------------------------------------------------------------------------
function StatusBarWidth( pos, width )
----------------------------------------------------------------------------
ステータスバーのpos番目の幅を width 文字に設定する。
pos が 0 の場合は無効(残りの幅になる)
----------------------------------------------------------------------------
function Modelrc( name [, value] )
----------------------------------------------------------------------------
Model.rc(X680x0) もしくは PolyEdit.INI (Windows) 中の name に設定されている
値を得る。value 指定時は、name の値を value に設定する。
name, value, 返り値は String クラス。
----------------------------------------------------------------------------
4.2.イベント制御
function MouseMove()
----------------------------------------------------------------------------
マウスの移動を検出する。
戻り値はBOOLEANでTRUEならドラグ中であることを示す。
----------------------------------------------------------------------------
function KeyCode()
----------------------------------------------------------------------------
押されたキーのキーコードを得る。
戻り値はINTで0の時はキーは押されていないことを示す。
----------------------------------------------------------------------------
function ShiftStat()
----------------------------------------------------------------------------
シフトキーの状態を示す。
戻り値はINTでビットのアサインはB_SFTSNS()関数と同じ。
----------------------------------------------------------------------------
function FlushKey()
----------------------------------------------------------------------------
キーバッファをクリアする。
戻り値はなし。
----------------------------------------------------------------------------
function KeyEvent( func, str )
function KeyEvent( func, code, ... )
----------------------------------------------------------------------------
キー押された時のイベント処理ルーチンを設定する。
イベント処理ルーチンに渡される引数はキーコードとシフト状態である。
----------------------------------------------------------------------------
function InputEvent( func )
----------------------------------------------------------------------------
入力キーが押された時のイベント処理ルーチンを設定する。
入力キーはInputMode関数で設定できる。
イベント処理ルーチンに渡される引数はない。
----------------------------------------------------------------------------
function ControlEvent( func )
----------------------------------------------------------------------------
カーソル表示パネルをクリックされたときのイベント処理ルーチンを設定する。
イベント処理ルーチンに渡される引数はない。
----------------------------------------------------------------------------
function AttrEvent( func )
----------------------------------------------------------------------------
アトリビュート表示パネルをクリックした時のイベント処理ルーチンを設定する。
選択されたアトリビュート番号が func の引数に渡される。
----------------------------------------------------------------------------
function ObjEvent( func )
----------------------------------------------------------------------------
オブジェクト表示パネルをクリックした時のイベント処理ルーチンを設定する。
選択されたオブジェクト番号が func の引数に渡される。
----------------------------------------------------------------------------
function CanCloseEvent( func )
----------------------------------------------------------------------------
システムから終了要求がきたときのイベント処理ルーチンを設定する。
funcの返り値がTRUE のとき終了する。
----------------------------------------------------------------------------
function CallKeyEvent( [code] )
----------------------------------------------------------------------------
キーイベントを実行する。code 無指定時は KeyCode() を使用。code は INT または
String。イベントが存在した時 TRUE を返す。
----------------------------------------------------------------------------
4.3.メニュー制御
function Menu( title, item0, func0, [query0], [check0,] item1, ... )
----------------------------------------------------------------------------
Menuクラスのデータを設定する。
titleはメニューのタイトル、item0, item1, ...はメニューの選択枝、func0, func1,
...はイベント処理ルーチンを指定する。
query0, query1, ... はメニュー設定問い合わせ処理ルーチンを指定する。
check0, check1, ... は MENU_CHECK、MENU_DISABLE の組み合わせ(|)で、メニュー
の状態を設定する。
イベント処理ルーチンに渡される引数は選択された番号である。
item0以下の引数はなくてもよい。
戻り値はMenuクラス。
----------------------------------------------------------------------------
function MenuPosition( menu, pos )
function MenuPosition( pos )
----------------------------------------------------------------------------
プルダウンメニューを設定する。
menuのメニューをタイトルバーのpos番目(0~)に設定する。
pos のみを指定した場合、pos 番目の Menu クラスを返す
----------------------------------------------------------------------------
function PushMenu()
----------------------------------------------------------------------------
メニューシステムをプッシュする。
階層的なプルダウンメニューシステムをつくる時に使用する。
階層は最大5レベル。
----------------------------------------------------------------------------
function PopMenu()
----------------------------------------------------------------------------
メニューシステムをポップする。
成功した場合はTRUE、失敗した場合はFALSEを返す
----------------------------------------------------------------------------
function MenuItems( menu )
----------------------------------------------------------------------------
メニューのアイテム数を返す。
----------------------------------------------------------------------------
function InsertMenu( menu, pos, item, func, [query], [check,] )
----------------------------------------------------------------------------
menu の pos 番目にアイテムを追加する。
item はメニューの選択枝、func はイベント処理ルーチンを指定する。
query はメニュー設定問い合わせ処理ルーチンを指定する。
check は MENU_CHECK、MENU_DISABLE の組み合わせ(|)でメニューの状態を設定する。
イベント処理ルーチンに渡される引数は選択された番号である。
戻り値はMenuクラス。
----------------------------------------------------------------------------
function MenuTitle( menu )
function MenuTitle( menu, title )
----------------------------------------------------------------------------
title 無指定時、menu のタイトル文字列を返す。
title 指定時、menu のタイトル文字列を title に変更したものを返す。
----------------------------------------------------------------------------
function MenuItem( menu, pos )
function MenuItem( menu, pos, item )
function MenuItem( item )
----------------------------------------------------------------------------
title 無指定時、menu の pos 番目(0~)のアイテム文字列を返す。
title 指定時、menu の pos 番目のアイテム文字列を item に変更したものを返す。
itemのみ指定時、現在問い合わせ中のメニューアイテム文字列を item にする。
引数無指定時現在問い合わせ中のメニューアイテム文字列を返す。
----------------------------------------------------------------------------
function MenuFunction( menu, pos )
function MenuFunction( menu, pos, func )
function MenuFunction( func )
----------------------------------------------------------------------------
func 無指定時、menu の pos 番目(0~)の処理関数を返す。
func 指定時、menu の pos 番目の処理関数を func に変更したものを返す。
funcのみ指定時、現在問い合わせ中のメニューの処理関数を func にする。
引数無指定時現在問い合わせ中のメニューの処理関数チェック状態を返す。
----------------------------------------------------------------------------
function MenuQuery( menu, pos )
function MenuQuery( menu, pos, func )
----------------------------------------------------------------------------
title 無指定時、menu の pos 番目(0~)の問い合わせ関数を返す。
title 指定時、menu の pos 番目の問い合わせ関数を func に変更したものを返す。
----------------------------------------------------------------------------
function MenuEnable( menu, pos )
function MenuEnable( menu, pos, check )
function MenuEnable( check )
function MenuEnable( )
----------------------------------------------------------------------------
check 無指定時、menu の pos 番目(0~)のチェック状態を返す。
check 指定時、menu の pos 番目のチェック状態を check に変更したものを返す。
check のみ指定時、現在問い合わせ中のメニューのチェック状態を check にする。
引数無指定時現在問い合わせ中のメニューのチェック状態を返す
----------------------------------------------------------------------------
4.4.アトリビュートバッファ制御
function AttrCurrent( [attrno] )
----------------------------------------------------------------------------
attrno を指定しない場合、カレントアトリビュート番号を得る。
attrno 指定時、カレントアトリビュート番号を変更し、元の番号を返す。
戻り値はINT
----------------------------------------------------------------------------
function Attrs()
----------------------------------------------------------------------------
現在登録中のアトリビュート数を得る。
戻り値はINT
----------------------------------------------------------------------------
function AttrAppend( name, code )
----------------------------------------------------------------------------
アトリビュートを追加する。
nameはアトリビュート名、codeはカラーコード(1-7)
----------------------------------------------------------------------------
function AttrSearch( name )
----------------------------------------------------------------------------
アトリビュートを検索する。
nameはアトリビュート名、戻り値はINTでアトリビュート番号。
----------------------------------------------------------------------------
function AttrChange( atrno )
----------------------------------------------------------------------------
選択されているポリゴンのアトリビュートを変更する。
atrno はアトリビュート番号
----------------------------------------------------------------------------
function AttrName( atrno )
function AttrName( atrno, name )
----------------------------------------------------------------------------
アトリビュート番号atrnoのアトリビュート名を得る。
nameを設定するとアトリビュート番号atrnoのアトリビュート名をnameに変更する。
----------------------------------------------------------------------------
function AttrFile( atrno )
function AttrFile( atrno, file )
----------------------------------------------------------------------------
アトリビュート番号atrnoのアトリビュートファイル名を得る。
fileを設定するとアトリビュート番号atrnoの形状ファイル名をfileに変更する。
----------------------------------------------------------------------------
function AttrCode( atrno )
function AttrCode( atrno, code )
----------------------------------------------------------------------------
アトリビュート番号atrnoのカラーコードを得る。
codeを設定するとアトリビュート番号atrnoのカラーコードをcodeに変更する。
----------------------------------------------------------------------------
function AttrReadFile( filename [, mode] )
----------------------------------------------------------------------------
アトリビュートファイルfilenameからアトリビュートを読み込む。
成功時はTRUE、失敗時はFALSE を返す。
mode 無指定または ATTR_APPEND の時はもともとあった同名のアトリビュートの情報
は失われる。ATTR_CREATE の時は、それとは別に同名のアトリビュートが作られる。
----------------------------------------------------------------------------
function AttrDelete( atrno )
----------------------------------------------------------------------------
アトリビュート番号atrnoのアトリビュートを削除する。
戻り値はBOOLEANで、FALSEの場合atrnoのポリゴンがあるため削除に失敗したことを
示す。
----------------------------------------------------------------------------
function AttrPolygons( [atrno] )
----------------------------------------------------------------------------
アトリビュート番号がatrnoのポリゴン数を返す。atrno 無指定時は全ポリゴン数。
----------------------------------------------------------------------------
function AttrWriteFile( filename, atrno [, mode ] )
----------------------------------------------------------------------------
アトリビュート番号 atrno のアトリビュートをファイル filename に出力する。
modeをFILE_OVERWRITEにするとファイルが存在する場合はオーバーライトする。
FILE_APPENDにするとファイルの最後に追加する。modeは省略可能で、省略した場合は
FILE_OVERWRITEになる。
----------------------------------------------------------------------------
function AttrCol( atrno [, col ] )
function AttrAmb( atrno [, col ] )
function AttrDif( atrno [, col ] )
function AttrTra( atrno [, col ] )
function AttrSpc( atrno [, col ] )
function AttrSize( atrno [, col ] )
function AttrRef( atrno [, col ] )
function AttrRfr( atrno [, col ] )
function AttrAtt( atrno [, col ] )
----------------------------------------------------------------------------
アトリビュート番号 atrno の情報を設定・取得する。
col は Vector クラスで各要素は 0 ~ 1 の値。
----------------------------------------------------------------------------
function AttrMap( atrno [, type ] )
----------------------------------------------------------------------------
アトリビュート番号 atrno のマッピングの有無を設定する。
type は Boolean でマッピング有りの時 TRUE、無しの時 FALSE。
----------------------------------------------------------------------------
function AttrMapFile( atrno [, file ] )
----------------------------------------------------------------------------
アトリビュート番号 atrno のマッピング画像ファイルを設定、取得する。
----------------------------------------------------------------------------
function GetAttrMapWind( atrno [, ary1, ary2 ] )
function GetAttrMapSize( atrno [, ary1, ary2 ] )
----------------------------------------------------------------------------
アトリビュート番号 atrno のウィンドウ、サイズを取得する。
ary1, ary2 は要素数2 の配列で、左上、右下の (u,v)が格納される。
----------------------------------------------------------------------------
function SetAttrMapWind( atrno [, ary1, ary2 ] )
function SetAttrMapSize( atrno [, ary1, ary2 ] )
----------------------------------------------------------------------------
アトリビュート番号 atrno のウィンドウ、サイズを設定る。
ary1, ary2 は要素数2 の配列で、左上、右下の (u,v)を設定する。
----------------------------------------------------------------------------
4.5.オブジェクト制御
function ObjCurrent( [objno] )
----------------------------------------------------------------------------
objno を指定しない場合、カレントオブジェクト番号を得る。
objno 指定時、カレントオブジェクト番号を objno に変更し、元の番号を返す。
戻り値はINT
----------------------------------------------------------------------------
function Objects()
----------------------------------------------------------------------------
現在登録されているオブジェクトの数を得る。
戻り値はINT
----------------------------------------------------------------------------
function ObjAppend( name, file )
----------------------------------------------------------------------------
アトリビュートを追加する。
nameはオブジェクト名、fileは形状ファイル名。
----------------------------------------------------------------------------
function ObjSearch( name )
----------------------------------------------------------------------------
オブジェクトを検索する。
nameはオブジェクト名、戻り値はINTでオブジェクト番号。
----------------------------------------------------------------------------
function ObjChange( objno )
----------------------------------------------------------------------------
選択されているポリゴンのオブジェクト番号を変更する。
objno はオブジェクト番号
----------------------------------------------------------------------------
function ObjName( objno )
function ObjName( objno, name )
----------------------------------------------------------------------------
オブジェクト番号objnoのオブジェクト名を得る。
nameを設定するとオブジェクト番号objnoのオブジェクト名をnameに変更する。
----------------------------------------------------------------------------
function ObjFile( objno )
function ObjFile( objno, file )
----------------------------------------------------------------------------
オブジェクト番号objnoの形状ファイル名を得る。
fileを設定するとオブジェクト番号objnoの形状ファイル名をfileに変更する。
----------------------------------------------------------------------------
function ObjEdit( objno )
function ObjEdit( objno, Edit )
----------------------------------------------------------------------------
オブジェクト番号objnoの変更フラグを得る。
editはBOOLEANで設定するとオブジェクト番号objnoの変更フラグをeditに変更する。
変更フラグは形状バッファを変更した場合に自動的にTRUEになる。
変更フラグはオブジェクト選択ウインドウで確認できる。
----------------------------------------------------------------------------
function ObjDelete( objno )
----------------------------------------------------------------------------
オブジェクト番号objnoのアトリビュートを削除する。
戻り値はBOOLEANで、FALSEの場合objnoのポリゴンがあるため削除に失敗したことを
示す。
----------------------------------------------------------------------------
function ObjPolygons( [objno] )
----------------------------------------------------------------------------
オブジェクト番号がobjnoのポリゴン数を返す。objno 無指定時は全ポリゴン数。
----------------------------------------------------------------------------
4.6.形状バッファ制御
function Vertex( pos )
function Vertex( pos, vec )
function Vertex( pos, vec, u, v )
function Vertex( x, y, z )
function Vertex( x, y, z, vx, vy, vz )
function Vertex( x, y, z, vx, vy, vz, u, v )
----------------------------------------------------------------------------
Vertexクラスを設定する。
posはVectorクラスで3次元座標、vecはVectorクラスで法線ベクトル、(x, y, z)は
頂点の3次元座標、(vx, vy, vz)は法線ベクトル、(u, v)はマッピング座標である。
戻り値はVertexクラス。
----------------------------------------------------------------------------
function Position( ver [, ary ] )
----------------------------------------------------------------------------
Vertexクラスverの3次元座標を読み出す。
aryにサイズが3以上の配列変数を設定し、(x, y, z)が格納される。
aryを省略した場合は戻り値のVectorクラスに座標が設定される。
----------------------------------------------------------------------------
function Vector( ver [, ary ] )
----------------------------------------------------------------------------
Vertexクラスverの法線ベクトルを読み出す。
aryにサイズが3以上の配列変数を設定し、(vx, vy, vz)が格納される。
aryを省略した場合は戻り値のVectorクラスに法線ベクトルが設定される。
----------------------------------------------------------------------------
function Mapping( ver, ary )
----------------------------------------------------------------------------
Vertexクラスverのマッピング座標を読み出す。
aryにサイズが2以上の配列変数を設定し、(u, v)が格納される。
----------------------------------------------------------------------------
function PolySetVertex( ver, no )
----------------------------------------------------------------------------
頂点データをカレントポリゴン(現在編集中のポリゴン)に設定する。
verはVertexクラス、noは頂点番号。
----------------------------------------------------------------------------
function PolyGetVertex( no )
----------------------------------------------------------------------------
頂点データをカレントポリゴンから読み出す。
noは頂点番号、戻り値はVertexクラス。
----------------------------------------------------------------------------
function PolyInsVertex( ver, no )
----------------------------------------------------------------------------
頂点データをカレントポリゴンに挿入する。
verはVertexクラス、noは頂点番号。
no 以降の頂点は番号が一つ増える。
----------------------------------------------------------------------------
function PolyDelVertex( no )
----------------------------------------------------------------------------
頂点データをカレントポリゴンから削除する。
noは頂点番号。no より後の頂点は番号が一つ減る。
----------------------------------------------------------------------------
function PolyVertexs()
function PolyVertexs( vers )
----------------------------------------------------------------------------
カレントポリゴンの頂点数を設定する。
versはINTで頂点数
戻り値はINTで頂点数
----------------------------------------------------------------------------
function PolyType()
function PolyType( type )
----------------------------------------------------------------------------
カレントポリゴンのデータタイプを設定する。
データタイプはPOLY_SIMPLE, POLY_SHADE, POLY_UV, POLY_UVSHADEの中から選択する。
戻り値はINTでデータタイプ
----------------------------------------------------------------------------
function PolyAttr( atrno )
----------------------------------------------------------------------------
カレントポリゴンのアトリビュート番号を設定する。
atrnoはINTでアトリビュート番号。
戻り値はINTでアトリビュート番号。
----------------------------------------------------------------------------
function PolyObj( objno )
----------------------------------------------------------------------------
カレントポリゴンのオブジェクト番号を設定する。
objnoはINTでオブジェクト番号。
戻り値はINTでオブジェクト番号。
----------------------------------------------------------------------------
function PolyAppend( [flag] )
----------------------------------------------------------------------------
カレントポリゴンをポリゴンバッファに登録する。
flagを指定し、flag TRUE の場合、追加したポリゴンは選択状態にある。
----------------------------------------------------------------------------
--- obsolute
function PolyLoad()
----------------------------------------------------------------------------
選択されているポリゴンを順にカレントポリゴンに取り込む。
戻り値はBOOLEANで正常に取り込んだ場合はTRUEを、選択されているポリゴンはない場
合、または最後の選択ポリゴンまで読み込んでしまっていた場合はFALSEを返す。
----------------------------------------------------------------------------
---
function PolyLoad()
function PolyLoad( PolyID )
function PolyLoad( sel, pos )
----------------------------------------------------------------------------
選択されているポリゴンを順にカレントポリゴンに取り込む。
戻り値は INT で正常に取り込んだ場合はポリゴンIDを、選択されているポリゴンが
ない場合、または最後の選択ポリゴンまで読み込んでしまっていた場合は 0 を返す。
PolyID 指定時はそのポリゴンをカレントポリゴンに取り込む。
sel, pos 指定時には Select クラス sel の pos 番目(0~)を取り込む。
----------------------------------------------------------------------------
function PolySave()
----------------------------------------------------------------------------
PolyLoad関数で取り込んだポリゴンデータをポリゴンバッファに戻す。
取り込んでからデータを変更しなかった場合は、PolySave関数は呼ばなくてもよい。
----------------------------------------------------------------------------
function PolyDelete()
function PolyDelete( sel )
----------------------------------------------------------------------------
現在選択中のポリゴンを削除する。
selクラスで選択されているポリゴンを削除する。
----------------------------------------------------------------------------
function PolyMove( mat )
----------------------------------------------------------------------------
現在選択中のポリゴンを移動する。
matは行列クラスで頂点データにmatを掛ける。
法線ベクトルには MatTra(MatInv(mat)) を掛ける。
----------------------------------------------------------------------------
function PolyInvisible( sw )
----------------------------------------------------------------------------
不可視属性を制御する。
swがTRUEの場合は選択されているポリゴン以外を不可視属性にし、swがFALSEの場合は
不可視属性のポリゴンを可視属性にする。
----------------------------------------------------------------------------
function PolyVertex( ver [,view] )
----------------------------------------------------------------------------
最近頂点を検索する。
verはVertexクラス、戻り値もVertexクラス。
view 指定時(WIN_XY,WIN_YZ,WIN_ZX)には、その平面での最近点。
----------------------------------------------------------------------------
function PolyPlane( ver, win, v0, v1, v2 )
----------------------------------------------------------------------------
平面投射する。
verはVertexクラス、winは投射する平面でWIN_XY, WIN_YZ, WIN_ZXから選択する。
v0, v1, v2は投射される平面を示すための3頂点でVertexクラス。
----------------------------------------------------------------------------
function ReadFile( filename [, mode] )
----------------------------------------------------------------------------
形状ファイルfilenameから形状データを読み込む。
読み込んだポリゴンは選択状態になる。
戻り値はオブジェクト番号(ひとつのファイルに複数のオブジェクトが存在した場合
は最後に読み込んだオブジェクトの番号)。
失敗時は -1 を返す。
mode 無指定または OBJ_APPEND の時は、同名のオブジェクトが存在する場合、その
オブジェクトに追加する。OBJ_CREATE の時は、それとは別に同名のオブジェクトが
作られる。
----------------------------------------------------------------------------
function WriteFile( objno [, mode ] )
----------------------------------------------------------------------------
形状ファイルに選択されているポリゴンの形状データを書き出す。
objnoはオブジェクト番号を設定し、そのオブジェクトのオブジェクト名で形状ファイ
ル名のファイルに書き出す。
modeはファイルのアクセスモードである。
modeをFILE_OVERWRITEにするとファイルが存在する場合はオーバーライトする。
FILE_APPENDにするとファイルの最後に追加する。modeは省略可能で、省略した場合は
FILE_OVERWRITEになる。
書き出されるポリゴンはすべての選択ポリゴンであり、設定されたオブジェクトに属
するポリゴンだけではない。
成功時はTRUE、失敗時はFALSE を返す。
----------------------------------------------------------------------------
function FrmReadFile( filename [, searchdir [, mode]] )
function FrmReadFile( filename, mode )
----------------------------------------------------------------------------
フレームファイルfilenameから形状データを読み込む。
フレームファイル中の obj は同名の形状ファイルを searchdir から読み込む。
読み込んだポリゴンは選択状態になる。
戻り値はオブジェクト番号(ひとつのファイルに複数のオブジェクトが存在した場合
は最後に読み込んだオブジェクトの番号)。
失敗時は -1 を返す。
mode 無指定または OBJ_APPEND の時は、同名のオブジェクトが存在する場合、その
オブジェクトに追加する。OBJ_CREATE の時は、それとは別に同名のオブジェクトが
作られる。
----------------------------------------------------------------------------
function PolyShade( sw )
----------------------------------------------------------------------------
swがOFFの場合は選択されているポリゴンの法線ベクトルを削除する。
swがONの場合は選択されているポリゴンにスムーズな法線ベクトルを生成する。
swがNORMAL_CREATEの場合は各ポリゴンに、そのポリゴンに垂直な法線を生成する。
----------------------------------------------------------------------------
function PolyShadeInv()
----------------------------------------------------------------------------
選択されているポリゴンの法線ベクトルを反転する。
----------------------------------------------------------------------------
function PolyMap( sw )
function PolyMap( sw, mat )
----------------------------------------------------------------------------
swがTRUEの場合は選択されているポリゴンのマッピング座標を生成する。
swがFALSEの場合は選択されているポリゴンのマッピング座標を削除する。
matは行列クラスでマッピングへの変換行列である。
各頂点の3次元座標をmatに従って変換した後の( x, y )が( u, v )になる。
----------------------------------------------------------------------------
function PolyShiftVertex( no )
----------------------------------------------------------------------------
no 番の頂点が0番になるようにカレントポリゴンの頂点番号をずらす。
----------------------------------------------------------------------------
function PolyInvVertex( )
----------------------------------------------------------------------------
カレントポリゴンの頂点のならびを逆順にする。
----------------------------------------------------------------------------
function PolyVector( [flag] )
----------------------------------------------------------------------------
カレントポリゴンの法線ベクトル(左回りが表)を得る。
flag がTRUEの場合、法線ベクトルを計算し直す。
----------------------------------------------------------------------------
4.7.ポリゴン選択制御
function SelectPolygons()
function SelectPolygons( sel )
----------------------------------------------------------------------------
選択しているポリゴンの数を得る。
戻り値はINT
----------------------------------------------------------------------------
function SelectAll( flag [, sw ] )
----------------------------------------------------------------------------
すべてのポリゴンを選択する。
flagはBOOLEANでTRUEの場合はすべてのポリゴンを選択状態にし、FALSEの場合はすべ
てのポリゴンの選択を解除する。
swは SELECT_UPDATE, SELECT_AND, SELECT_OR, SELECT_XOR のいずれかですでに選択
されているポリゴン集合と新たに選択されたポリゴン集合とで行われる論理演算の種
類を設定する。swを省略した場合は SELECT_UPDATE が選択されているのと同じ。
----------------------------------------------------------------------------
function SelectArea( flag, sw, ver1, ver2 )
----------------------------------------------------------------------------
直方体で領域指定してポリゴンを選択する。
flagはBOOLEAN型で、TRUEの場合は領域内のポリゴンを選択状態にする。FALSEの場合
は領域内のポリゴンの選択を解除する。
swは SELECT_UPDATE, SELECT_AND, SELECT_OR, SELECT_XOR のいずれかですでに選択
されているポリゴン集合と新たに選択されたポリゴン集合とで行われる論理演算の種
類を設定する。さらに、SELECT_ALL, SELECT_SUBの選択も可能。
pos1, pos2はVertexクラスで領域指定する直方体の対角線の頂点を設定する。
----------------------------------------------------------------------------
function SelectPers( flag, sw, x1, y1, x2, y2 )
----------------------------------------------------------------------------
透視図上の長方形で領域指定してポリゴンを選択する。
flag, swの意味はSelectArea関数と同じ。x1, y1, x2, y2 は領域指定する長方形の対
角線の頂点を設定する。
----------------------------------------------------------------------------
function SelectAttr( atrno, flag, sw )
----------------------------------------------------------------------------
アトリビュート番号がatrnoのポリゴンを選択する。
flag, swの意味はSelectArea関数と同じ。
----------------------------------------------------------------------------
function SelectObj( obj, flag, sw )
----------------------------------------------------------------------------
オブジェクト番号がobjnoのポリゴンを選択する。
flag, swの意味はSelectArea関数と同じ。
----------------------------------------------------------------------------
function SelectBox( ary )
----------------------------------------------------------------------------
選択されているポリゴンの座標最小値、最大値を得る。
aryはサイズが2以上の配列で最小値と最大値の頂点データが格納される。
----------------------------------------------------------------------------
function Select()
function Select( sel )
----------------------------------------------------------------------------
ポリゴン選択状態を得る。戻り値はSelectクラス。
selはSelectクラスでselを設定した場合はselの選択状態を設定する。
----------------------------------------------------------------------------
function SelectCurrent()
----------------------------------------------------------------------------
カレントポリゴン(PolyLoad中のポリゴン)を選択したSelectクラスを返す。
----------------------------------------------------------------------------
function SelectAdjoint( sel )
----------------------------------------------------------------------------
選択ポリゴンに隣接するポリゴンのSelectクラスを返す。
----------------------------------------------------------------------------
4.8.表示制御
function MouseWindow()
----------------------------------------------------------------------------
マウスのあるウインドウを読み出す。
戻り値はINTで、WIN_XY, WIN_YZ, WIN_ZX、WIN_PERSのいずれか
----------------------------------------------------------------------------
function Cursor()
function Cursor( ver )
----------------------------------------------------------------------------
3Dカーソル位置を読み出す。
verを設定した場合は3Dカーソル位置を設定する。
verはVertexまたはVectorクラスで戻り値はVertexクラス。
----------------------------------------------------------------------------
function Cursor2D( ary )
----------------------------------------------------------------------------
2Dカーソル(透視図上のカーソル)位置を読み出す。
aryはサイズが2以上の配列でカーソルのX座標とY座標が格納される。
----------------------------------------------------------------------------
function Update( sw [, win] )
----------------------------------------------------------------------------
3面図を再描画する。
swはCLEARまたはOVERWRITE
viewは WIN_XY, WIN_YZ, WIN_ZX, WIN_PERS の組み合わせ(|)で、win が指定
された場合はその面のみを再描画する。
----------------------------------------------------------------------------
function UpdatePers( sw )
----------------------------------------------------------------------------
透視図を再描画する。
swはCLEARまたはOVERWRITE
----------------------------------------------------------------------------
function DrawCurrent( [flag] )
----------------------------------------------------------------------------
カレントポリゴンを表示する。
flag指定時、 flag が TRUE の場合 選択色で、FALSE の場合ライン色で描画する。
----------------------------------------------------------------------------
function DrawLine( v1, v2 [, color] )
----------------------------------------------------------------------------
3面図にラインを表示する。
v1とv2はVertexクラスで、ラインの端点を設定する。
----------------------------------------------------------------------------
function DrawLine2D( x1, y1, x2, y2 )
----------------------------------------------------------------------------
透視図にラインを表示する。
x1,y1,x2,y2はINTで、ラインの端点を設定する。
----------------------------------------------------------------------------
function DrawBox( v1, v2 )
function DrawBox( v1, v2, mat )
----------------------------------------------------------------------------
3面図に直方体を表示する。
v1, v2はVertexクラスで表示する直方体の対角線の頂点を設定する。
matは行列クラスで直方体を拡大縮小、回転、移動するときに設定する。
----------------------------------------------------------------------------
function DrawBox2D( x1, y1, x2, y2 )
----------------------------------------------------------------------------
透視図に長方形を表示する。
x1,y1,x2,y2はINTで、長方形の対角線の頂点を設定する。
----------------------------------------------------------------------------
function Clear()
----------------------------------------------------------------------------
3面図をクリアする。
クリアされるのはDrawLine, DrawLine2D, DrawBox, DrawBox2D関数で描いた図形のみ
で形状バッファの内容を反映する図形はクリアされない。
----------------------------------------------------------------------------
function SetWindow( win )
----------------------------------------------------------------------------
表示ウインドウを設定する。
winはWIN_XY, WIN_YZ, WIN_ZX、WIN_PERS、WIN_ALLのいずれかを選択する。
----------------------------------------------------------------------------
function Window( [win] )
----------------------------------------------------------------------------
表示ウインドウを設定する。
winはWIN_XY, WIN_YZ, WIN_ZX、WIN_PERS、WIN_ALLのいずれかを選択する。
win 無指定時は現在の表示ウィンドウを返す。
----------------------------------------------------------------------------
function VisibleVector( length )
----------------------------------------------------------------------------
透視図に法線ベクトルを表示する。
lengthはINTで法線ベクトル長を設定する。0にすると法線ベクトルは表示されない。
戻り値は現在設定されているベクトル長。
----------------------------------------------------------------------------
function VisiblePolyVector( length )
----------------------------------------------------------------------------
透視図に面の法線ベクトル(左回りが表)を表示する。
lengthはINTで法線ベクトル長を設定する。0にすると法線ベクトルは表示されない。
戻り値は現在設定されているベクトル長。
----------------------------------------------------------------------------
function VisibleVertex( radius )
----------------------------------------------------------------------------
頂点を表示する。
radiusはINTで頂点の半径を設定する。0にすると頂点は表示されない。
戻り値は現在設定されている半径。
----------------------------------------------------------------------------
function Draw( radius )
----------------------------------------------------------------------------
頂点を表示する。
radiusはINTで頂点の半径を設定する。0にすると頂点は表示されない。
戻り値は現在設定されている半径。
----------------------------------------------------------------------------
function Center( x, y, z )
----------------------------------------------------------------------------
図面中心の3次元座標値を設定する。
引数がなければ現在の図面中心座標値を返す。
----------------------------------------------------------------------------
function SetZoom( zoom, move )
----------------------------------------------------------------------------
図面のズーム値とスクロール時の移動量を設定する。
zoomはINT型で縮小倍数を指定する。
moveはINT型で移動量を設定する。
moveは省略可能で省略するとzoomに応じた適当な値を自動設定する。
----------------------------------------------------------------------------
function SetPers( mat )
----------------------------------------------------------------------------
透視図の変換行列を設定する。
matは行列クラス。
----------------------------------------------------------------------------
function SetGrid( disp, cur )
----------------------------------------------------------------------------
グリッドを設定する。
dispはINT型で表示グリッドの間隔を設定する。
curはINT型でカーソル移動量の間隔を設定する。
----------------------------------------------------------------------------
function SetConv( mat )
----------------------------------------------------------------------------
基準座標系を変更する。
matは行列クラスで、matに指定されたように座標系が変換される。
----------------------------------------------------------------------------
function PersAngle( [angle] )
----------------------------------------------------------------------------
透視図の画角を angle 度に設定する。
現在設定中の画角を返す。
----------------------------------------------------------------------------
function ViewWidth( win )
----------------------------------------------------------------------------
表示幅を返す。win は WIN_XY~WIN_PERS。
----------------------------------------------------------------------------
function ViewHeight( win )
----------------------------------------------------------------------------
表示高を返す。win は WIN_XY~WIN_PERS。
----------------------------------------------------------------------------
function DrawInvisible( flag )
----------------------------------------------------------------------------
Invisible 設定のポリゴンを表示するかどうか設定する。
TRUE のとき、暗水色で描く。FALSEのときは描画しない。
現在の設定をかえす。
----------------------------------------------------------------------------
function DrawFrontOnly( flag )
----------------------------------------------------------------------------
裏面(左回りが表)を描かないかどうか設定する。
TRUE のときは表のみ描く。FALSEのときは両面とも描く。
現在の設定をかえす。
----------------------------------------------------------------------------
function ViewCursor( flag )
----------------------------------------------------------------------------
カーソルを表示するかどうかを設定する。
ON のとき表示する。OFF のときは表示しない。
現在の設定をかえす。
----------------------------------------------------------------------------
4.9.ダイヤログウインドウ制御
function DlogOpen( title, fields [, sw] )
function DlogOpen( title, fields, button1 [, button2, ... ] )
----------------------------------------------------------------------------
ダイヤログウインドウをオープンする。
titleは文字列クラスでタイトル名を設定する。
fieldsはINTでフィールド数を設定する。
sw無指定、sw=TRUE, sw = 1 →[決定] [中止]
sw = 0 →確認
button1, button2 ... 終了ボタンの文字列(表示は右から)
----------------------------------------------------------------------------
function DlogMessage( field, msg )
----------------------------------------------------------------------------
ダイヤログウインドウにメッセージを表示する。
fieldはINTで表示するフィールド番号、msgは文字列クラスで表示するメッセージを設
定する。
----------------------------------------------------------------------------
function DlogString( field, msg, buf, maxcols [, ext, ...])
----------------------------------------------------------------------------
ダイヤログウインドウに文字列入力フィールドを設定する。
fieldはフィールド番号、msgはメッセージ、bufはデフォルトの文字列、maxcolsは最
大文字数を設定する。bufは""でもよい。
ext はファイル入力ダイアログの選択拡張子指定(例:"形状ファイル(*.suf)")。
----------------------------------------------------------------------------
function DlogToggle( field, msg, name, sw )
----------------------------------------------------------------------------
ダイヤログウインドウにトグルスイッチを設定する。
fieldはフィールド番号、msgはメッセージ、nameはスイッチの名前、swはデフォルト
のスイッチ状態を設定する。
----------------------------------------------------------------------------
function DlogSelect( field, msg, item, no )
----------------------------------------------------------------------------
ダイヤログウインドウに選択スイッチを設定する。
fieldはフィールド番号、msgはメッセージ、itemはスイッチ名の配列、noはデフォル
トで選択されているスイッチ番号を設定する。
----------------------------------------------------------------------------
function DlogSlider( field, msg, size, step, pos, func )
----------------------------------------------------------------------------
ダイヤログウインドウにスライドスイッチを設定する。
fieldはフィールド番号、msgはメッセージ、sizeはスイッチのサイズ、step はスイ
ッチのステップ数、posはスイッチの初期位置、funcはスイッチ位置の変換関数を設
定する。
funcに設定する関数は引数にINTを受け取りINTを返さなければならない。
----------------------------------------------------------------------------
function DlogWait()
----------------------------------------------------------------------------
ダイヤログウインドウの入力待ち状態に入る。
戻り値はINTで選択した終了状態を示す
sw 無し、sw == 1 -> 決定: 1 中止, ESC: 0, RET:
sw == 0 -> 確認: 1 ESC: 0
文字列指定 -> 右から 0, 1, 2 ...
----------------------------------------------------------------------------
function DlogAnswer( field )
----------------------------------------------------------------------------
ダイヤログウインドウの入力状態を得る。
fieldが示すフィールド番号の位置が文字列入力フィールドだった場合は入力文字列を、
選択スイッチだった場合はINTを、トグルスイッチだった場合はBOOLEANを、スライド
スイッチだった場合はスイッチの位置を返す。
----------------------------------------------------------------------------
function DlogFileOpen( title, name, ext [, ext ...] )
----------------------------------------------------------------------------
ファイル名入力ダイアログを開く
titleは文字列クラスでタイトル名を設定する。name はデフォルト文字列。
ext はファイル入力ダイアログの選択拡張子指定(例:"形状ファイル(*.suf)")。
入力したファイル名を返す。
----------------------------------------------------------------------------
4.10.ユーザーボタン制御
function CreateButton( x, y, title, func [, enable] )
function CreateButton( x, y, bitmap, func [, enable] )
----------------------------------------------------------------------------
ユーザーボタンを作成する。
位置は(x,y)で、表示はタイトル文字列(title)または64桁の16進文字列(bitmap)
で指定する。ボタンが押された時はイベント処理ルーチン func が呼び出される。
enable は BUTTON_ENABLE, BUTTON_REPEAT の組み合わせ(|)。
重なる位置にあったボタンは削除される。
返り値はボタンID。
----------------------------------------------------------------------------
function UpdateButton( [buttonid] )
----------------------------------------------------------------------------
ユーザーボタンを表示する。 CreateButton 後は必ず実行すること。
引数無指定時は全ボタン、引数指定時はそのボタンを表示する。
----------------------------------------------------------------------------
function ClearButton()
----------------------------------------------------------------------------
ユーザーボタンをすべて削除する。
----------------------------------------------------------------------------
function ButtonArea( [width] )
----------------------------------------------------------------------------
ユーザーボタン領域の幅を設定する。
ユーザーボタン領域の幅を返す。
----------------------------------------------------------------------------
function ButtonEnable( buttonid, enable )
function ButtonEnable( buttonid )
----------------------------------------------------------------------------
ボタンの有効無効を設定する。
enable 無指定時は現在の設定を返す。
----------------------------------------------------------------------------
4.11.エッジ処理
function Edge( [ver1, ver2] )
----------------------------------------------------------------------------
引数が無い場合は空集合Edgeデータを返す。
引数指定時は (ver1, ver2):1 というEdgeデータを返す。
----------------------------------------------------------------------------
function EdgeSelect( [edge, flag, sw] )
----------------------------------------------------------------------------
引数が無い場合は現在の選択ポリゴンに含まれる全エッジの集合を返す。
引数指定時は、edge の各要素を含むポリゴンを選択する。flag, swの意味は
SelectArea関数と同じ。
----------------------------------------------------------------------------
function Edges( edge )
----------------------------------------------------------------------------
要素数を返す。
----------------------------------------------------------------------------
function EdgeGetVertex( edge, pos, ary )
----------------------------------------------------------------------------
edge のpos番目(0~)の要素を ary[0]、ary[1] に返す。
----------------------------------------------------------------------------
function EdgeGetCount( edge, ver1, ver2 )
function EdgeGetCount( edge, pos )
----------------------------------------------------------------------------
edge の pos番目(0~)、もしくは (ver1, ver2) 要素の出現回数を返す。
存在しない場合は 0 を返す。
----------------------------------------------------------------------------
function EdgeVertex( edge, ver )
----------------------------------------------------------------------------
edge からどちらかの座標が ver である要素だけを抽出する。戻り値は Edge クラス
----------------------------------------------------------------------------
function EdgeSelectCount( edge, begin [, end] )
----------------------------------------------------------------------------
edge から出現回数が begin 以上、[end以下] の要素を抽出する。
----------------------------------------------------------------------------
function DrawEdge( edge [, color] )
----------------------------------------------------------------------------
edge に含まれる全エッジを描画する。
----------------------------------------------------------------------------
4.11.頂点集合処理
function VertexSet( [ver] )
----------------------------------------------------------------------------
引数が無い場合は空集合VertexSetデータを返す。
引数指定時はそれを要素に持つVertexSetデータを返す。
----------------------------------------------------------------------------
function VertexSelect( [verset, flag, sw] )
----------------------------------------------------------------------------
引数が無い場合は現在の選択ポリゴンに含まれる全頂点の集合を返す。
引数指定時は、edge の各要素を含むポリゴンを選択する。flag, swの意味は
SelectArea関数と同じ。
----------------------------------------------------------------------------
function VertexPositionVertex( verset )
----------------------------------------------------------------------------
verset から法線、UV を削除した頂点集合を返す。
----------------------------------------------------------------------------
function VertexSelectPosition( verset, ver )
----------------------------------------------------------------------------
verset の中から ver と同じ座標の頂点集合を返す。
ver は Vertex もしくは Vecror クラス。
----------------------------------------------------------------------------
function Vertexs( verset )
----------------------------------------------------------------------------
要素数を返す。
----------------------------------------------------------------------------
function VertexGetVertex( verset, pos )
function VertexGetVertex( verset, ver )
----------------------------------------------------------------------------
verset のpos番目(0~)の要素を返す。
ver が verset の何番目の要素かを返す。無い場合は-1。
----------------------------------------------------------------------------
function DrawVertex( verset [, color] )
----------------------------------------------------------------------------
verset に含まれる全頂点を描画する。
----------------------------------------------------------------------------