Upload
wataru-shiraishi
View
352
Download
0
Embed Size (px)
Citation preview
APA スペシャルWebセミナー【プログラミング編】
『VectorScript実践セミナー』 第1回【プログラムの基本パターン】
2015年3月25日 !
(株) 治郎吉商店 白石 亘
VectorScriptとは?
VectorScript は、Vectorworks のソフトウェアパッケージに含まれるスクリプト言語です。軽量なプログラミング言語であ る VectorScript の構文は Pascal と似ており、Pascal のプログラム要素を多く取り入れています。 VectorScript は実際、Pascal 言語の「スーパーセット」として、Pascal の基本機能に Vectorworks CAD エンジンの機能にアクセスするための各種 API(アプリケーションプログラミングインターフェース)を加えて拡張したものです。
VectorScript Language Guideから抜粋
資料
• VectorScript Language Guide
• http://www.aanda.co.jp/develop/VS/index.html
• VectorScript Function Reference
• VectorWorksフォルダに入っている
なぜプログラムを作るのか
標準のVectorWorksに無い機能を付け加える ことができる。
• コマンドにはよく使う操作手順を記録 • まとめて自動実行 • あとで繰り返し使える • 一度きりのことであれば手作業の方が経済的
• 外部ファイルにデータを書き出したり、データを読み込んで作図したり
全3回の内容• 第1回
• プログラムの基本形 • 変数とデータ型 • 論理構造 • 図形を作成
• 第2回 • 図形情報とハンドル移動ルーチン • レコード
• 第3回 • カスタムダイアログ • イベント
目標サイト: http://developer.vectorworks.net/index.php/ Main_Page !多くのコマンドがあります、同じ機能を実現するのにいくつかの方法があります。そんな中で、私らのコードは結構パターン化されています。よく使うコードパターンがあって、それらを組み合わせて使うことで多くの機能を実現することができます。 そんなにたくさんの機能を覚えなくてもいろいろなことができる、ということです。このあたりのコツを紹介したいです。少ない労力で多くの成果を得る、方法ですね。
今日の内容
• プログラムの基本形 • 変数とデータ型 • 論理構造 • 図形を作成 • デバッグ1
プログラムを作る• プログラムを書く
• プログラムを記述する、打ち込む、タイプイン、コピペ • コンピュータに仕事をさせるには正しい記述が必要 • 構文解析時のエラー • 実行時のエラー • エラーはないが、意図せぬ動き • VectorWorksが異常終了
• Mac/Winが異常終了
• 自分の書いたプログラムを修正する • 自分の間違いには気づきにくい
コマンドを作ってみる
• リソースパレット • 新規スクリプト • パレットを追加 • コマンドを追加 • スクリプトエディタ
クリプトエディタ
プログラムの基本形• procedure( myPrg )で始まる
• constで定数を宣言
• varで変数を宣言
• beginとendで囲む
• 行末にセミコロン • run( myPrg );で終わる runは全体で1カ所だけ
デモ
• ソースコードを記述してみよう
• パスカル的な基本形を理解
変数とデータ型• プログラムの中で参照したいデータは「変数」に代入します。VectorScriptではすべての変数は宣言されていなければなりません。
• 「私はプログラムの中のある範囲で、xという名前の識別子を変数として使います、この変数のデータ型は実数です。」ということを宣言するには、次のように書きます。
• x : REAL ; !
• 別の例 fileName: STRING;
• これはfileNameという文字列型の変数を宣言しています。
変数名と予約語• 宣言に必要な「変数名」はプログラマが決めます。「データ型」はVectorScriptの中で決まっています。
• 変数名を決めることをネーミングといいます。 • VectorScriptによってすでに意味が決まっている「VectorScriptキーワード」というのがあります。予約語と呼ばれます。予約語は変数名に使うことはできません。 • たとえばbeginとか、integer、handle、unit、などなど
• VectorScript Language Guide p10 - p11参照
宣言文
• const
• コンストと読む。constantの略。 • 定数変数を宣言するブロックの始まりを意味する。
• プログラムの中で変更すると構文エラーになる。
• var
• バーと読む。variableの略。
• 変数を宣言するブロックの始まりを意味する。
変数とデータ型2• データには型がある
• Pascalはcase-sensitiveな言語(型にうるさい)
• 型が合っていないと構文エラーになる • 数字
• 整数 integer, longint
• 実数 real
• 文字 • 固定文字列 string, char
• 不定長文字列 dynarray
• 配列 array [1..10] of longint
論理構造1
• 条件分岐 • if - then - else - end
• イフ、ゼン、エルス、エンド • if 以下の条件文が正しければ続く実行文を実行、正しくなければ
else に続く実行文を実行
• AlrtDialog:ダイアログを表示する
論理構造2• 繰り返し • for - to - do - begin - end
• フォー、トゥー、ビギン、エンド • ループカウント( i )の値が最大値( numOfObjs )なったらループ内のコードを実行してループを終了
• Concat:文字を連結する
• Num2StrF:数値を文字に変換
コメント• コメントの書き方 2種類あります。
• { コメント }
• (*
• コメント1 • コメント2 • *)
• メソッドの始めに書く • プログラムの始まりと関数、プロシージャの始まり
• 誰が、何時、何の目的で • 機能の説明よりも背景や目的を書いておいた方がいい
• バージョン • VectorWorksバージョンを記しておく。最初に動かしたバージョンと、最も新しいテスト済みのバージョン
図形を作る• 基準点 • 線分 • 四角形 • 円 • 多角形 • 文字列
基準点と線分• 基準点
• 大きさがない • どんな縮尺でも同じように×表示 • Locus( x, y );
!
• 線分 • 始点を決めて(MoveTo)
• 終点を与える(LineTo)
• MoveTo( x1, y1 );
• LinetTo( x2, y2 )
四角形、円• 四角形
• 対角の2点を指定 • Rect( x1, y1, x2, y2 );
!
• 円 • 始点を決めて(MoveTo)
• 終点を与える(LineTo)
• MoveTo( x1, y1 );
• LinetTo( x2, y2 );
多角形
• 開始と終了 • BeginPolyとEndPoly
• CreatePolyコマンドを使う手もあるが、頂点が多くなるとコードの可読性が悪くなる !
• 頂点を追加 • AddPoint
文字列
• 開始と終了 • BeginTextとEndText
• CreateTextコマンドを使う手もあるが、文字列を渡す構造のため事前に文字連結(Concat)が必要 !
• 文字列を追加 • AddPoint
グループ
• 開始と終了 • BeginGroupとEndGroupでコンテナを作る
!
• 図形を作成する
シンボル定義
• 開始と終了 • BeginSymとEndSymでコンテナを作る
!
• 図形を作成する
レイヤ
• 図形はカレントレイヤに作成する • 次回、詳しく説明
終わりに
• VectorScriptプログラミング入門(現在改訂中)
• 治郎吉商店制作のサンプルコード集 • オンラインショップ「JiroShop」にて発売中
• ご清聴ありがとうございました。