研究開発

SDK(Software Developer's Kit)情報

SDK のご利用にあたって、Vectorworks の開発元である Vectorworks社の提示している同意書に同意する必要があります。これは VectorWorks 10.5から導入された方式です。SDK を使って作成したプラグインを第三者に頒布する場合には、同意書と成果物を Vectorworks社に送付する必要があります。

社内(自組織内)利用の場合は、同意書を送る必要はありません。詳細は同意書をお読みください。

Vectorworksの開発元である Vectorworks(米国)のサイトからSDKをダウンロードできます。

SDKダウンロード

研究開発内の検索

技術情報

基本情報

システム要件などの基本情報はこちら

障害情報

ファイル操作について ver.2012
DoMenuName ver.12
線種設定方法の変更 ver.2013

解説

Vectorworks 2022ではAppleシリコンプロセッサ上でネイティブ対応されました。

Vectorworks SDKを使用したプラグインの開発でAppleシリコンネイティブ対応するための方法(Universal Binary※の作成方法)をご説明します。
※Universal BinaryとはIntel(x64)とAppleシリコンの両方のコードを持つバイナリのこと

【重要】
Xcode12.2以上が必要となります。

プラグインをビルドする際にUniversal Binaryを生成するには、ターゲットの選択を「Any Mac」に変更するだけ。
それだけで、x64とAppleシリコン、2種類のCPUの実行コードを含んだユニバーサルアプリがビルドできる。
また、Xcodeが動作しているMacと同じアーキテクチャのネイティブコードをビルドするには、ターゲットの選択をMacの名前(ここの例では「My Mac」)を選ぶ。

なお、過去バージョンから再ビルドする場合についても、Vectorworks 2022のSDK上であれば上述同様にUniversal Binaryを生成することができます。


【参考】Universal Binaryか確認する方法

Macのターミナルを開き下記のコマンドを入力してください
>lipo -info TesterModule.vwlibrary/Contents/MacOS/TesterModule
※TesterModuleの部分がプラグイン名になります 次の結果が表示されます


【参考】Universal Binaryからアーキテクチャを削除する方法
これはFATバイナリを回避したいときに行います。
(Intelとarm64の両方のコードを持つということはサイズが大きくなるため、不要であればどちらかを削除することでサイズの縮小ができる)

Macのターミナルを開き下記のコマンドを入力してください
以下の例ではIntel(x86_64)のコードを削除します。 >lipo -remove x86_64 TesterModule.vwlibrary/Contents/MacOS/TesterModule -o TesterModule.vwlibrary/Contents/MacOS/TesterModule
※TesterModuleの部分がプラグイン名になります
上の例ではIntel(x86_64)のコードを削除することでファイルサイズが縮小できFATバイナリから解放されます。

SDKの「READ ME」フォルダ内にある、SDKManual.pdfのSECTION II: THE VECTORWORKS ENVIRONMENTのUser Interfaceの項をご覧ください。ツールチップ(ヘルプタグ)に関する説明があります。

VectorworksはVectorworks 2018からUnicode化されました。
Unicodeを使うことで一貫性、メンテナンス性、パフォーマンスを上げることができます。

Vectorworks 2018より前のプログラムについては正しく動作しない場合があります。

Vectorworks SDKで開発したプログラムをUnicode対応するにあたり以下の点にご注意ください。

1)char型に注意

char型をワイド型のwchar_t型にする。

なおVectorworks上で使う場合はTXChar型を推奨します。これはWindowsではwchar_t、MacではUniCharをtypedefしたものです。

kaigyo := '
';
CreateText( Concat( string1, kaigyo, string2 ) );
2)文字列の扱い

プログラムで文字列を扱う場合はTXString型を推奨します。

TXString型はVectorworks SDKの標準文字列クラスで、std::basic_stringのラッパーです。また、WindowsではCStringクラスと互換性があります。

TXString txstr1 = txuc('😀');
TXString txstr2 = txu("123💗あいうAA");

TXStringの変換

