SDK(Software Developer's Kit)情報
SDK のご利用にあたって、Vectorworks(米国)の提示している同意書に同意する必要があります。また、SDK を使って作成したプラグインを第三者に頒布する場合には、同意書と成果物を Vectorworks社に送付する必要があります。
Vectorworks(米国)のサイトからSDKをダウンロードしてください。
SDKダウンロード研究開発内の検索
技術情報
基本情報
障害情報
解説
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
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)の質問とその回答を掲載しています。
VCOMPtrpStaFolderID(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に関するお問い合わせ
ご質問はVectorworksユーザーフォーラムへお問い合わせください。 ユーザーフォーラムでは過去のご質問や回答など情報を共有しております。