2016-09-20 1 views
0

우리는 10 개의 클래스 요소가있는 Package-A를 가지고 있습니다. 우리는 또 다른 Package-B를 가지고 있습니다. 이제 Package-A에있는 요소를 Addin을 통해 Package-B로 옮기고 싶습니다. 이 심지어 패키지 B에 패키지-A에서 서브 패키지를 이동하기위한 추가 기능하나의 packe에서 다른 패키지로 요소 이동

를 통해 EA에

을 달성 할 수있는 방법 같은 것은 PackageB ID를 가진 모든 클래스 요소

+1

[EA Addin이 포함 된 패키지간에 기존 요소를 이동하는 방법] (http://stackoverflow.com/questions/28819597/how-to-move-exisiting-elements-between-packages-with) -an-ea-addin-in-c) – Uffe

답변

1

설정 PackageID 속성을 작동합니다.

여기

foreach(EA.Element classElement in PackageA.elements) 
{ 
    classElement.PackageID = packageb.PackageID : 
    classElement.Update(); 
} 
+0

한 번에 요소 집합을 이동할 수 있습니까? –

+0

@ManuV 아니요. EA API를 통해 이동할 수 없습니다. – Arshad

+0

패키지도 동일한 방식으로 이동할 수 있습니까? –

0

샘플 코드 somethinglike는 SQL을 통해, 모든 스크립트없이 한 번에 그것을 할 수있는 방법입니다. EA의 SQL Scratchpad에서이 작업을 수행하십시오.

enter image description here

복사 클립 보드에서 대상 패키지의 GUID는 {61068DDF-335B-4b29-89F8-C54A7000EF6F이})

Copy GUID

그것의 패키지 ID는 다음을 말한다 :

select Package_ID from t_package where ea_guid='{61068DDF-335B-4b29-89F8-C54A7000EF6F}' 

는 복사 클립 보드의 소스 패키지의 GUID는 {F3B52DA0-D9E9-4606-BCA0-5D211B73FBE6}을 말한다.

select Package_ID from t_package where ea_guid='{F3B52DA0-D9E9-4606-BCA0-5D211B73FBE6}' 

그래서, 소스 패키지의 요소는 다음과 같습니다 :
select * from t_object where Package_ID=(select Package_ID from t_package where ea_guid='{F3B52DA0-D9E9-4606-BCA0-5D211B73FBE6}') 

는 자, 그 대상에 갈 수 있도록하자

그 패키지 id는 다음과 같다.

update t_object 
set Package_ID=(select Package_ID from t_package where ea_guid='{61068DDF-335B-4b29-89F8-C54A7000EF6F}' 
where Package_ID=(
select Package_ID from t_package where ea_guid='{F3B52DA0-D9E9-4606-BCA0-5D211B73FBE6}' 
) 

트릭을해야합니다.

먼저 모델을 백업하십시오.

추가 기능의 경우 두 GUID 및 Repository.Execute (theSQLString)를 가져 오는 것만으로도 문제가되지 않습니다.

Repository.Execute는 문서에 없지만 작동합니다.

관련 문제