CopyPaste

導入

v1.0

詳細

クリップボードを通さずに、コピーしたものを貼り付けます。 これは、ドラッグアンドドロップ操作と同等のスクリプトです。 このコマンドを使用すると、シーン内にすでに存在する項目(たとえば、シーン オブジェクトを表す項目)を移動したり、TransientObjectContainer にある項目(たとえば、Annotation など、組み込みのプロパティ セットのインスタンス)を貼り付けたりできます。

注: CopyPaste コマンドは、TransientObjectContainer から現在のシーンに項目を移動するための唯一の方法です。TransientObjectContainer に UI からアクセスすることはできないためです。

警告: v7.0 より前のバージョンでは、このコマンドを使用してプリセットからシェーダを作成し、RenderTree での接続準備が整うまで TransientObjectContainer にコピーしておくこともできましたが、 このコマンドではこの機能がサポートされなくなりました。代わりに、CreateShaderFromPreset コマンドを使用して、シーンのマテリアル ライブラリ(「Sources.Materials.DefaultLib.Scene_Material」)にシェーダの一時コピーを作成する必要があります。 例については、ReplaceShader のリファレンス ページを参照してください。

スクリプト構文

CopyPaste( [Source], [FileName], Target, [Mode] );

パラメータ

パラメータ タイプ 説明
Source 文字列 コピーするオブジェクト
FileName 文字列 シーン内に読み込みするファイルまたはプリセット
Target 文字列 ターゲット オブジェクト
Mode vbCopyPaste 定数または整数 コピー アンド ペーストする(VisualBasic)モード

デフォルト値: vbDefaultCopyPaste

指定可能な値:

説明:

vbDefaultCopyPaste (0) コピー アンド ペーストのデフォルト モードを使用
vbCutSource (1) カット アンド ペースト
vbCopySource (2) コピー アンド ペースト
vbLinkSource (3) コピー元をコピー先にリンク

1. Python の例

#

# Example of creating a temporary custom property (aka custom pset)

# which can be written to before actually depositing in the scene

# 

app = Application

from win32com.client import constants as c

app.NewScene( "", 0 )

# Demonstrate how you can use it to create a built-in custom pset

presetFullPath = XSIUtils.BuildPath( 

	app.InstallationPath(c.siFactoryPath), 

	"Data", "DSPresets", "Properties", "Annotation.Preset"

)

oAnnotation = app.CreateObjectFromPreset2( presetFullPath, "Notes" )

if ( oAnnotation ) :

	# Even though it only exists on the clipboard you can still populate it

	app.InspectObj( oAnnotation, "", "Annotation Test", "siModal", 0 )

	# Notice how the owner of this annotation doesn't have to 

	# exist until you are ready to cut-and-paste it

	oNull = app.ActiveSceneRoot.AddModel("", "Jerry")

	app.CopyPaste(oAnnotation, "", oNull, 1)

	# Just to prove that it exists any modifications 

	for oParam in oNull.Properties("Notes").Parameters :

		app.LogMessage( oParam.Name + ": " + str(oParam.Value) )

else :

	app.LogMessage( "Couldn't create Annotatation property." )

# Expected results (similar to):

# INFO : Title: 

# INFO : Text: need to refine right bicep

# INFO : Keyword: modeling

# INFO : Flag 1: False

# INFO : Flag 2: True

2. JScript の例

/*

	This example demonstrates how to use the CopyPaste command to 

	reparent scene objects by physically moving objects under 

	their new parents (a la drag-and-drop in the UI).

*/

// Create a new scene with 4 nulls

var app = Application;

NewScene(null, false);

GetPrim("Null");

GetPrim("Null");

GetPrim("Null");

GetPrim("Null");

// Reparent null2 and null3 under null1

CopyPaste("null3", null, "null1", 1);

CopyPaste("null2", null, "null1", 1);

// Reparent null under null2

CopyPaste("null", null, "null2", 1);

// Print the visual hierarchy

ShowMeTheHierarchy(app.ActiveSceneRoot, "");

// Expected results:

// INFO : Camera_Root

// INFO : ...Camera

// INFO : ...Camera_Interest

// INFO : light

// INFO : null1

// INFO : ...null3

// INFO : ...null2

// INFO : ......null

// Convenience function to print out a graphical representation 

// of the hierarchy in the scene starting at the specified object

function ShowMeTheHierarchy(in_parent, in_depth)

{

	var kid = new Enumerator(in_parent.Children);

	for (; !kid.atEnd(); kid.moveNext()) {

		app.LogMessage(in_depth + kid.item().FullName);

		if (kid.item().Children.Count) {

			ShowMeTheHierarchy(kid.item(), in_depth + "...");

		}

	}

}

関連項目

Copy Cut Paste CopyAnimation