본문으로 건너뛰기

모델 열기, 추가

모델 열기(Open) 및 모델 추가(Add) API 예제입니다.

  • 모델 열기(Open) : 기존에 조회 중인 3D 모델을 닫고 새로운 모델을 조회
  • 모델 추가(Add) : 기존에 조회 중인 화면에 3D 모델을 추가하여 조회

모든 모델 열기 / 추가 API는
OnInitializedAppEvent 이벤트 이후에 호출해야 합니다.


로컬 및 UNC 경로 열기 / 추가

로컬 VIZ / VIZXML 파일 열기

// 모델 열기 : VIZ
Connector.OpenDocument("C:\\MODEL\\BLOCK.viz");

// 모델 열기 : VIZXML
Connector.OpenDocument("C:\\MODEL\\PROJECT.vizxml");

UNC 경로(NAS / 공유 폴더) 모델 열기

Connector.OpenDocument("\\\\Shared Folder\\MODEL\\BLOCK.viz");

여러 개의 모델 파일 추가

// 추가할 모델 파일
string[] models = new string[]
{
"C:\\MODEL\\HULL.viz",
"C:\\MODEL\\EQUIP.viz",
"C:\\MODEL\\PIPE.viz",
"C:\\MODEL\\STRU.viz"
};

// 모델 추가
Connector.AddDocuments(models);

Stream 데이터 열기 / 추가

Stream 방식은 VIZ 파일 형식만 지원합니다.


로컬 VIZ 파일을 Stream 형식으로 열기

// 모델 파일 Stream 데이터
byte[] stream = System.IO.File.ReadAllBytes("C:\\MODEL\\BLOCK.viz");

// 모델 열기
Connector.OpenStream("BLOCK", stream);

여러 개의 로컬 모델을 Stream 형식으로 추가

List<string> localModels = new List<string>
{
"C:\\MODEL\\HULL.viz",
"C:\\MODEL\\EQUIP.viz",
"C:\\MODEL\\PIPE.viz",
"C:\\MODEL\\STRU.viz"
};

List<StreamDataVO> streams = new List<StreamDataVO>();

foreach (string item in localModels)
{
StreamDataVO stream = new StreamDataVO();
stream.Data = System.IO.File.ReadAllBytes(item);
stream.ModelName = System.IO.Path.GetFileNameWithoutExtension(item);

streams.Add(stream);
}

Connector.ImportStream(streams);

원격지 모델을 Stream 형식으로 추가

List<string> remoteModels = new List<string>
{
"http://www.softhills.net/MODEL/HULL.viz",
"http://www.softhills.net/MODEL/EQUIP.viz",
"http://www.softhills.net/MODEL/PIPE.viz",
"http://www.softhills.net/MODEL/STRU.viz"
};

List<StreamDataVO> streams = new List<StreamDataVO>();

foreach (string item in remoteModels)
{
StreamDataVO stream = new StreamDataVO();
stream.Data = SHConnector.Utility.Net.NetworkClient.DownloadData(item);
stream.ModelName = SHConnector.Utility.Net.NetworkClient.GetModelName(item);

streams.Add(stream);
}

Connector.ImportStream(streams);

URI 리소스 열기 / 추가

  • OpenUri : VIZ / VIZXML 지원
  • ImportUri : VIZ 파일만 지원

원격 리소스 VIZ / VIZXML 열기

// VIZ
string uriViz = "http://www.softhills.net/VIZ/MODEL.viz";
Connector.OpenUri(uriViz, URI_FILE_TYPES.VIZ);

// VIZXML
string uriVizXml = "http://www.softhills.net/VIZ/PROJECT.vizxml";
Connector.OpenUri(uriVizXml, URI_FILE_TYPES.VIZXML);

외부 시스템에서 제공하는 URI 열기

// VIZ
string uriViz = "http://www.softhills.net/?PROJECT=1&FILEID=100";
Connector.OpenUri(uriViz, URI_FILE_TYPES.VIZ);

// VIZXML
string uriVizXml = "http://www.softhills.net/?PROJECT=1";
Connector.OpenUri(uriVizXml, URI_FILE_TYPES.VIZXML);

원격 리소스 VIZ 파일 추가 (List)

List<string> uriList = new List<string>
{
"http://www.softhills.net/VIZ/EQUP.viz",
"http://www.softhills.net/VIZ/HULL.viz",
"http://www.softhills.net/VIZ/PIPE.viz",
"http://www.softhills.net/VIZ/STRU.viz"
};

Connector.ImportUri(uriList);

원격 리소스 VIZ 파일 추가 (Dictionary)

Dictionary<string, string> uriMap = new Dictionary<string, string>
{
{ "EQUP", "http://www.softhills.net/?PROJECT=1&FILEID=101" },
{ "HULL", "http://www.softhills.net/?PROJECT=1&FILEID=102" },
{ "PIPE", "http://www.softhills.net/?PROJECT=1&FILEID=103" },
{ "STRU", "http://www.softhills.net/?PROJECT=1&FILEID=104" }
};

Connector.ImportUri(uriMap);