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 >
Text File  |  1996-08-01  |  57KB  |  1,252 lines

  1. ****************************************************************************
  2. *
  3. *      マクロ言語のモデラにおける拡張
  4. *
  5. *    Copyright T.Kobayashi    1994.8.7
  6. *
  7. ****************************************************************************
  8.  
  9. 1.はじめに
  10.  
  11.    モデラmodel.(x|exe)において拡張されたマクロ言語'ml'の仕様について示す。拡
  12.   張はシステム定数と拡張クラス、組み込み関数についてなされている。
  13.    'ml'言語自体の仕様は'ml.doc'を参照のこと。
  14.  
  15.  
  16. 2.システム定数
  17.  
  18.    拡張されたシステム定数を以下に示す。
  19.     POLY_SIMPLE    ポリゴン属性:単純ポリゴン
  20.     POLY_SHADE    ポリゴン属性:法線ベクトル付きポリゴン
  21.     POLY_UV        ポリゴン属性:マッピング座標付きポリゴン
  22.     POLY_UVSHADE    ポリゴン属性:法線ベクトルとマッピング座標付きポリゴン
  23.     SELECT_UPDATE    ポリゴンセレクトの属性:UPDATE
  24.     SELECT_AND    ポリゴンセレクトの属性:AND
  25.     SELECT_OR    ポリゴンセレクトの属性:OR
  26.     SELECT_XOR    ポリゴンセレクトの属性:XOR
  27.     SELECT_ALL    ポリゴンセレクトの属性:すべてが含まれる
  28.     SELECT_SUB    ポリゴンセレクトの属性:一部が含まれる
  29.     WIN_XY        表示タイプ:XY平面表示
  30.     WIN_YZ        表示タイプ:YZ平面表示
  31.     WIN_ZX        表示タイプ:ZX平面表示
  32.     WIN_PERS    表示タイプ:透視図表示
  33.     WIN_ALL        表示タイプ:三面図表示
  34.     VERTEX_MIN    3次元座標の最小値
  35.     VERTEX_MAX    3次元座標の最小値
  36.  
  37.     OVERWRITE    再描画する時にオーバライトする
  38.     CLEAR        一度クリアしてから再描画する
  39.     LEFT        マウスの左ボタン
  40.     RIGHT        マウスの右ボタン
  41.  
  42.     BUTTON_WIDTH    ユーザーボタンの幅
  43.     BUTTON_HEIGHT    ユーザーボタンの高さ
  44.  
  45.     キーコード定数
  46.     KEY_TAB,    KEY_ESC,        KEY_BS,        KEY_RET
  47.     KEY_F1~KEY_F10
  48.     KEY_ROLLUP,    KEY_ROLLDOWN,    KEY_INS,    KEY_DEL
  49.     KEY_UP,        KEY_LEFT,        KEY_RIGHT,    KEY_DOWN
  50.     KEY_CLR,    KEY_HELP,        KEY_HOME,    KEY_UNDO
  51.     KEY_NUMPAD_0~KEY_NUMPAD_9
  52.     KEY_NUMPAD_SLASH,            KEY_NUMPAD_ASTERISK
  53.     KEY_NUMPAD_MINUS,            KEY_NUMPAD_PLUS
  54.     KEY_NUMPAD_EQUAL,            KEY_NUMPAD_ENTER
  55.     KEY_NUMPAD_COMMA,            KEY_NUMPAD_PERIOD
  56.  
  57.     MENU_NOCHECK    メニューにチェックマークを付けない
  58.     MENU_CHECK        メニューにチェックマークを付ける
  59.     MENU_ENABLE        メニューを選択可能にする
  60.     MENU_DISABLE    メニューを選択不可能にする
  61.  
  62.     BUTTON_ENABLE    ボタンを選択可能にする
  63.     BUTTON_DISABLE    ボタンを選択不可能にする
  64.     BUTTON_REPEAT    ボタンをキーリピート可能にする
  65.     BUTTON_NOREPEAT    ボタンをキーリピート不可能にする
  66.  
  67.   型はすべてINTである。これらの定数は拡張された組み込み関数への引数や戻り値と
  68.   して使用される。具体的な意味は関数の仕様を参照のこと。
  69.  
  70.  
  71. 3.拡張クラス
  72.  
  73. クラス    Menu
  74. ----------------------------------------------------------------------------
  75. プルダウンメニューの情報を持つための拡張クラスである。
  76. ----------------------------------------------------------------------------
  77.  
  78. クラス    Vertex
  79. ----------------------------------------------------------------------------
  80. 頂点データを表現するクラスである。
  81. 3次元座標、法線ベクトル、マッピング座標を保持する。
  82. 演算子'=='と'!='はVertexクラスの値を比較する(比較の対象となるのは3次元座標
  83. 値のみ)。
  84. 演算子'+'と'-'は成分ごとに加算、減算する。加数、減数はVectorクラスでもよい。
  85. Vectorクラスの場合は3次元座標値にだけ線分ごとの和または差をとる。
  86. 演算子'*'は行列との積をとる。乗数はMatrixクラスでなければならない。
  87. ----------------------------------------------------------------------------
  88.  
  89. クラス    Select
  90. ----------------------------------------------------------------------------
  91. ポリゴン選択状態を保持するための拡張クラスである。
  92. 演算子'!', '|', '&', '^'が定義されている。
  93. (注)Selectクラスのデータはポリゴンを削除を行うと無効になる。
  94. ----------------------------------------------------------------------------
  95.  
  96. クラス    Edge
  97. ----------------------------------------------------------------------------
  98. エッジの集合を表現するためのクラスである。
  99. 各要素たるエッジは2組の座標データと出現回数を保持する。
  100. 演算子'+', '-', '&', '^'が定義されている。
  101. 演算子'+'では同一要素が含まれる場合、出現回数は加算される。
  102. 他の演算では、基本的に披演算数の出現回数が保存される。
  103. ----------------------------------------------------------------------------
  104.  
  105. クラス    VertexSet
  106. ----------------------------------------------------------------------------
  107. Vertexの集合を表現するためのクラスである。
  108. 演算子'+', '-', '&', '^'が定義されている。
  109. ----------------------------------------------------------------------------
  110.  
  111. 4.組み込み関数
  112.  
  113. 4.1.システム制御
  114.  
  115. function    Quit()
  116. ----------------------------------------------------------------------------
  117. モデラを終了する。
  118. ----------------------------------------------------------------------------
  119.  
  120. function    Version()
  121. ----------------------------------------------------------------------------
  122. バージョン文字列を取得する。
  123. 戻り値は文字列クラス。
  124. ----------------------------------------------------------------------------
  125.  
  126. function    Child( comline [, waitflag [, iconify]] )
  127. ----------------------------------------------------------------------------
  128. 子プロセスを起動する。
  129. comline はコマンドライン文字列
  130. Windows の場合、拡張子.HLPのファイルを実行するとヘルプを表示できる。
  131. waitflag が指定されていて、TRUEの場合、プログラムの終了を待つ。
  132. ----------------------------------------------------------------------------
  133.  
  134. function    Message( str )
  135. ----------------------------------------------------------------------------
  136. メッセージを表示する。
  137. ----------------------------------------------------------------------------
  138.  
  139. function    Warning()
  140. ----------------------------------------------------------------------------
  141. 警告ベルを鳴らす。
  142. ----------------------------------------------------------------------------
  143.  
  144. function    WaitEvent()
  145. ----------------------------------------------------------------------------
  146. イベントが発生するまで待つ。
  147. ----------------------------------------------------------------------------
  148.  
  149. function    GetArg( num )
  150. ----------------------------------------------------------------------------
  151. model.(x|exe)が起動された時のコマンドライン文字列を得る。
  152. numはコマンドライン文字列の番号(argv[num})
  153. ----------------------------------------------------------------------------
  154.  
  155. function    InputMode( input, cursor )
  156. ----------------------------------------------------------------------------
  157. 入力モードを設定する。
  158. inputは入力(デフォルトはLEFT)
  159. cursorは3Dカーソル移動(デフォルトはRIGHT)
  160. ----------------------------------------------------------------------------
  161.  
  162. function    WriteFrame( mat, filename, objname [,back] )
  163. ----------------------------------------------------------------------------
  164. フレームファイルを出力する。
  165. matは変換行列、objnameはオブジェクト名、filenameはファイル名を指定する。
  166. back は Vector クラスで背景色。
  167. ----------------------------------------------------------------------------
  168.  
  169. function    UpdateAll()
  170. ----------------------------------------------------------------------------
  171. 画面を再描画する。
  172. ----------------------------------------------------------------------------
  173.  
  174. function    StatusBar( str [, pos] )
  175. ----------------------------------------------------------------------------
  176. ステータスバーのpos番目の文字列をstrに設定する。
  177. pos が無指定の時は 0 番目を設定する。
  178. pos は 0 ~ 7。
  179. ----------------------------------------------------------------------------
  180.  
  181. function    StatusBarWidth( pos, width )
  182. ----------------------------------------------------------------------------
  183. ステータスバーのpos番目の幅を width 文字に設定する。
  184. pos が 0 の場合は無効(残りの幅になる)
  185. ----------------------------------------------------------------------------
  186.  
  187. function    Modelrc( name [, value] )
  188. ----------------------------------------------------------------------------
  189. Model.rc(X680x0) もしくは PolyEdit.INI (Windows) 中の name に設定されている
  190. 値を得る。value 指定時は、name の値を value に設定する。
  191. name, value, 返り値は String クラス。
  192. ----------------------------------------------------------------------------
  193.  
  194.  
  195. 4.2.イベント制御
  196.  
  197. function    MouseMove()
  198. ----------------------------------------------------------------------------
  199. マウスの移動を検出する。
  200. 戻り値はBOOLEANでTRUEならドラグ中であることを示す。
  201. ----------------------------------------------------------------------------
  202.  
  203. function    KeyCode()
  204. ----------------------------------------------------------------------------
  205. 押されたキーのキーコードを得る。
  206. 戻り値はINTで0の時はキーは押されていないことを示す。
  207. ----------------------------------------------------------------------------
  208.  
  209. function    ShiftStat()
  210. ----------------------------------------------------------------------------
  211. シフトキーの状態を示す。
  212. 戻り値はINTでビットのアサインはB_SFTSNS()関数と同じ。
  213. ----------------------------------------------------------------------------
  214.  
  215. function    FlushKey()
  216. ----------------------------------------------------------------------------
  217. キーバッファをクリアする。
  218. 戻り値はなし。
  219. ----------------------------------------------------------------------------
  220.  
  221. function    KeyEvent( func, str )
  222. function    KeyEvent( func, code, ... )
  223. ----------------------------------------------------------------------------
  224. キー押された時のイベント処理ルーチンを設定する。
  225. イベント処理ルーチンに渡される引数はキーコードとシフト状態である。
  226. ----------------------------------------------------------------------------
  227.  
  228. function    InputEvent( func )
  229. ----------------------------------------------------------------------------
  230. 入力キーが押された時のイベント処理ルーチンを設定する。
  231. 入力キーはInputMode関数で設定できる。
  232. イベント処理ルーチンに渡される引数はない。
  233. ----------------------------------------------------------------------------
  234.  
  235. function    ControlEvent( func )
  236. ----------------------------------------------------------------------------
  237. カーソル表示パネルをクリックされたときのイベント処理ルーチンを設定する。
  238. イベント処理ルーチンに渡される引数はない。
  239. ----------------------------------------------------------------------------
  240.  
  241. function    AttrEvent( func )
  242. ----------------------------------------------------------------------------
  243. アトリビュート表示パネルをクリックした時のイベント処理ルーチンを設定する。
  244. 選択されたアトリビュート番号が func の引数に渡される。
  245. ----------------------------------------------------------------------------
  246.  
  247. function    ObjEvent( func )
  248. ----------------------------------------------------------------------------
  249. オブジェクト表示パネルをクリックした時のイベント処理ルーチンを設定する。
  250. 選択されたオブジェクト番号が func の引数に渡される。
  251. ----------------------------------------------------------------------------
  252.  
  253. function    CanCloseEvent( func )
  254. ----------------------------------------------------------------------------
  255. システムから終了要求がきたときのイベント処理ルーチンを設定する。
  256. funcの返り値がTRUE のとき終了する。
  257. ----------------------------------------------------------------------------
  258.  
  259. function    CallKeyEvent( [code] )
  260. ----------------------------------------------------------------------------
  261. キーイベントを実行する。code 無指定時は KeyCode() を使用。code は INT または
  262. String。イベントが存在した時 TRUE を返す。
  263. ----------------------------------------------------------------------------
  264.  
  265.  
  266. 4.3.メニュー制御
  267.  
  268. function    Menu( title, item0, func0, [query0], [check0,] item1, ... )
  269. ----------------------------------------------------------------------------
  270. Menuクラスのデータを設定する。
  271. titleはメニューのタイトル、item0, item1, ...はメニューの選択枝、func0, func1,
  272. ...はイベント処理ルーチンを指定する。
  273. query0, query1, ... はメニュー設定問い合わせ処理ルーチンを指定する。
  274. check0, check1, ... は MENU_CHECK、MENU_DISABLE の組み合わせ(|)で、メニュー
  275. の状態を設定する。
  276. イベント処理ルーチンに渡される引数は選択された番号である。
  277. item0以下の引数はなくてもよい。
  278. 戻り値はMenuクラス。
  279. ----------------------------------------------------------------------------
  280.  
  281. function    MenuPosition( menu, pos )
  282. function    MenuPosition( pos )
  283. ----------------------------------------------------------------------------
  284. プルダウンメニューを設定する。
  285. menuのメニューをタイトルバーのpos番目(0~)に設定する。
  286. pos のみを指定した場合、pos 番目の Menu クラスを返す
  287. ----------------------------------------------------------------------------
  288.  
  289. function    PushMenu()
  290. ----------------------------------------------------------------------------
  291. メニューシステムをプッシュする。
  292. 階層的なプルダウンメニューシステムをつくる時に使用する。
  293. 階層は最大5レベル。
  294. ----------------------------------------------------------------------------
  295.  
  296. function    PopMenu()
  297. ----------------------------------------------------------------------------
  298. メニューシステムをポップする。
  299. 成功した場合はTRUE、失敗した場合はFALSEを返す
  300. ----------------------------------------------------------------------------
  301.  
  302. function    MenuItems( menu )
  303. ----------------------------------------------------------------------------
  304. メニューのアイテム数を返す。
  305. ----------------------------------------------------------------------------
  306.  
  307. function    InsertMenu( menu, pos, item, func, [query], [check,] )
  308. ----------------------------------------------------------------------------
  309. menu の pos 番目にアイテムを追加する。
  310. item はメニューの選択枝、func はイベント処理ルーチンを指定する。
  311. query はメニュー設定問い合わせ処理ルーチンを指定する。
  312. check は MENU_CHECK、MENU_DISABLE の組み合わせ(|)でメニューの状態を設定する。
  313. イベント処理ルーチンに渡される引数は選択された番号である。
  314. 戻り値はMenuクラス。
  315. ----------------------------------------------------------------------------
  316.  
  317. function    MenuTitle( menu )
  318. function    MenuTitle( menu, title )
  319. ----------------------------------------------------------------------------
  320. title 無指定時、menu のタイトル文字列を返す。
  321. title 指定時、menu のタイトル文字列を title に変更したものを返す。
  322. ----------------------------------------------------------------------------
  323.  
  324. function    MenuItem( menu, pos )
  325. function    MenuItem( menu, pos, item )
  326. function    MenuItem( item )
  327. ----------------------------------------------------------------------------
  328. title 無指定時、menu の pos 番目(0~)のアイテム文字列を返す。
  329. title 指定時、menu の pos 番目のアイテム文字列を item に変更したものを返す。
  330. itemのみ指定時、現在問い合わせ中のメニューアイテム文字列を item にする。
  331. 引数無指定時現在問い合わせ中のメニューアイテム文字列を返す。
  332. ----------------------------------------------------------------------------
  333.  
  334. function    MenuFunction( menu, pos )
  335. function    MenuFunction( menu, pos, func )
  336. function    MenuFunction( func )
  337. ----------------------------------------------------------------------------
  338. func 無指定時、menu の pos 番目(0~)の処理関数を返す。
  339. func 指定時、menu の pos 番目の処理関数を func に変更したものを返す。
  340. funcのみ指定時、現在問い合わせ中のメニューの処理関数を func にする。
  341. 引数無指定時現在問い合わせ中のメニューの処理関数チェック状態を返す。
  342. ----------------------------------------------------------------------------
  343.  
  344. function    MenuQuery( menu, pos )
  345. function    MenuQuery( menu, pos, func )
  346. ----------------------------------------------------------------------------
  347. title 無指定時、menu の pos 番目(0~)の問い合わせ関数を返す。
  348. title 指定時、menu の pos 番目の問い合わせ関数を func に変更したものを返す。
  349. ----------------------------------------------------------------------------
  350.  
  351. function    MenuEnable( menu, pos )
  352. function    MenuEnable( menu, pos, check )
  353. function    MenuEnable( check )
  354. function    MenuEnable( )
  355. ----------------------------------------------------------------------------
  356. check 無指定時、menu の pos 番目(0~)のチェック状態を返す。
  357. check 指定時、menu の pos 番目のチェック状態を check に変更したものを返す。
  358. check のみ指定時、現在問い合わせ中のメニューのチェック状態を check にする。
  359. 引数無指定時現在問い合わせ中のメニューのチェック状態を返す
  360. ----------------------------------------------------------------------------
  361.  
  362. 4.4.アトリビュートバッファ制御
  363.  
  364. function    AttrCurrent( [attrno] )
  365. ----------------------------------------------------------------------------
  366. attrno を指定しない場合、カレントアトリビュート番号を得る。
  367. attrno 指定時、カレントアトリビュート番号を変更し、元の番号を返す。
  368. 戻り値はINT
  369. ----------------------------------------------------------------------------
  370.  
  371. function    Attrs()
  372. ----------------------------------------------------------------------------
  373. 現在登録中のアトリビュート数を得る。
  374. 戻り値はINT
  375. ----------------------------------------------------------------------------
  376.  
  377. function    AttrAppend( name, code )
  378. ----------------------------------------------------------------------------
  379. アトリビュートを追加する。
  380. nameはアトリビュート名、codeはカラーコード(1-7)
  381. ----------------------------------------------------------------------------
  382.  
  383. function    AttrSearch( name )
  384. ----------------------------------------------------------------------------
  385. アトリビュートを検索する。
  386. nameはアトリビュート名、戻り値はINTでアトリビュート番号。
  387. ----------------------------------------------------------------------------
  388.  
  389. function    AttrChange( atrno )
  390. ----------------------------------------------------------------------------
  391. 選択されているポリゴンのアトリビュートを変更する。
  392. atrno はアトリビュート番号
  393. ----------------------------------------------------------------------------
  394.  
  395. function    AttrName( atrno )
  396. function    AttrName( atrno, name )
  397. ----------------------------------------------------------------------------
  398. アトリビュート番号atrnoのアトリビュート名を得る。
  399. nameを設定するとアトリビュート番号atrnoのアトリビュート名をnameに変更する。
  400. ----------------------------------------------------------------------------
  401.  
  402. function    AttrFile( atrno )
  403. function    AttrFile( atrno, file )
  404. ----------------------------------------------------------------------------
  405. アトリビュート番号atrnoのアトリビュートファイル名を得る。
  406. fileを設定するとアトリビュート番号atrnoの形状ファイル名をfileに変更する。
  407. ----------------------------------------------------------------------------
  408.  
  409. function    AttrCode( atrno )
  410. function    AttrCode( atrno, code )
  411. ----------------------------------------------------------------------------
  412. アトリビュート番号atrnoのカラーコードを得る。
  413. codeを設定するとアトリビュート番号atrnoのカラーコードをcodeに変更する。
  414. ----------------------------------------------------------------------------
  415.  
  416. function    AttrReadFile( filename [, mode] )
  417. ----------------------------------------------------------------------------
  418. アトリビュートファイルfilenameからアトリビュートを読み込む。
  419. 成功時はTRUE、失敗時はFALSE を返す。
  420. mode 無指定または ATTR_APPEND の時はもともとあった同名のアトリビュートの情報
  421. は失われる。ATTR_CREATE の時は、それとは別に同名のアトリビュートが作られる。
  422. ----------------------------------------------------------------------------
  423.  
  424. function    AttrDelete( atrno )
  425. ----------------------------------------------------------------------------
  426. アトリビュート番号atrnoのアトリビュートを削除する。
  427. 戻り値はBOOLEANで、FALSEの場合atrnoのポリゴンがあるため削除に失敗したことを
  428. 示す。
  429. ----------------------------------------------------------------------------
  430.  
  431. function    AttrPolygons( [atrno] )
  432. ----------------------------------------------------------------------------
  433. アトリビュート番号がatrnoのポリゴン数を返す。atrno 無指定時は全ポリゴン数。
  434. ----------------------------------------------------------------------------
  435.  
  436. function    AttrWriteFile( filename, atrno [, mode ] )
  437. ----------------------------------------------------------------------------
  438. アトリビュート番号 atrno のアトリビュートをファイル filename に出力する。
  439. modeをFILE_OVERWRITEにするとファイルが存在する場合はオーバーライトする。
  440. FILE_APPENDにするとファイルの最後に追加する。modeは省略可能で、省略した場合は
  441. FILE_OVERWRITEになる。
  442. ----------------------------------------------------------------------------
  443.  
  444. function    AttrCol( atrno [, col ] )
  445. function    AttrAmb( atrno [, col ] )
  446. function    AttrDif( atrno [, col ] )
  447. function    AttrTra( atrno [, col ] )
  448. function    AttrSpc( atrno [, col ] )
  449. function    AttrSize( atrno [, col ] )
  450. function    AttrRef( atrno [, col ] )
  451. function    AttrRfr( atrno [, col ] )
  452. function    AttrAtt( atrno [, col ] )
  453. ----------------------------------------------------------------------------
  454. アトリビュート番号 atrno の情報を設定・取得する。
  455. col は Vector クラスで各要素は 0 ~ 1 の値。
  456. ----------------------------------------------------------------------------
  457.  
  458. function    AttrMap( atrno [, type ] )
  459. ----------------------------------------------------------------------------
  460. アトリビュート番号 atrno のマッピングの有無を設定する。
  461. type は Boolean でマッピング有りの時 TRUE、無しの時 FALSE。
  462. ----------------------------------------------------------------------------
  463.  
  464. function    AttrMapFile( atrno [, file ] )
  465. ----------------------------------------------------------------------------
  466. アトリビュート番号 atrno のマッピング画像ファイルを設定、取得する。
  467. ----------------------------------------------------------------------------
  468.  
  469. function    GetAttrMapWind( atrno [, ary1, ary2 ] )
  470. function    GetAttrMapSize( atrno [, ary1, ary2 ] )
  471. ----------------------------------------------------------------------------
  472. アトリビュート番号 atrno のウィンドウ、サイズを取得する。
  473. ary1, ary2 は要素数2 の配列で、左上、右下の (u,v)が格納される。
  474. ----------------------------------------------------------------------------
  475.  
  476. function    SetAttrMapWind( atrno [, ary1, ary2 ] )
  477. function    SetAttrMapSize( atrno [, ary1, ary2 ] )
  478. ----------------------------------------------------------------------------
  479. アトリビュート番号 atrno のウィンドウ、サイズを設定る。
  480. ary1, ary2 は要素数2 の配列で、左上、右下の (u,v)を設定する。
  481. ----------------------------------------------------------------------------
  482.  
  483. 4.5.オブジェクト制御
  484.  
  485. function    ObjCurrent( [objno] )
  486. ----------------------------------------------------------------------------
  487. objno を指定しない場合、カレントオブジェクト番号を得る。
  488. objno 指定時、カレントオブジェクト番号を objno に変更し、元の番号を返す。
  489. 戻り値はINT
  490. ----------------------------------------------------------------------------
  491.  
  492. function    Objects()
  493. ----------------------------------------------------------------------------
  494. 現在登録されているオブジェクトの数を得る。
  495. 戻り値はINT
  496. ----------------------------------------------------------------------------
  497.  
  498. function    ObjAppend( name, file )
  499. ----------------------------------------------------------------------------
  500. アトリビュートを追加する。
  501. nameはオブジェクト名、fileは形状ファイル名。
  502. ----------------------------------------------------------------------------
  503.  
  504. function    ObjSearch( name )
  505. ----------------------------------------------------------------------------
  506. オブジェクトを検索する。
  507. nameはオブジェクト名、戻り値はINTでオブジェクト番号。
  508. ----------------------------------------------------------------------------
  509.  
  510. function    ObjChange( objno )
  511. ----------------------------------------------------------------------------
  512. 選択されているポリゴンのオブジェクト番号を変更する。
  513. objno はオブジェクト番号
  514. ----------------------------------------------------------------------------
  515.  
  516. function    ObjName( objno )
  517. function    ObjName( objno, name )
  518. ----------------------------------------------------------------------------
  519. オブジェクト番号objnoのオブジェクト名を得る。
  520. nameを設定するとオブジェクト番号objnoのオブジェクト名をnameに変更する。
  521. ----------------------------------------------------------------------------
  522.  
  523. function    ObjFile( objno )
  524. function    ObjFile( objno, file )
  525. ----------------------------------------------------------------------------
  526. オブジェクト番号objnoの形状ファイル名を得る。
  527. fileを設定するとオブジェクト番号objnoの形状ファイル名をfileに変更する。
  528. ----------------------------------------------------------------------------
  529.  
  530. function    ObjEdit( objno )
  531. function    ObjEdit( objno, Edit )
  532. ----------------------------------------------------------------------------
  533. オブジェクト番号objnoの変更フラグを得る。
  534. editはBOOLEANで設定するとオブジェクト番号objnoの変更フラグをeditに変更する。
  535. 変更フラグは形状バッファを変更した場合に自動的にTRUEになる。
  536. 変更フラグはオブジェクト選択ウインドウで確認できる。
  537. ----------------------------------------------------------------------------
  538.  
  539. function    ObjDelete( objno )
  540. ----------------------------------------------------------------------------
  541. オブジェクト番号objnoのアトリビュートを削除する。
  542. 戻り値はBOOLEANで、FALSEの場合objnoのポリゴンがあるため削除に失敗したことを
  543. 示す。
  544. ----------------------------------------------------------------------------
  545.  
  546. function    ObjPolygons( [objno] )
  547. ----------------------------------------------------------------------------
  548. オブジェクト番号がobjnoのポリゴン数を返す。objno 無指定時は全ポリゴン数。
  549. ----------------------------------------------------------------------------
  550.  
  551. 4.6.形状バッファ制御
  552.  
  553. function    Vertex( pos )
  554. function    Vertex( pos, vec )
  555. function    Vertex( pos, vec, u, v )
  556. function    Vertex( x, y, z )
  557. function    Vertex( x, y, z, vx, vy, vz )
  558. function    Vertex( x, y, z, vx, vy, vz, u, v )
  559. ----------------------------------------------------------------------------
  560. Vertexクラスを設定する。
  561. posはVectorクラスで3次元座標、vecはVectorクラスで法線ベクトル、(x, y, z)は
  562. 頂点の3次元座標、(vx, vy, vz)は法線ベクトル、(u, v)はマッピング座標である。
  563. 戻り値はVertexクラス。
  564. ----------------------------------------------------------------------------
  565.  
  566. function    Position( ver [, ary ] )
  567. ----------------------------------------------------------------------------
  568. Vertexクラスverの3次元座標を読み出す。
  569. aryにサイズが3以上の配列変数を設定し、(x, y, z)が格納される。
  570. aryを省略した場合は戻り値のVectorクラスに座標が設定される。
  571. ----------------------------------------------------------------------------
  572.  
  573. function    Vector( ver [, ary ] )
  574. ----------------------------------------------------------------------------
  575. Vertexクラスverの法線ベクトルを読み出す。
  576. aryにサイズが3以上の配列変数を設定し、(vx, vy, vz)が格納される。
  577. aryを省略した場合は戻り値のVectorクラスに法線ベクトルが設定される。
  578. ----------------------------------------------------------------------------
  579.  
  580. function    Mapping( ver, ary )
  581. ----------------------------------------------------------------------------
  582. Vertexクラスverのマッピング座標を読み出す。
  583. aryにサイズが2以上の配列変数を設定し、(u, v)が格納される。
  584. ----------------------------------------------------------------------------
  585.  
  586. function    PolySetVertex( ver, no )
  587. ----------------------------------------------------------------------------
  588. 頂点データをカレントポリゴン(現在編集中のポリゴン)に設定する。
  589. verはVertexクラス、noは頂点番号。
  590. ----------------------------------------------------------------------------
  591.  
  592. function    PolyGetVertex( no )
  593. ----------------------------------------------------------------------------
  594. 頂点データをカレントポリゴンから読み出す。
  595. noは頂点番号、戻り値はVertexクラス。
  596. ----------------------------------------------------------------------------
  597.  
  598. function    PolyInsVertex( ver, no )
  599. ----------------------------------------------------------------------------
  600. 頂点データをカレントポリゴンに挿入する。
  601. verはVertexクラス、noは頂点番号。
  602. no 以降の頂点は番号が一つ増える。
  603. ----------------------------------------------------------------------------
  604.  
  605. function    PolyDelVertex( no )
  606. ----------------------------------------------------------------------------
  607. 頂点データをカレントポリゴンから削除する。
  608. noは頂点番号。no より後の頂点は番号が一つ減る。
  609. ----------------------------------------------------------------------------
  610.  
  611. function    PolyVertexs()
  612. function    PolyVertexs( vers )
  613. ----------------------------------------------------------------------------
  614. カレントポリゴンの頂点数を設定する。
  615. versはINTで頂点数
  616. 戻り値はINTで頂点数
  617. ----------------------------------------------------------------------------
  618.  
  619. function    PolyType()
  620. function    PolyType( type )
  621. ----------------------------------------------------------------------------
  622. カレントポリゴンのデータタイプを設定する。
  623. データタイプはPOLY_SIMPLE, POLY_SHADE, POLY_UV, POLY_UVSHADEの中から選択する。
  624. 戻り値はINTでデータタイプ
  625. ----------------------------------------------------------------------------
  626.  
  627. function    PolyAttr( atrno )
  628. ----------------------------------------------------------------------------
  629. カレントポリゴンのアトリビュート番号を設定する。
  630. atrnoはINTでアトリビュート番号。
  631. 戻り値はINTでアトリビュート番号。
  632. ----------------------------------------------------------------------------
  633.  
  634. function    PolyObj( objno )
  635. ----------------------------------------------------------------------------
  636. カレントポリゴンのオブジェクト番号を設定する。
  637. objnoはINTでオブジェクト番号。
  638. 戻り値はINTでオブジェクト番号。
  639. ----------------------------------------------------------------------------
  640.  
  641. function    PolyAppend( [flag] )
  642. ----------------------------------------------------------------------------
  643. カレントポリゴンをポリゴンバッファに登録する。
  644. flagを指定し、flag TRUE の場合、追加したポリゴンは選択状態にある。
  645. ----------------------------------------------------------------------------
  646.  
  647. --- obsolute
  648. function    PolyLoad()
  649. ----------------------------------------------------------------------------
  650. 選択されているポリゴンを順にカレントポリゴンに取り込む。
  651. 戻り値はBOOLEANで正常に取り込んだ場合はTRUEを、選択されているポリゴンはない場
  652. 合、または最後の選択ポリゴンまで読み込んでしまっていた場合はFALSEを返す。
  653. ----------------------------------------------------------------------------
  654. ---
  655. function    PolyLoad()
  656. function    PolyLoad( PolyID )
  657. function    PolyLoad( sel, pos )
  658. ----------------------------------------------------------------------------
  659. 選択されているポリゴンを順にカレントポリゴンに取り込む。
  660. 戻り値は INT で正常に取り込んだ場合はポリゴンIDを、選択されているポリゴンが
  661. ない場合、または最後の選択ポリゴンまで読み込んでしまっていた場合は 0 を返す。
  662. PolyID 指定時はそのポリゴンをカレントポリゴンに取り込む。
  663. sel, pos 指定時には Select クラス sel の pos 番目(0~)を取り込む。
  664. ----------------------------------------------------------------------------
  665.  
  666. function    PolySave()
  667. ----------------------------------------------------------------------------
  668. PolyLoad関数で取り込んだポリゴンデータをポリゴンバッファに戻す。
  669. 取り込んでからデータを変更しなかった場合は、PolySave関数は呼ばなくてもよい。
  670. ----------------------------------------------------------------------------
  671.  
  672. function    PolyDelete()
  673. function    PolyDelete( sel )
  674. ----------------------------------------------------------------------------
  675. 現在選択中のポリゴンを削除する。
  676. selクラスで選択されているポリゴンを削除する。
  677. ----------------------------------------------------------------------------
  678.  
  679. function    PolyMove( mat )
  680. ----------------------------------------------------------------------------
  681. 現在選択中のポリゴンを移動する。
  682. matは行列クラスで頂点データにmatを掛ける。
  683. 法線ベクトルには MatTra(MatInv(mat)) を掛ける。
  684. ----------------------------------------------------------------------------
  685.  
  686. function    PolyInvisible( sw )
  687. ----------------------------------------------------------------------------
  688. 不可視属性を制御する。
  689. swがTRUEの場合は選択されているポリゴン以外を不可視属性にし、swがFALSEの場合は
  690. 不可視属性のポリゴンを可視属性にする。
  691. ----------------------------------------------------------------------------
  692.  
  693. function    PolyVertex( ver [,view] )
  694. ----------------------------------------------------------------------------
  695. 最近頂点を検索する。
  696. verはVertexクラス、戻り値もVertexクラス。
  697. view 指定時(WIN_XY,WIN_YZ,WIN_ZX)には、その平面での最近点。
  698. ----------------------------------------------------------------------------
  699.  
  700. function    PolyPlane( ver, win, v0, v1, v2 )
  701. ----------------------------------------------------------------------------
  702. 平面投射する。
  703. verはVertexクラス、winは投射する平面でWIN_XY, WIN_YZ, WIN_ZXから選択する。
  704. v0, v1, v2は投射される平面を示すための3頂点でVertexクラス。
  705. ----------------------------------------------------------------------------
  706.  
  707. function    ReadFile( filename [, mode] )
  708. ----------------------------------------------------------------------------
  709. 形状ファイルfilenameから形状データを読み込む。
  710. 読み込んだポリゴンは選択状態になる。
  711. 戻り値はオブジェクト番号(ひとつのファイルに複数のオブジェクトが存在した場合
  712. は最後に読み込んだオブジェクトの番号)。
  713. 失敗時は -1 を返す。
  714. mode 無指定または OBJ_APPEND の時は、同名のオブジェクトが存在する場合、その
  715. オブジェクトに追加する。OBJ_CREATE の時は、それとは別に同名のオブジェクトが
  716. 作られる。
  717. ----------------------------------------------------------------------------
  718.  
  719. function    WriteFile( objno [, mode ] )
  720. ----------------------------------------------------------------------------
  721. 形状ファイルに選択されているポリゴンの形状データを書き出す。
  722. objnoはオブジェクト番号を設定し、そのオブジェクトのオブジェクト名で形状ファイ
  723. ル名のファイルに書き出す。
  724. modeはファイルのアクセスモードである。
  725. modeをFILE_OVERWRITEにするとファイルが存在する場合はオーバーライトする。
  726. FILE_APPENDにするとファイルの最後に追加する。modeは省略可能で、省略した場合は
  727. FILE_OVERWRITEになる。
  728. 書き出されるポリゴンはすべての選択ポリゴンであり、設定されたオブジェクトに属
  729. するポリゴンだけではない。
  730. 成功時はTRUE、失敗時はFALSE を返す。
  731. ----------------------------------------------------------------------------
  732.  
  733. function    FrmReadFile( filename [, searchdir [, mode]] )
  734. function    FrmReadFile( filename, mode )
  735. ----------------------------------------------------------------------------
  736. フレームファイルfilenameから形状データを読み込む。
  737. フレームファイル中の obj は同名の形状ファイルを searchdir から読み込む。
  738. 読み込んだポリゴンは選択状態になる。
  739. 戻り値はオブジェクト番号(ひとつのファイルに複数のオブジェクトが存在した場合
  740. は最後に読み込んだオブジェクトの番号)。
  741. 失敗時は -1 を返す。
  742. mode 無指定または OBJ_APPEND の時は、同名のオブジェクトが存在する場合、その
  743. オブジェクトに追加する。OBJ_CREATE の時は、それとは別に同名のオブジェクトが
  744. 作られる。
  745. ----------------------------------------------------------------------------
  746.  
  747. function    PolyShade( sw )
  748. ----------------------------------------------------------------------------
  749. swがOFFの場合は選択されているポリゴンの法線ベクトルを削除する。
  750. swがONの場合は選択されているポリゴンにスムーズな法線ベクトルを生成する。
  751. swがNORMAL_CREATEの場合は各ポリゴンに、そのポリゴンに垂直な法線を生成する。
  752. ----------------------------------------------------------------------------
  753.  
  754. function    PolyShadeInv()
  755. ----------------------------------------------------------------------------
  756. 選択されているポリゴンの法線ベクトルを反転する。
  757. ----------------------------------------------------------------------------
  758.  
  759. function    PolyMap( sw )
  760. function    PolyMap( sw, mat )
  761. ----------------------------------------------------------------------------
  762. swがTRUEの場合は選択されているポリゴンのマッピング座標を生成する。
  763. swがFALSEの場合は選択されているポリゴンのマッピング座標を削除する。
  764. matは行列クラスでマッピングへの変換行列である。
  765. 各頂点の3次元座標をmatに従って変換した後の( x, y )が( u, v )になる。
  766. ----------------------------------------------------------------------------
  767.  
  768. function    PolyShiftVertex( no )
  769. ----------------------------------------------------------------------------
  770. no 番の頂点が0番になるようにカレントポリゴンの頂点番号をずらす。
  771. ----------------------------------------------------------------------------
  772.  
  773. function    PolyInvVertex( )
  774. ----------------------------------------------------------------------------
  775. カレントポリゴンの頂点のならびを逆順にする。
  776. ----------------------------------------------------------------------------
  777.  
  778. function    PolyVector( [flag] )
  779. ----------------------------------------------------------------------------
  780. カレントポリゴンの法線ベクトル(左回りが表)を得る。
  781. flag がTRUEの場合、法線ベクトルを計算し直す。
  782. ----------------------------------------------------------------------------
  783.  
  784.  
  785.  
  786. 4.7.ポリゴン選択制御
  787.  
  788. function    SelectPolygons()
  789. function    SelectPolygons( sel )
  790. ----------------------------------------------------------------------------
  791. 選択しているポリゴンの数を得る。
  792. 戻り値はINT
  793. ----------------------------------------------------------------------------
  794.  
  795. function    SelectAll( flag [, sw ] )
  796. ----------------------------------------------------------------------------
  797. すべてのポリゴンを選択する。
  798. flagはBOOLEANでTRUEの場合はすべてのポリゴンを選択状態にし、FALSEの場合はすべ
  799. てのポリゴンの選択を解除する。
  800. swは SELECT_UPDATE, SELECT_AND, SELECT_OR, SELECT_XOR のいずれかですでに選択
  801. されているポリゴン集合と新たに選択されたポリゴン集合とで行われる論理演算の種
  802. 類を設定する。swを省略した場合は SELECT_UPDATE が選択されているのと同じ。
  803. ----------------------------------------------------------------------------
  804.  
  805. function    SelectArea( flag, sw, ver1, ver2 )
  806. ----------------------------------------------------------------------------
  807. 直方体で領域指定してポリゴンを選択する。
  808. flagはBOOLEAN型で、TRUEの場合は領域内のポリゴンを選択状態にする。FALSEの場合
  809. は領域内のポリゴンの選択を解除する。
  810. swは SELECT_UPDATE, SELECT_AND, SELECT_OR, SELECT_XOR のいずれかですでに選択
  811. されているポリゴン集合と新たに選択されたポリゴン集合とで行われる論理演算の種
  812. 類を設定する。さらに、SELECT_ALL, SELECT_SUBの選択も可能。
  813. pos1, pos2はVertexクラスで領域指定する直方体の対角線の頂点を設定する。
  814. ----------------------------------------------------------------------------
  815.  
  816. function    SelectPers( flag, sw, x1, y1, x2, y2 )
  817. ----------------------------------------------------------------------------
  818. 透視図上の長方形で領域指定してポリゴンを選択する。
  819. flag, swの意味はSelectArea関数と同じ。x1, y1, x2, y2 は領域指定する長方形の対
  820. 角線の頂点を設定する。
  821. ----------------------------------------------------------------------------
  822.  
  823. function    SelectAttr( atrno, flag, sw )
  824. ----------------------------------------------------------------------------
  825. アトリビュート番号がatrnoのポリゴンを選択する。
  826. flag, swの意味はSelectArea関数と同じ。
  827. ----------------------------------------------------------------------------
  828.  
  829. function    SelectObj( obj, flag, sw )
  830. ----------------------------------------------------------------------------
  831. オブジェクト番号がobjnoのポリゴンを選択する。
  832. flag, swの意味はSelectArea関数と同じ。
  833. ----------------------------------------------------------------------------
  834.  
  835. function    SelectBox( ary )
  836. ----------------------------------------------------------------------------
  837. 選択されているポリゴンの座標最小値、最大値を得る。
  838. aryはサイズが2以上の配列で最小値と最大値の頂点データが格納される。
  839. ----------------------------------------------------------------------------
  840.  
  841. function    Select()
  842. function    Select( sel )
  843. ----------------------------------------------------------------------------
  844. ポリゴン選択状態を得る。戻り値はSelectクラス。
  845. selはSelectクラスでselを設定した場合はselの選択状態を設定する。
  846. ----------------------------------------------------------------------------
  847.  
  848. function    SelectCurrent()
  849. ----------------------------------------------------------------------------
  850. カレントポリゴン(PolyLoad中のポリゴン)を選択したSelectクラスを返す。
  851. ----------------------------------------------------------------------------
  852.  
  853. function    SelectAdjoint( sel )
  854. ----------------------------------------------------------------------------
  855. 選択ポリゴンに隣接するポリゴンのSelectクラスを返す。
  856. ----------------------------------------------------------------------------
  857.  
  858.  
  859. 4.8.表示制御
  860.  
  861. function    MouseWindow()
  862. ----------------------------------------------------------------------------
  863. マウスのあるウインドウを読み出す。
  864. 戻り値はINTで、WIN_XY, WIN_YZ, WIN_ZX、WIN_PERSのいずれか
  865. ----------------------------------------------------------------------------
  866.  
  867. function    Cursor()
  868. function    Cursor( ver )
  869. ----------------------------------------------------------------------------
  870. 3Dカーソル位置を読み出す。
  871. verを設定した場合は3Dカーソル位置を設定する。
  872. verはVertexまたはVectorクラスで戻り値はVertexクラス。
  873. ----------------------------------------------------------------------------
  874.  
  875. function    Cursor2D( ary )
  876. ----------------------------------------------------------------------------
  877. 2Dカーソル(透視図上のカーソル)位置を読み出す。
  878. aryはサイズが2以上の配列でカーソルのX座標とY座標が格納される。
  879. ----------------------------------------------------------------------------
  880.  
  881. function    Update( sw [, win] )
  882. ----------------------------------------------------------------------------
  883. 3面図を再描画する。
  884. swはCLEARまたはOVERWRITE
  885.  
  886. viewは WIN_XY, WIN_YZ, WIN_ZX, WIN_PERS の組み合わせ(|)で、win が指定
  887. された場合はその面のみを再描画する。
  888. ----------------------------------------------------------------------------
  889.  
  890. function    UpdatePers( sw )
  891. ----------------------------------------------------------------------------
  892. 透視図を再描画する。
  893. swはCLEARまたはOVERWRITE
  894. ----------------------------------------------------------------------------
  895.  
  896. function    DrawCurrent( [flag] )
  897. ----------------------------------------------------------------------------
  898. カレントポリゴンを表示する。
  899. flag指定時、 flag が TRUE の場合 選択色で、FALSE の場合ライン色で描画する。
  900. ----------------------------------------------------------------------------
  901.  
  902. function    DrawLine( v1, v2 [, color] )
  903. ----------------------------------------------------------------------------
  904. 3面図にラインを表示する。
  905. v1とv2はVertexクラスで、ラインの端点を設定する。
  906. ----------------------------------------------------------------------------
  907.  
  908. function    DrawLine2D( x1, y1, x2, y2 )
  909. ----------------------------------------------------------------------------
  910. 透視図にラインを表示する。
  911. x1,y1,x2,y2はINTで、ラインの端点を設定する。
  912. ----------------------------------------------------------------------------
  913.  
  914. function    DrawBox( v1, v2 )
  915. function    DrawBox( v1, v2, mat )
  916. ----------------------------------------------------------------------------
  917. 3面図に直方体を表示する。
  918. v1, v2はVertexクラスで表示する直方体の対角線の頂点を設定する。
  919. matは行列クラスで直方体を拡大縮小、回転、移動するときに設定する。
  920. ----------------------------------------------------------------------------
  921.  
  922. function    DrawBox2D( x1, y1, x2, y2 )
  923. ----------------------------------------------------------------------------
  924. 透視図に長方形を表示する。
  925. x1,y1,x2,y2はINTで、長方形の対角線の頂点を設定する。
  926. ----------------------------------------------------------------------------
  927.  
  928. function    Clear()
  929. ----------------------------------------------------------------------------
  930. 3面図をクリアする。
  931. クリアされるのはDrawLine, DrawLine2D, DrawBox, DrawBox2D関数で描いた図形のみ
  932. で形状バッファの内容を反映する図形はクリアされない。
  933. ----------------------------------------------------------------------------
  934.  
  935. function    SetWindow( win )
  936. ----------------------------------------------------------------------------
  937. 表示ウインドウを設定する。
  938. winはWIN_XY, WIN_YZ, WIN_ZX、WIN_PERS、WIN_ALLのいずれかを選択する。
  939. ----------------------------------------------------------------------------
  940.  
  941. function    Window( [win] )
  942. ----------------------------------------------------------------------------
  943. 表示ウインドウを設定する。
  944. winはWIN_XY, WIN_YZ, WIN_ZX、WIN_PERS、WIN_ALLのいずれかを選択する。
  945. win 無指定時は現在の表示ウィンドウを返す。
  946. ----------------------------------------------------------------------------
  947.  
  948. function    VisibleVector( length )
  949. ----------------------------------------------------------------------------
  950. 透視図に法線ベクトルを表示する。
  951. lengthはINTで法線ベクトル長を設定する。0にすると法線ベクトルは表示されない。
  952. 戻り値は現在設定されているベクトル長。
  953. ----------------------------------------------------------------------------
  954.  
  955. function    VisiblePolyVector( length )
  956. ----------------------------------------------------------------------------
  957. 透視図に面の法線ベクトル(左回りが表)を表示する。
  958. lengthはINTで法線ベクトル長を設定する。0にすると法線ベクトルは表示されない。
  959. 戻り値は現在設定されているベクトル長。
  960. ----------------------------------------------------------------------------
  961.  
  962. function    VisibleVertex( radius )
  963. ----------------------------------------------------------------------------
  964. 頂点を表示する。
  965. radiusはINTで頂点の半径を設定する。0にすると頂点は表示されない。
  966. 戻り値は現在設定されている半径。
  967. ----------------------------------------------------------------------------
  968.  
  969. function    Draw( radius )
  970. ----------------------------------------------------------------------------
  971. 頂点を表示する。
  972. radiusはINTで頂点の半径を設定する。0にすると頂点は表示されない。
  973. 戻り値は現在設定されている半径。
  974. ----------------------------------------------------------------------------
  975.  
  976. function    Center( x, y, z )
  977. ----------------------------------------------------------------------------
  978. 図面中心の3次元座標値を設定する。
  979. 引数がなければ現在の図面中心座標値を返す。
  980. ----------------------------------------------------------------------------
  981.  
  982. function    SetZoom( zoom, move )
  983. ----------------------------------------------------------------------------
  984. 図面のズーム値とスクロール時の移動量を設定する。
  985. zoomはINT型で縮小倍数を指定する。
  986. moveはINT型で移動量を設定する。
  987. moveは省略可能で省略するとzoomに応じた適当な値を自動設定する。
  988. ----------------------------------------------------------------------------
  989.  
  990. function    SetPers( mat )
  991. ----------------------------------------------------------------------------
  992. 透視図の変換行列を設定する。
  993. matは行列クラス。
  994. ----------------------------------------------------------------------------
  995.  
  996. function    SetGrid( disp, cur )
  997. ----------------------------------------------------------------------------
  998. グリッドを設定する。
  999. dispはINT型で表示グリッドの間隔を設定する。
  1000. curはINT型でカーソル移動量の間隔を設定する。
  1001. ----------------------------------------------------------------------------
  1002.  
  1003. function    SetConv( mat )
  1004. ----------------------------------------------------------------------------
  1005. 基準座標系を変更する。
  1006. matは行列クラスで、matに指定されたように座標系が変換される。
  1007. ----------------------------------------------------------------------------
  1008.  
  1009. function    PersAngle( [angle] )
  1010. ----------------------------------------------------------------------------
  1011. 透視図の画角を angle 度に設定する。
  1012. 現在設定中の画角を返す。
  1013. ----------------------------------------------------------------------------
  1014.  
  1015. function    ViewWidth( win )
  1016. ----------------------------------------------------------------------------
  1017. 表示幅を返す。win は WIN_XY~WIN_PERS。
  1018. ----------------------------------------------------------------------------
  1019.  
  1020. function    ViewHeight( win )
  1021. ----------------------------------------------------------------------------
  1022. 表示高を返す。win は WIN_XY~WIN_PERS。
  1023. ----------------------------------------------------------------------------
  1024.  
  1025. function    DrawInvisible( flag )
  1026. ----------------------------------------------------------------------------
  1027. Invisible 設定のポリゴンを表示するかどうか設定する。
  1028. TRUE のとき、暗水色で描く。FALSEのときは描画しない。
  1029. 現在の設定をかえす。
  1030. ----------------------------------------------------------------------------
  1031.  
  1032. function    DrawFrontOnly( flag )
  1033. ----------------------------------------------------------------------------
  1034. 裏面(左回りが表)を描かないかどうか設定する。
  1035. TRUE のときは表のみ描く。FALSEのときは両面とも描く。
  1036. 現在の設定をかえす。
  1037. ----------------------------------------------------------------------------
  1038.  
  1039. function    ViewCursor( flag )
  1040. ----------------------------------------------------------------------------
  1041. カーソルを表示するかどうかを設定する。
  1042. ON のとき表示する。OFF のときは表示しない。
  1043. 現在の設定をかえす。
  1044. ----------------------------------------------------------------------------
  1045.  
  1046.  
  1047. 4.9.ダイヤログウインドウ制御
  1048.  
  1049. function    DlogOpen( title, fields [, sw] )
  1050. function    DlogOpen( title, fields, button1 [, button2, ... ] )
  1051. ----------------------------------------------------------------------------
  1052. ダイヤログウインドウをオープンする。
  1053. titleは文字列クラスでタイトル名を設定する。
  1054. fieldsはINTでフィールド数を設定する。
  1055. sw無指定、sw=TRUE, sw = 1 →[決定] [中止]
  1056. sw = 0 →確認
  1057. button1, button2 ... 終了ボタンの文字列(表示は右から)
  1058. ----------------------------------------------------------------------------
  1059.  
  1060. function    DlogMessage( field, msg )
  1061. ----------------------------------------------------------------------------
  1062. ダイヤログウインドウにメッセージを表示する。
  1063. fieldはINTで表示するフィールド番号、msgは文字列クラスで表示するメッセージを設
  1064. 定する。
  1065. ----------------------------------------------------------------------------
  1066.  
  1067. function    DlogString( field, msg, buf, maxcols [, ext, ...])
  1068. ----------------------------------------------------------------------------
  1069. ダイヤログウインドウに文字列入力フィールドを設定する。
  1070. fieldはフィールド番号、msgはメッセージ、bufはデフォルトの文字列、maxcolsは最
  1071. 大文字数を設定する。bufは""でもよい。
  1072. ext はファイル入力ダイアログの選択拡張子指定(例:"形状ファイル(*.suf)")。
  1073. ----------------------------------------------------------------------------
  1074.  
  1075. function    DlogToggle( field, msg, name, sw )
  1076. ----------------------------------------------------------------------------
  1077. ダイヤログウインドウにトグルスイッチを設定する。
  1078. fieldはフィールド番号、msgはメッセージ、nameはスイッチの名前、swはデフォルト
  1079. のスイッチ状態を設定する。
  1080. ----------------------------------------------------------------------------
  1081.  
  1082. function    DlogSelect( field, msg, item, no )
  1083. ----------------------------------------------------------------------------
  1084. ダイヤログウインドウに選択スイッチを設定する。
  1085. fieldはフィールド番号、msgはメッセージ、itemはスイッチ名の配列、noはデフォル
  1086. トで選択されているスイッチ番号を設定する。
  1087. ----------------------------------------------------------------------------
  1088.  
  1089. function    DlogSlider( field, msg, size, step, pos, func )
  1090. ----------------------------------------------------------------------------
  1091. ダイヤログウインドウにスライドスイッチを設定する。
  1092. fieldはフィールド番号、msgはメッセージ、sizeはスイッチのサイズ、step はスイ
  1093. ッチのステップ数、posはスイッチの初期位置、funcはスイッチ位置の変換関数を設
  1094. 定する。
  1095. funcに設定する関数は引数にINTを受け取りINTを返さなければならない。
  1096. ----------------------------------------------------------------------------
  1097.  
  1098. function    DlogWait()
  1099. ----------------------------------------------------------------------------
  1100. ダイヤログウインドウの入力待ち状態に入る。
  1101. 戻り値はINTで選択した終了状態を示す
  1102. sw 無し、sw == 1 -> 決定: 1  中止, ESC: 0, RET:
  1103. sw == 0          -> 確認: 1  ESC: 0
  1104. 文字列指定       -> 右から 0, 1, 2 ...
  1105. ----------------------------------------------------------------------------
  1106.  
  1107. function    DlogAnswer( field )
  1108. ----------------------------------------------------------------------------
  1109. ダイヤログウインドウの入力状態を得る。
  1110. fieldが示すフィールド番号の位置が文字列入力フィールドだった場合は入力文字列を、
  1111. 選択スイッチだった場合はINTを、トグルスイッチだった場合はBOOLEANを、スライド
  1112. スイッチだった場合はスイッチの位置を返す。
  1113. ----------------------------------------------------------------------------
  1114.  
  1115. function    DlogFileOpen( title, name, ext [, ext ...] )
  1116. ----------------------------------------------------------------------------
  1117. ファイル名入力ダイアログを開く
  1118. titleは文字列クラスでタイトル名を設定する。name はデフォルト文字列。
  1119. ext はファイル入力ダイアログの選択拡張子指定(例:"形状ファイル(*.suf)")。
  1120. 入力したファイル名を返す。
  1121. ----------------------------------------------------------------------------
  1122.  
  1123. 4.10.ユーザーボタン制御
  1124.  
  1125. function    CreateButton( x, y, title, func [, enable] )
  1126. function    CreateButton( x, y, bitmap, func [, enable] )
  1127. ----------------------------------------------------------------------------
  1128. ユーザーボタンを作成する。
  1129. 位置は(x,y)で、表示はタイトル文字列(title)または64桁の16進文字列(bitmap)
  1130. で指定する。ボタンが押された時はイベント処理ルーチン func が呼び出される。
  1131. enable は BUTTON_ENABLE, BUTTON_REPEAT の組み合わせ(|)。
  1132. 重なる位置にあったボタンは削除される。
  1133. 返り値はボタンID。
  1134. ----------------------------------------------------------------------------
  1135.  
  1136. function    UpdateButton( [buttonid] )
  1137. ----------------------------------------------------------------------------
  1138. ユーザーボタンを表示する。 CreateButton 後は必ず実行すること。
  1139. 引数無指定時は全ボタン、引数指定時はそのボタンを表示する。
  1140. ----------------------------------------------------------------------------
  1141.  
  1142. function    ClearButton()
  1143. ----------------------------------------------------------------------------
  1144. ユーザーボタンをすべて削除する。
  1145. ----------------------------------------------------------------------------
  1146.  
  1147. function    ButtonArea( [width] )
  1148. ----------------------------------------------------------------------------
  1149. ユーザーボタン領域の幅を設定する。
  1150. ユーザーボタン領域の幅を返す。
  1151. ----------------------------------------------------------------------------
  1152.  
  1153. function    ButtonEnable( buttonid, enable )
  1154. function    ButtonEnable( buttonid )
  1155. ----------------------------------------------------------------------------
  1156. ボタンの有効無効を設定する。
  1157. enable 無指定時は現在の設定を返す。
  1158. ----------------------------------------------------------------------------
  1159.  
  1160.  
  1161. 4.11.エッジ処理
  1162.  
  1163. function    Edge( [ver1, ver2] )
  1164. ----------------------------------------------------------------------------
  1165. 引数が無い場合は空集合Edgeデータを返す。
  1166. 引数指定時は (ver1, ver2):1 というEdgeデータを返す。
  1167. ----------------------------------------------------------------------------
  1168.  
  1169. function    EdgeSelect( [edge, flag, sw] )
  1170. ----------------------------------------------------------------------------
  1171. 引数が無い場合は現在の選択ポリゴンに含まれる全エッジの集合を返す。
  1172. 引数指定時は、edge の各要素を含むポリゴンを選択する。flag, swの意味は
  1173. SelectArea関数と同じ。
  1174. ----------------------------------------------------------------------------
  1175.  
  1176. function    Edges( edge )
  1177. ----------------------------------------------------------------------------
  1178. 要素数を返す。
  1179. ----------------------------------------------------------------------------
  1180.  
  1181. function    EdgeGetVertex( edge, pos, ary )
  1182. ----------------------------------------------------------------------------
  1183. edge のpos番目(0~)の要素を ary[0]、ary[1] に返す。
  1184. ----------------------------------------------------------------------------
  1185.  
  1186. function    EdgeGetCount( edge, ver1, ver2 )
  1187. function    EdgeGetCount( edge, pos )
  1188. ----------------------------------------------------------------------------
  1189. edge の pos番目(0~)、もしくは (ver1, ver2) 要素の出現回数を返す。
  1190. 存在しない場合は 0 を返す。
  1191. ----------------------------------------------------------------------------
  1192.  
  1193. function    EdgeVertex( edge, ver )
  1194. ----------------------------------------------------------------------------
  1195. edge からどちらかの座標が ver である要素だけを抽出する。戻り値は Edge クラス
  1196. ----------------------------------------------------------------------------
  1197.  
  1198. function    EdgeSelectCount( edge, begin [, end] )
  1199. ----------------------------------------------------------------------------
  1200. edge から出現回数が begin 以上、[end以下] の要素を抽出する。
  1201. ----------------------------------------------------------------------------
  1202.  
  1203. function    DrawEdge( edge [, color] )
  1204. ----------------------------------------------------------------------------
  1205. edge に含まれる全エッジを描画する。
  1206. ----------------------------------------------------------------------------
  1207.  
  1208.  
  1209. 4.11.頂点集合処理
  1210.  
  1211. function    VertexSet( [ver] )
  1212. ----------------------------------------------------------------------------
  1213. 引数が無い場合は空集合VertexSetデータを返す。
  1214. 引数指定時はそれを要素に持つVertexSetデータを返す。
  1215. ----------------------------------------------------------------------------
  1216.  
  1217. function    VertexSelect( [verset, flag, sw] )
  1218. ----------------------------------------------------------------------------
  1219. 引数が無い場合は現在の選択ポリゴンに含まれる全頂点の集合を返す。
  1220. 引数指定時は、edge の各要素を含むポリゴンを選択する。flag, swの意味は
  1221. SelectArea関数と同じ。
  1222. ----------------------------------------------------------------------------
  1223.  
  1224. function    VertexPositionVertex( verset )
  1225. ----------------------------------------------------------------------------
  1226. verset から法線、UV を削除した頂点集合を返す。
  1227. ----------------------------------------------------------------------------
  1228.  
  1229. function    VertexSelectPosition( verset, ver )
  1230. ----------------------------------------------------------------------------
  1231. verset の中から ver と同じ座標の頂点集合を返す。
  1232. ver は Vertex もしくは Vecror クラス。
  1233. ----------------------------------------------------------------------------
  1234.  
  1235. function    Vertexs( verset )
  1236. ----------------------------------------------------------------------------
  1237. 要素数を返す。
  1238. ----------------------------------------------------------------------------
  1239.  
  1240. function    VertexGetVertex( verset, pos )
  1241. function    VertexGetVertex( verset, ver )
  1242. ----------------------------------------------------------------------------
  1243. verset のpos番目(0~)の要素を返す。
  1244. ver が verset の何番目の要素かを返す。無い場合は-1。
  1245. ----------------------------------------------------------------------------
  1246.  
  1247. function    DrawVertex( verset [, color] )
  1248. ----------------------------------------------------------------------------
  1249. verset に含まれる全頂点を描画する。
  1250. ----------------------------------------------------------------------------
  1251.  
  1252.