APA01 2015513 1

50 %
50 %
Information about APA01 2015513 1

Published on June 28, 2016

Author: WataruShiraishi

Source: slideshare.net

1. APA スペシャルWebセミナー【プログラミング編】 『VectorScript実践セミナー』 第3回【ファイル入出力、レコード】 2015年5月13日 (株) 治郎吉商店 白石 亘

2. VectorScriptとは? VectorScript は、Vectorworks のソフトウェアパッケージ に含まれるスクリプト言語です。軽量なプログラミング 言語であ る VectorScript の構文は Pascal と似ており、Pascal の プログラム要素を多く取り入れています。 VectorScript は実際、Pascal 言語の「スーパーセット」 として、Pascal の基本機能に Vectorworks CAD エンジ ンの機能にアクセスするための各種 API(アプリケーシ ョンプログラミングインターフェース)を加えて拡張し たものです。 VectorScript Language Guideから抜粋

3. 資料 • VectorScript Language Guide • http://www.aanda.co.jp/develop/VS/index.html • VectorScript Function Reference • VectorWorksフォルダに入っている • サイト • http://developer.vectorworks.net/index.php/Ve ctorScript/ja これだけです。

4. 資料を開いてみよう • VectorScript Language Guide • http://www.aanda.co.jp/develop/VS/index.ht ml • VectorScript Function Reference • サイト • VectorWorksフォルダにも入っている

5. 全3回の内容 • 第1回 • プログラムの基本形 • 変数とデータ型 • 論理構造 • 図形を作成 • 第2回 • 図形情報とハンドル • ハンドル移動ルーチン • 無限ループ • 第3回 • ファイル入出力 • レコード

6. 目標 サイト: http://developer.vectorworks.net/index.php/Main_Page 多くのコマンドがあります、同じ機能を実現するのにいくつ かの方法があります。そんな中で、私らのコードは結構パタ ーン化されています。よく使うコードパターンがあって、そ れらを組み合わせて使うことで多くの機能を実現することが できます。 基本となるコードパターンを覚えて、あとは応用で使えるコ マンドを増やしていきます。このあたりのコツを紹介したい です。

7. 内容 • CADのデータ構造 • ハンドル変数 • 論理構造(whileによる無限ループ) • 論理構造(procedureとfunction) • 図形情報を取得 • 図形情報を変更 • デバッグ

8. CADのデータ構造 • まずレイヤがあって • その上に図形がある • どちらも前後関係がある

9. CADのデータ構造 • まずレイヤがあって • その上に図形がある • どちらも前後関係がある

10. ハンドル型の変数 • プログラムの中で参照したいレイヤや図形はハンドル を取得して「ハンドル型の変数」に代入します。 • ハンドルを取得する方法 • レイヤのハンドル • 図形のハンドル • そのほか、シンボル定義のハンドルなどなど

11. ハンドル型の変数 • レイヤのハンドルを取得する方法 • 変数宣言 • layerHandle, layerH, layH, h : handle; • layH := FLayer; • ActLayer, LLayer, • layH := CreateLayer( 'template1', 1 ); • templateという名前でレイヤを作成

12. ハンドルを取得する方法 • 変数宣言 • layH: handle; • objH, h : Handle; • ハンドルを取得 • objH := FActLayer; {アクティブレイヤの最初の図形} • h := LSActLayer; {アクティブレイヤで選択されている最後の 図形 • layH:= FLayer; {最初のレイヤ}

13. ハンドル移動ルーチン • while文でオブジェクトチェーンをたぐ って目的の図形を見つける • h := FActLayer; {アクティブレイヤの最初の図形} • while h <> nil do begin • {ここで何かする} • h := NextObj( h ); • end;

14. ファイル入出力 • テキストファイルに書き出す • テキストファイルから読み込む

15. テキストファイルに出力 • PutFile('ファイル名:', fileName, fileName); {保存ダイアログ} • ReWrite( fileName ); • WriteLn( tempStr ); {ファイルに1行 書き出す} • Close( fileName ); {ファイルを閉じる}

16. シンボルの数を数える • objType:= GetType( objH ); • if ( objType = 15 ) then begin • symName:= GetSymName( objH ); • if ( symName = kSYMBOL01 ) then begin • gCnt01:= gCnt01 + 1; • end; {if } • ….

17. テキストファイルから読み込 む • GetFile(fileName); {オープンダイアログ} • ReadLn(x1,y1,x2,y2); {ファイルから1行 読み込む} • Close( fileName ); {ファイルを閉じる}

18. レコードを付ける • レコードとは? • 図形にデータを保持させることができ る • プラグインオブジェクトで使う • 図形を選択して、データパレットを開く

19. レコードを付ける • ファイルから読み込んで作成した図形に レコードを付けてみよう

20. レコードを付ける • NewField( kREC_NAME, kFIELD_NAME, '', 4, 0 ); • {レコードを作る} • SetRecord( h, kREC_NAME ); • {レコードをセットする} • SetRField( h, kREC_NAME, kFIELD_NAME, '1'); • {フラグフィールドに 1 をセットする}

21. レコードの値を取得 • レコードの値を取得しよう • flagValue:= EvalStr(h, data_type.'フラグ');

22. レコードの値を取得 • プログラムで自動的に作成した図形に、レコ ードを付けておいて識別できるようにしてお こう • プログラムを繰り返し実行する場合、前の実 行で作成した図形は自動的に削除したい

23. • これ以降は復習

24. コマンドを作ってみる • リソースパレット • 新規スクリプト • パレットを追加 • コマンドを追加 • スクリプトエディタ

25. プログラムの基本形 • procedure( myPrg )で始まる • constで定数を宣言 • varで変数を宣言 • beginとendで囲む • 行末にセミコロン • run( myPrg );で終わる runは全体で1カ所だ け

26. 変数名と予約語 • 宣言に必要な「変数名」はプログラマが決めます。「 データ型」はVectorScriptの中で決まっています。 • 変数名を決めることをネーミングといいます。 • VectorScriptによってすでに意味が決まっている「 VectorScriptキーワード」というのがあります。予約 語と呼ばれます。予約語は変数名に使うことはできま せん。 • たとえばbeginとか、integer、handle、unit、などな ど • VectorScript Language Guide p10 - p11参照

27. 宣言文 • const • コンストと読む。constantの略。 • 定数変数を宣言するブロックの始まりを意味する 。 • プログラムの中で変更すると構文エラーになる 。 • var • バーと読む。variableの略。 • 変数を宣言するブロックの始まりを意味する。

28. 論理構造 • 条件分岐 • if - then - else - end • イフ、ゼン、エルス、エンド • if 以下の条件文が正しければ続く 実行文を実行、正しくなければ else に続く実行文を実行 • AlrtDialog:ダイアログを表示する

29. 論理構造 • 繰り返し • while - do - begin - end • 条件文が真( true )の間はループ内のコードを実 行、条件文が偽( false )になったらループを終了 • 無限ループです • 終了条件が成立しないと止まりません

30. プログラムの構造 • procedure • 手続き、プロシージャ • 戻り値がない • procedure myProc ; • function • 関数、ファンクション • 戻り値がある • function myFunc : longint ;

31. 終わりに • ご清聴ありがとうございました。 • VectorScriptプログラミング入門 • 治郎吉商店制作のサンプルコードと解説集 • オンラインショップ「JiroShop」にて発売 中 • 個別のトレーニング、ご相談も承っておりま す。

Add a comment