본문으로 건너뛰기

Add

Overloads​

NameDescription
Add(int index, string key, string val, bool recursive)지정된 개체에 속성을 추가
Add(int index, Dictionary<string, string> property, bool recursive)지정된 개체에 복수개의 속성을 추가
Add(List<int> index, Dictionary<string, string> property, bool recursive)복수개의 개체에 속성을 추가
Add(Dictionary<int, Dictionary<string, string>> property, bool recursive)노드마다 서로 다른 속성 집합을 한 번의 호출로 추가한다.
Add(string intput_VIZ, string output_VIZ, UserDefineAttributeCollection uda)지정된 파일에 속성을 추가
Add(string key, string val, bool recursive)선택된 개체에 속성을 추가

Add(int index, string key, string val, bool recursive)​

public void Add(int index, string key, string val, bool recursive)

지정된 개체에 속성을 추가

Parameters​

NameTypeDescription
indexint노드 인덱스
keystring속성 키
valstring속성 정보
recursivebool하위노드에 속성 추가 : True (하위 노드에 모두 추가) / False (지정된 개체에만 속성 추가)

Add(int index, Dictionary<string, string> property, bool recursive)​

public void Add(int index, Dictionary&lt;string, string&gt; property, bool recursive)

지정된 개체에 복수개의 속성을 추가

Parameters​

NameTypeDescription
indexint노드 인덱스
propertyDictionary<string, string>속성
recursivebool하위노드에 속성 추가 : True (하위 노드에 모두 추가) / False (지정된 개체에만 속성 추가)

Examples​

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

private void Example()
{
int nodeIndex = 5;

Dictionary<string, string> property = new Dictionary<string, string>();
property.Add("TYPE", "PIPE");
property.Add("SYSTEM", "GENERAL SERVICE LINE");
property.Add("SERVICE", "GENERAL SERVICE LINE");
property.Add("PRESS", "3.00");
property.Add("TEMP", "32.00");

vizcore3d.Object3D.UDA.Add(
nodeIndex /* NODE INDEX */
, property /* UDA */
, false /* RECURSIVE */
);
}

Add(List<int> index, Dictionary<string, string> property, bool recursive)​

public void Add(List&lt;int&gt; index, Dictionary&lt;string, string&gt; property, bool recursive)

복수개의 개체에 속성을 추가

Parameters​

NameTypeDescription
indexList<int>노드 인덱스
propertyDictionary<string, string>속성
recursivebool하위노드에 속성 추가 : True (하위 노드에 모두 추가) / False (지정된 개체에만 속성 추가)

Examples​

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

private void Example()
{
List<int> node = new List<int>() { 4, 10, 20, 30 };

Dictionary<string, string> property = new Dictionary<string, string>();
property.Add("TYPE", "PIPE");
property.Add("SYSTEM", "GENERAL SERVICE LINE");
property.Add("SERVICE", "GENERAL SERVICE LINE");
property.Add("PRESS", "3.00");
property.Add("TEMP", "32.00");

vizcore3d.Object3D.UDA.Add(
node /* NODE INDEX */
, property /* UDA */
, false /* RECURSIVE */
);
}

Add(Dictionary<int, Dictionary<string, string>> property, bool recursive)​

public void Add(Dictionary&lt;int, Dictionary&lt;string, string&gt;&gt; property, bool recursive)

노드마다 서로 다른 속성 집합을 한 번의 호출로 추가한다.

Remarks​

전달받은 전체 속성을 내부 엔진에 한 번만 넘긴다. 같은 데이터를 노드별로 나눠 반복 호출하는 것보다 빠르므로 대량 추가에는 이 오버로드를 쓴다.
속성 키가 비어 있는 항목과 모델에 존재하지 않는 노드 인덱스는 예외 없이 건너뛴다. 속성 값은 비어 있어도 추가된다.
이미 같은 키가 있으면 값을 덮어쓴다.

Parameters​

NameTypeDescription
propertyDictionary<int, Dictionary<string, string>>노드 인덱스별 속성. 키는 노드 인덱스, 값은 그 노드에 추가할 속성 집합. 음수 인덱스와 값이 null 이거나 비어 있는 항목은 건너뛴다
recursivebool하위노드에 속성 추가 : True (하위 노드에 모두 추가) / False (지정된 개체에만 속성 추가)

Examples​

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

private void Example()
{
if (vizcore3d.Model.IsOpen() == false) return;

List<VIZCore3D.NET.Data.Node> node = vizcore3d.Object3D.FromFilter(VIZCore3D.NET.Data.Object3dFilter.PART);

// 노드마다 다른 속성을 구성한다.
Dictionary<int, Dictionary<string, string>> property = new Dictionary<int, Dictionary<string, string>>();

foreach (VIZCore3D.NET.Data.Node item in node)
{
Dictionary<string, string> uda = new Dictionary<string, string>();
uda.Add("TYPE", "PIPE");
uda.Add("NAME", item.NodeName);
uda.Add("INDEX", item.Index.ToString());

property.Add(item.Index, uda);
}

vizcore3d.Object3D.UDA.Add(
property /* UDA */
, false /* RECURSIVE */
);
}