// std::string から TXStringへの変換
	std::string	stdStr = "test";
	TXString	txStr(stdStr);
    
// TXString からstd::string への変換
	TXString	txStr = txu("test");
	std::string	stdStr = txStr.GetStdString();;

// std::wstring から TXStringへの変換
	std::string	stdWStr = "test";
	TXString	txStr(stdWStr);
    
// TXString からstd::wstring への変換
	TXString	txStr = txu("test");
	std::wstring	stdWStr = txStr.GetStdWString();;

// Windows CString から TXString への変換
    CString     CStr = TEXT("test");
	TXString	txStr = CStr;

// TXString から Windows CString への変換
	TXString	txStr = txu("test");
	CString     CStr = txStr.GetData();
3)文字列を扱う標準関数に注意

文字列を扱う標準関数はワイド文字を扱うことができるように変更します。

    strcpy() → wcscpy()
    strlen() → wcslen()
    strcmp() → wcscmp()

SDKクラスリファレンスはこちらをご覧ください。

質問回答集

Vectorworks SDK 質問回答集

弊社にお寄せ頂いたSDK(Software Develop kit)の質問とその回答を掲載しています。

VCOMPtr pStaFolderID(IID_FolderIdentifier);
VCOMPtr AppFolder(IID_ApplicationFolders);
AppFolder->GetFolder(kAppDataFolder, &pStaFolderID);

IApplicationFoldersクラスのGetFolder()関数をご利用いただけます。
【パラメータ】
kAppDataFolder(アプリケーションフォルダ):フォルダ種別※その他のフォルダについてFolderSpecifiers.h参照
pStaFolderID:IFolderIdentifierクラスへのポインタ

gSDK->SetUndoMethod( kUndoSwapObjects );
gSDK->NameUndoEvent( txu( "UndoName" ) );
  // Undoリストに追加の処理をコーディング
  // Undoリストに追加の処理をコーディング
gSDK->EndUndoEvent();

SetUndoMethod()でkUndoSwapObjects (21)を設定することで、AddBeforeSwapObject、AddAfterSwapObject、および AddBothSwapObjects を使用して、置換するオブジェクトのカスタマイズを可能にします。
NameUndoEvent()で実行開始から構築された取り消し(Undo)イベントに名前をつけます。引数eventNameが取り消しイベントの名前となります。

  UnitsType currentUnits;
  gSDK->GetUnits(currentUnits);
  TXString theStr.ftoa( theReal, currentUnits.displayAccuracy );

GetUnits()で現在の単位設定の情報を取り、TXStringのメンバ関数ftoaにパラメータで単位の情報(表示精度)を渡します。

  double value = 99.99;
  GetEditReal( dialogID, componentID, 1, value );

実数の取得はGetEditReal( )を使います。
使い方は GetEditReal( dialogID, componentID, 1, value ); 3番目のパラメータに数値のタイプを指定します。
種類は以下の通りです。
const EditRealType kEditReal = 1;
const EditRealType kEditAngle = 2;
const EditRealType kEditDimension = 3;
const EditRealType kEditCoordinateX = 4;
const EditRealType kEditCoordinateY = 5;

  //設定
  Boolean kTrue = true;
  gSDK->SetProgramVariable( varEnableLegacy2DMode, &kTrue );
  //状態取得
  Boolean enableLegacy2DMode;
  gSDK->GetProgramVariable( varEnableLegacy2DMode, &enableLegacy2DMode );

環境設定値の設定はSetProgramVariable( )を使います。
使い方は 1番目のパラメータに設定したい項目を指定します。
環境設定値の取得はGetProgramVariable( )を使います。
使い方は 1番目のパラメータに取得したい項目を指定します。2番目のパラメータに結果が帰ります。
環境設定項目の一覧はProgramVariables.hに記載されています。

SDKに関するお問い合わせ

SDKに関するお問合せは、以下からお問い合せください。

エーアンドエー株式会社 研究開発室

email:develop@aanda.co.jp