27
APA スペシャルWebセミナー【プログラミング編】 VectorScript実践セミナー』 第1回【プログラムの基本パターン】 2015325() 治郎吉商店 白石 亘

『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

Embed Size (px)

Citation preview

Page 1: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

APA スペシャルWebセミナー【プログラミング編】

『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

2015年3月25日 !

(株) 治郎吉商店 白石 亘

Page 2: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

VectorScriptとは?

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

VectorScript Language Guideから抜粋

Page 3: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

資料

• VectorScript Language Guide

• http://www.aanda.co.jp/develop/VS/index.html

• VectorScript Function Reference

• VectorWorksフォルダに入っている

Page 4: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

なぜプログラムを作るのか

標準のVectorWorksに無い機能を付け加える ことができる。

• コマンドにはよく使う操作手順を記録 • まとめて自動実行 • あとで繰り返し使える • 一度きりのことであれば手作業の方が経済的

• 外部ファイルにデータを書き出したり、データを読み込んで作図したり

Page 5: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

全3回の内容• 第1回

• プログラムの基本形 • 変数とデータ型 • 論理構造 • 図形を作成

• 第2回 • 図形情報とハンドル移動ルーチン • レコード

• 第3回 • カスタムダイアログ • イベント

Page 6: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

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

Page 7: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

今日の内容

• プログラムの基本形 • 変数とデータ型 • 論理構造 • 図形を作成 • デバッグ1

Page 8: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

プログラムを作る• プログラムを書く

• プログラムを記述する、打ち込む、タイプイン、コピペ • コンピュータに仕事をさせるには正しい記述が必要 • 構文解析時のエラー • 実行時のエラー • エラーはないが、意図せぬ動き • VectorWorksが異常終了

• Mac/Winが異常終了

• 自分の書いたプログラムを修正する • 自分の間違いには気づきにくい

Page 9: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

コマンドを作ってみる

• リソースパレット • 新規スクリプト • パレットを追加 • コマンドを追加 • スクリプトエディタ

クリプトエディタ

Page 10: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

プログラムの基本形• procedure( myPrg )で始まる

• constで定数を宣言

• varで変数を宣言

• beginとendで囲む

• 行末にセミコロン • run( myPrg );で終わる runは全体で1カ所だけ

Page 11: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

デモ

• ソースコードを記述してみよう

• パスカル的な基本形を理解

Page 12: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

変数とデータ型• プログラムの中で参照したいデータは「変数」に代入します。VectorScriptではすべての変数は宣言されていなければなりません。

• 「私はプログラムの中のある範囲で、xという名前の識別子を変数として使います、この変数のデータ型は実数です。」ということを宣言するには、次のように書きます。

• x : REAL ; !

• 別の例 fileName: STRING;

• これはfileNameという文字列型の変数を宣言しています。

Page 13: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

変数名と予約語• 宣言に必要な「変数名」はプログラマが決めます。「データ型」はVectorScriptの中で決まっています。

• 変数名を決めることをネーミングといいます。 • VectorScriptによってすでに意味が決まっている「VectorScriptキーワード」というのがあります。予約語と呼ばれます。予約語は変数名に使うことはできません。 • たとえばbeginとか、integer、handle、unit、などなど

• VectorScript Language Guide p10 - p11参照

Page 14: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

宣言文

• const

• コンストと読む。constantの略。 • 定数変数を宣言するブロックの始まりを意味する。

• プログラムの中で変更すると構文エラーになる。

• var

• バーと読む。variableの略。

• 変数を宣言するブロックの始まりを意味する。

Page 15: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

変数とデータ型2• データには型がある

• Pascalはcase-sensitiveな言語(型にうるさい)

• 型が合っていないと構文エラーになる • 数字

• 整数 integer, longint

• 実数 real

• 文字 • 固定文字列 string, char

• 不定長文字列 dynarray

• 配列 array [1..10] of longint

Page 16: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

論理構造1

• 条件分岐 • if - then - else - end

• イフ、ゼン、エルス、エンド • if 以下の条件文が正しければ続く実行文を実行、正しくなければ

else に続く実行文を実行

• AlrtDialog:ダイアログを表示する

Page 17: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

論理構造2• 繰り返し • for - to - do - begin - end

• フォー、トゥー、ビギン、エンド • ループカウント( i )の値が最大値( numOfObjs )なったらループ内のコードを実行してループを終了

• Concat:文字を連結する

• Num2StrF:数値を文字に変換

Page 18: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

コメント• コメントの書き方 2種類あります。

• { コメント }

• (*

•  コメント1 •  コメント2 • *)

• メソッドの始めに書く • プログラムの始まりと関数、プロシージャの始まり

• 誰が、何時、何の目的で • 機能の説明よりも背景や目的を書いておいた方がいい

• バージョン • VectorWorksバージョンを記しておく。最初に動かしたバージョンと、最も新しいテスト済みのバージョン

Page 19: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

図形を作る• 基準点 • 線分 • 四角形 • 円 • 多角形 • 文字列

Page 20: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

基準点と線分• 基準点

• 大きさがない • どんな縮尺でも同じように×表示 • Locus( x, y );

!

• 線分 • 始点を決めて(MoveTo)

• 終点を与える(LineTo)

• MoveTo( x1, y1 );

• LinetTo( x2, y2 )

Page 21: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

四角形、円• 四角形

• 対角の2点を指定 • Rect( x1, y1, x2, y2 );

!

• 円 • 始点を決めて(MoveTo)

• 終点を与える(LineTo)

• MoveTo( x1, y1 );

• LinetTo( x2, y2 );

Page 22: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

多角形

• 開始と終了 • BeginPolyとEndPoly

• CreatePolyコマンドを使う手もあるが、頂点が多くなるとコードの可読性が悪くなる !

• 頂点を追加 • AddPoint

Page 23: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

文字列

• 開始と終了 • BeginTextとEndText

• CreateTextコマンドを使う手もあるが、文字列を渡す構造のため事前に文字連結(Concat)が必要 !

• 文字列を追加 • AddPoint

Page 24: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

グループ

• 開始と終了 • BeginGroupとEndGroupでコンテナを作る

!

• 図形を作成する

Page 25: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

シンボル定義

• 開始と終了 • BeginSymとEndSymでコンテナを作る

!

• 図形を作成する

Page 26: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

レイヤ

• 図形はカレントレイヤに作成する • 次回、詳しく説明

Page 27: 『VectorScript実践セミナー』 第1回【プログラムの基本パターン】

終わりに

• VectorScriptプログラミング入門(現在改訂中)

• 治郎吉商店制作のサンプルコード集 • オンラインショップ「JiroShop」にて発売中

• ご清聴ありがとうございました。