Add(string intput_VIZ, string output_VIZ, UserDefineAttributeCollection uda)​

public bool Add(string intput_VIZ, string output_VIZ, UserDefineAttributeCollection uda)

지정된 파일에 속성을 추가

Parameters​

NameTypeDescription
intput_VIZstring원본 VIZ 파일 (경로 + 파일이름)
output_VIZstring출력 VIZ 파일 (경로 + 파일이름)
udaUserDefineAttributeCollection속성

Returns​

TypeDescription
bool결과

Examples​

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

private void ExampleV1()
{
if (vizcore3d.Model.IsOpen() == false) return;

StringBuilder sb = new StringBuilder();

string path = vizcore3d.Model.Files[0];
sb.AppendLine(string.Format("File : {0}", path));

List<VIZCore3D.NET.Data.Node> nodes =
vizcore3d.Object3D.FromFilter(Data.Object3dFilter.ALL);

sb.AppendLine(string.Format("Count : {0}", nodes.Count));

VIZCore3D.NET.Data.UserDefineAttributeCollection udac =
new Data.UserDefineAttributeCollection();

foreach (VIZCore3D.NET.Data.Node node in nodes)
{
if (node.Index == 0) continue;

VIZCore3D.NET.Data.UserDefineAttributeItem uda =
new VIZCore3D.NET.Data.UserDefineAttributeItem();

uda.NodeId.Add(node.ID);

for (int i = 0; i < 10; i++)
{
string key = String.Empty;
string val = String.Empty;

switch (i)
{
case 0:
{
key = "NAME";
val = node.NodeName;
}
break;
case 1:
{
key = "ID";
val = node.ID.ToString();
}
break;
case 2:
{
key = "INDEX";
val = node.Index.ToString();
}
break;
case 3:
{
key = "PARENT";
val = node.ParentIndex.ToString();
}
break;
case 4:
{
key = "TYPE";
val = node.Kind.ToString();
}
break;
case 5:
{
key = "CHILD";
val = node.ChildCount.ToString();
}
break;
case 6:
{
key = "DEPTH";
val = node.Depth.ToString();
}
break;
case 7:
{
key = "UDA#1";
val = string.Format("{0}-{1}", node.ID, node.NodeName);
}
break;
case 8:
{
key = "UDA#2";
val = string.Format("{0}-{1}", node.Index, node.NodeName);
}
break;
case 9:
{
key = "UDA#3";
val = string.Format("{0}-{1}", node.ParentIndex, node.NodeName);
}
break;
default:
break;
}

if (uda.Property.ContainsKey(key) == false)
uda.Property.Add(key, val);
}

udac.Items.Add(uda);
}

string output = string.Format(
"{0}\\{1}_Attribute.viz"
, System.IO.Path.GetDirectoryName(path)
, System.IO.Path.GetFileNameWithoutExtension(path)
);

System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();

vizcore3d.Object3D.UDA.Add(
path /* INPUT VIZ */
, output /* OUTPUT VIZ */
, udac /* UDA Collection */
);

sw.Stop();

sb.AppendLine(
string.Format(
"ElapsedMilliseconds : {0:#,0}"
, sw.ElapsedMilliseconds
)
);

MessageBox.Show(sb.ToString(), "VIZCore3D.NET", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

private void ExampleV2()
{
string input = "C:\\MODEL\\BLOCK.viz";
string output = "C:\\MODEL\\BLOCK_ATTRIBUTE.viz";

VIZCore3D.NET.Data.UserDefineAttributeCollection uda =
new VIZCore3D.NET.Data.UserDefineAttributeCollection();

// Get Structure
VIZCore3D.NET.ShdCore.StructureManager stru =
new ShdCore.StructureManager(input);
List<VIZCore3D.NET.ShdCore.ModelTreeNode> nodes = stru.Roots;

foreach (VIZCore3D.NET.ShdCore.ModelTreeNode node in nodes)
{
// Filtering
if (node.NodeType != VIZCore3D.NET.ShdCore.ModelTreeNodeKind.ASSEMBLY) continue;

// Target ID
long id = node.EntityId;

// NEW Attribute
VIZCore3D.NET.Data.UserDefineAttributeItem item = new VIZCore3D.NET.Data.UserDefineAttributeItem();
item.NodeId.Add(Convert.ToInt32(id));

item.Property.Add("NAME", node.NodeName);
item.Property.Add("KIND", node.NodeType.ToString());

uda.Items.Add(item);
}

// Import Attribute
vizcore3d.Object3D.UDA.Add(input, output, uda);
}

Add(string key, string val, bool recursive)​

public void Add(string key, string val, bool recursive)

선택된 개체에 속성을 추가

Parameters​

NameTypeDescription
keystring속성 키
valstring속성 정보
recursivebool재귀적으로 추가 여부