研究開発

VectorScript技術情報

線種設定方法の変更

Vectorworks2013から線種の設定方法がかわりました。
以前、線に線種を割り当てる場合に、

PROCEDURE sample;
VAR
	objH : HANDLE;
BEGIN
	MoveTo( 0.0, 0.0 );
	LineTo( 50.0, 50.0 );
	objH := LNewObj;
	SetLS( objH,  -1 );
END;
Run( sample );
          

とすることで線種を割り当てることができましたが、
Vectorworks2013からはリソースパレットに登録されている線種を割り当てることになります。
以下のようなプログラムでVectorworksのデフォルト線種をライブラリから参照(コピー)することができます。

PROCEDURE SetVwLineTypes;
CONST
	kLineTypeDefNode = 96;
	kDefaultLineTypesFolder = 174;
VAR
	numLineTypes : LONGINT;
	subFolderName : STRING;
	listID, numItems : LONGINT;
	ii : LONGINT;
	resource : HANDLE;
BEGIN
	listID := BuildResourceList( kLineTypeDefNode, kDefaultLineTypesFolder, subFolderName, numItems );

	IF listID > 0 THEN
	BEGIN
		FOR ii := 0 TO numItems DO
		BEGIN
             resource := ImportResourceToCurrentFile( listID, ii+1 );
		END;
	END;
END;
Run( SetVwLineTypes );
            

これはLibraries\Defaults\Attributes - Line Typesの中にあるLineTypes_Defaults.vwx書類から、ラインタイプのデータを開いている書類にインポートしてくる方法です。
以下のように予めラインタイプを読み込んでおくことで線種の割り当てが可能になります。

PROCEDURE sample;
VAR
	objH : HANDLE;

	PROCEDURE SetVwLineTypes;
	CONST
		kLineTypeDefNode = 96;
		kDefaultLineTypesFolder = 174;
	VAR
		numLineTypes : LONGINT;
		subFolderName : STRING;
		listID, numItems : LONGINT;
		ii : LONGINT;
		resource : HANDLE;
	BEGIN
		listID := BuildResourceList( kLineTypeDefNode, kDefaultLineTypesFolder, subFolderName, numItems );
	 
		IF listID > 0 THEN
		BEGIN
			FOR ii := 0 TO numItems DO
			BEGIN
				  resource := ImportResourceToCurrentFile( listID, ii+1 );
			END;
		END;
	END;

BEGIN
	SetVwLineTypes;

	MoveTo( 0.0, 0.0 );
	LineTo( 50.0, 50.0 );
	objH := LNewObj;
	SetLS( objH,  -1 );
END;
Run( sample );
            

なお、現バージョンでは特殊なラインタイプ(例:ジグザグ等)はスクリプトでは設定することができません。