SlideShare a Scribd company logo
1 of 27
Download to read offline
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」にて発売中	

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

More Related Content

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

『VectorScript実践セミナー』 第2回【図形データの操作方法】
『VectorScript実践セミナー』 第2回【図形データの操作方法】『VectorScript実践セミナー』 第2回【図形データの操作方法】
『VectorScript実践セミナー』 第2回【図形データの操作方法】Wataru Shiraishi
 
Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Yuki Hattori
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指してAkira Inoue
 
Visual studio extensibility
Visual studio extensibilityVisual studio extensibility
Visual studio extensibilityTakeshi Fujimoto
 
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャAkira Inoue
 
初心者がまなぶExcel vba
初心者がまなぶExcel vba初心者がまなぶExcel vba
初心者がまなぶExcel vba安藤 良人
 
20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS AzureIssei Hiraoka
 
開発・インフラ・コラボレーティブ担当者目線で読み解く、Build 2023 の注目トピック - 開発パート
開発・インフラ・コラボレーティブ担当者目線で読み解く、Build 2023 の注目トピック - 開発パート開発・インフラ・コラボレーティブ担当者目線で読み解く、Build 2023 の注目トピック - 開発パート
開発・インフラ・コラボレーティブ担当者目線で読み解く、Build 2023 の注目トピック - 開発パートRyuji Iwata
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築ryosuke matsumura
 
AWS初心者向けWebinar .NET開発者のためのAWS超入門
AWS初心者向けWebinar .NET開発者のためのAWS超入門AWS初心者向けWebinar .NET開発者のためのAWS超入門
AWS初心者向けWebinar .NET開発者のためのAWS超入門Amazon Web Services Japan
 
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線Akira Inoue
 
UnityとAmazon Web Servicesで生み出す新しい価値
UnityとAmazon Web Servicesで生み出す新しい価値UnityとAmazon Web Servicesで生み出す新しい価値
UnityとAmazon Web Servicesで生み出す新しい価値Keisuke Nishitani
 
おいしいフルマネージドデータベース はじめました
おいしいフルマネージドデータベース はじめましたおいしいフルマネージドデータベース はじめました
おいしいフルマネージドデータベース はじめましたMiho Yamamoto
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NETAkira Inoue
 
Visual Studio TypeScript npm WebPack
Visual Studio TypeScript npm WebPackVisual Studio TypeScript npm WebPack
Visual Studio TypeScript npm WebPackAkihiro Ehara
 
Windows Azure Appfabric as "Middleware as a Services"
Windows Azure Appfabric as "Middleware as a Services"Windows Azure Appfabric as "Middleware as a Services"
Windows Azure Appfabric as "Middleware as a Services"Kazuyuki Nomura
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築ryosuke matsumura
 
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -Yoichi Kawasaki
 

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

『VectorScript実践セミナー』 第2回【図形データの操作方法】
『VectorScript実践セミナー』 第2回【図形データの操作方法】『VectorScript実践セミナー』 第2回【図形データの操作方法】
『VectorScript実践セミナー』 第2回【図形データの操作方法】
 
APA01 2015513
APA01 2015513APA01 2015513
APA01 2015513
 
Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
 
Visual studio extensibility
Visual studio extensibilityVisual studio extensibility
Visual studio extensibility
 
[Japan Tech summit 2017] APP 001
[Japan Tech summit 2017] APP 001[Japan Tech summit 2017] APP 001
[Japan Tech summit 2017] APP 001
 
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
 
初心者がまなぶExcel vba
初心者がまなぶExcel vba初心者がまなぶExcel vba
初心者がまなぶExcel vba
 
20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure
 
開発・インフラ・コラボレーティブ担当者目線で読み解く、Build 2023 の注目トピック - 開発パート
開発・インフラ・コラボレーティブ担当者目線で読み解く、Build 2023 の注目トピック - 開発パート開発・インフラ・コラボレーティブ担当者目線で読み解く、Build 2023 の注目トピック - 開発パート
開発・インフラ・コラボレーティブ担当者目線で読み解く、Build 2023 の注目トピック - 開発パート
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築
 
AWS初心者向けWebinar .NET開発者のためのAWS超入門
AWS初心者向けWebinar .NET開発者のためのAWS超入門AWS初心者向けWebinar .NET開発者のためのAWS超入門
AWS初心者向けWebinar .NET開発者のためのAWS超入門
 
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
 
UnityとAmazon Web Servicesで生み出す新しい価値
UnityとAmazon Web Servicesで生み出す新しい価値UnityとAmazon Web Servicesで生み出す新しい価値
UnityとAmazon Web Servicesで生み出す新しい価値
 
おいしいフルマネージドデータベース はじめました
おいしいフルマネージドデータベース はじめましたおいしいフルマネージドデータベース はじめました
おいしいフルマネージドデータベース はじめました
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
 
Visual Studio TypeScript npm WebPack
Visual Studio TypeScript npm WebPackVisual Studio TypeScript npm WebPack
Visual Studio TypeScript npm WebPack
 
Windows Azure Appfabric as "Middleware as a Services"
Windows Azure Appfabric as "Middleware as a Services"Windows Azure Appfabric as "Middleware as a Services"
Windows Azure Appfabric as "Middleware as a Services"
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築
 
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
 

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