본문으로 건너뛰기

V.2.8.23.212

Major Features​

  • Review 항목 제거 후 이벤트 추가
  • Generic 파일 Marking, String, End, Bevel 데이터 개수 및 가시화 기능 추가
  • 카메라 정보 백업 / 복원 시, 백업 시 Zoom 비율이 복원될 수 있도록 개선
  • 백그라운드 이미지 모드에서 이미지 저장 시 파일 이름 형식 수정
  • 단면/상자 클리핑된 개체의 Area/Volume 정보 반환 API 추가
  • UDA(사용자 정의 속성)에 전체 모델의 Area/Volume 정보 생성 기능 추가
  • 이름의 특정 문자열을 지정된 문자열로 변경하는 API 추가
  • 측정 위치 변경 API 추가
  • VIZW 파일 내보내기 시, 압축 기능 추가
  • 파일 열기 시, VIZM/VIZW 지원 추가
  • 아바타를 활용한 충돌 검사 기능 추가
  • 표면노트 기본값 설정 기능 추가
  • 모델 추가 시, 추가된 노드 개체 목록 반환 API 추가
  • 외형검색 결과 내보내기 다이얼로그 추가
  • 단일 부재로 내보내기 API 추가
  • 간소화 품질 설정 가능한 Virtual Screen Size 및 Count 파라미터 추가
  • 좌표계(Frame) 축별 좌표값으로 설정할 수 있는 API 추가
  • 리뷰 항목 HitTest API 추가
  • 선택 개체 표시 유형 추가
  • 동일 부모 하위에 동일 이름 개체 삭제 API 추가
  • 워터마크 API 추가

Full List​

Full List of Issues Covering all Changes in this Release

ModuleSummaryCategory
ReviewManagerReview 항목 제거 후 이벤트 추가
• OnReviewDeletedEvent
New Feature
GenericDataManagerGeneric 파일 Marking, String, End, Bevel 데이터 개수 및 가시화 기능 추가
• GitHub (Example)
Enhancement
ViewManager카메라 정보 백업 / 복원 시, 백업 시 Zoom 비율이 복원될 수 있도록 개선
• SetCameraData
Enhancement
SectionManager단면/상자 클리핑된 개체의 Area/Volume 정보 반환 API 추가
• GetGeometryProperty
New Feature
GeometryPropertyManagerUDA(사용자 정의 속성)에 전체 모델의 Area/Volume 정보 생성 기능 추가
• UpdateSolidVolumeAndArea()
New Feature
Object3DManager이름의 특정 문자열을 지정된 문자열로 변경하는 API 추가
• ReplaceName(String, String)
New Feature
ModelManager모델 추가 시, 추가된 노드 개체 목록 반환 API 추가
• Add(List<String>, Dictionary<String, Node>)
New Feature
ModelManager단일 부재로 내보내기 API 추가
• MergeSingleNode(String, String)
New Feature
ModelManager간소화 품질 설정 가능한 Virtual Screen Size 및 Count 파라미터 추가
• ExportSimplifiedModel(String, String, Boolean, Boolean, Single, Single, Single, Single, Single, Single, Boolean, Int32, ModelManager.SimplifiedUnit, Int32, Int32, Boolean)
Enhancement
FrameManager좌표계(Frame) 축별 좌표값으로 설정할 수 있는 API 추가
• XAxisLabelAsPosition
• YAxisLabelAsPosition
• ZAxisLabelAsPosition
New Feature
ReviewManager리뷰 항목 HitTest API 추가
• HitTest(Int32, Int32)
• HitTest(Int32, Int32, ref Int32)
New Feature
Object3DManager선택 개체 표시 유형 추가
• SelectionMode
Enhancement
Object3DManager동일 부모 하위에 동일 이름 개체 삭제 API 추가
• RemoveObjectsWithDuplicateNames()
New Feature
ViewManager워터마크 API 추가New Feature

Resource​

Figure 1: Generic 파일 Marking, String, End, Bevel 데이터​

RELEASE_2.8.001.png

Figure 2: 단면/상자 클리핑된 개체의 Area/Volume 정보​

RELEASE_2.8.002.png

Figure 3: UDA(사용자 정의 속성)에 전체 모델의 Area/Volume 정보​

RELEASE_2.8.003.png

Figure 4: 아바타를 활용한 충돌 검사 기능 추가​

RELEASE_2.8.004.png

Figure 5: 좌표계(Frame) 축별 좌표값 표기 설정​

RELEASE_2.8.005.png

Figure 6: 선택 개체 표시 유형​

RELEASE_2.8.006.png

Figure 7: 워터마크​

RELEASE_2.8.007.png

Sample​

Review 항목 제거 후 이벤트 추가​

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

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

vizcore3d.Review.OnReviewDeletedEvent += Review_OnReviewDeletedEvent;
}

private void Review_OnReviewDeletedEvent(object sender, Event.EventManager.ReviewDeletedEventArgs e)
{
int reviewId = e.ReviewID;
}

Generic 파일 Marking, String, End, Bevel 데이터 개수 및 가시화 기능 추가​

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

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

int countString = vizcore3d.GenericData.GetStringDataCount();
int countMarking = vizcore3d.GenericData.GetMarkingDataCount();
int countBevel = vizcore3d.GenericData.GetBevelSymbolDataCount();
int countEnd = vizcore3d.GenericData.GetLeftRightEndDataCount();
}

단면/상자 클리핑된 개체의 Area/Volume 정보 반환 API 추가​

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

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

VIZCore3D.NET.Data.Section section = vizcore3d.Section.SelectedItem;
if (section == null) return;

// 1. Geometry Property
VIZCore3D.NET.Data.SectionGeometryProperty prop =
vizcore3d.Section.GetGeometryProperty();

float area = prop.Area / 1000.0f / 1000.0f;
string areaDisplayStr = string.Format("{0} ㎡", area);

float volume = prop.Volume / 1000.0f / 1000.0f / 1000.0f;
string volumeDisplayStr = string.Format("{0} ㎥", volume);

// 2. Error Node Index
foreach (int errorNodeIndex in prop.ErrorIndex)
{
Console.WriteLine(string.Format("Error Node Index : {0}", errorNodeIndex));
}

// 3. Clipped Parts
List<VIZCore3D.NET.Data.Node> nodes = new List<VIZCore3D.NET.Data.Node>();

if (section.SectionType == VIZCore3D.NET.Manager.SectionManager.SectionTypes.SECTION)
{
nodes.AddRange(vizcore3d.Section.GetSectionNode(section.ID, -1));
}
else if (section.SectionType == VIZCore3D.NET.Manager.SectionManager.SectionTypes.SECTION_BOX)
{
for (int i = 0; i < 6; i++)
{
nodes.AddRange(vizcore3d.Section.GetSectionNode(section.ID, i));
}
}

foreach (VIZCore3D.NET.Data.Node node in nodes)
{
VIZCore3D.NET.Data.SectionGeometryPartProperty partGeometry = null;

if (prop.PartData.ContainsKey(node.Index) == true)
{
partGeometry = prop.PartData[node.Index];
}
else if (prop.PartData.ContainsKey(node.Index + 1) == true)
{
partGeometry = prop.PartData[node.Index + 1];
}

float orgArea = 0.0f;
float orgVolume = 0.0f;
float resultArea = 0.0f;
float resultVolume = 0.0f;

if (partGeometry != null)
{
orgArea = partGeometry.OriginalArea / 1000.0f / 1000.0f;
orgVolume = partGeometry.OriginalVolume / 1000.0f / 1000.0f / 1000.0f;

resultArea = partGeometry.ResultArea / 1000.0f / 1000.0f;
resultVolume = partGeometry.ResultVolume / 1000.0f / 1000.0f / 1000.0f;
}

Console.WriteLine(
string.Format(
"{0}, {1}, {2}, {3}, {4}, {5}, {6}"
, node.Index.ToString()
, node.NodeName
, node.GetParentName()
, partGeometry == null ? "N/A" : orgArea.ToString()
, partGeometry == null ? "N/A" : orgVolume.ToString()
, partGeometry == null ? "N/A" : resultArea.ToString()
, partGeometry == null ? "N/A" : resultVolume.ToString()
)
);
}
}

이름의 특정 문자열을 지정된 문자열로 변경하는 API 추가​

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

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

string oldName = "HULL";
string newName = "선체";

vizcore3d.Object3D.ReplaceName(oldName, newName);
}

표면노트 기본값 설정 기능 추가​

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

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

// 기본 데이터 생성
VIZCore3D.NET.Data.SurfaceNoteDefaultData item = new VIZCore3D.NET.Data.SurfaceNoteDefaultData();
item.UseSymbol = true;
item.SymbolText = "1";
item.ModelNameLevel = 1;

// 기본 데이터 설정
vizcore3d.Review.Note.SurfaceNoteDefaultValue = item;

// 리뷰 변경 : 표면노트 추가 이벤트
vizcore3d.Review.OnReviewChangedEvent += Review_OnReviewChangedEvent;

// 표면노트 추가
vizcore3d.Review.Note.AddNoteSurfaceDialog();
}

private void Review_OnReviewChangedEvent(object sender, Event.EventManager.ReviewEventArgs e)
{
if (e.EventKind != Manager.ReviewManager.ReviewEventKind.ADDED_SURFACE_NOTE) return;

VIZCore3D.NET.Data.SurfaceNoteDefaultData item = vizcore3d.Review.Note.SurfaceNoteDefaultValue;

item.SymbolText = "2";
}

모델 추가 시, 추가된 노드 개체 목록 반환 API 추가​

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

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

List<string> models = new List<string>();
models.Add("C:\\Model\\BLOCK1.viz");
models.Add("C:\\Model\\BLOCK2.viz");
models.Add("C:\\Model\\BLOCK3.viz");

Dictionary<string, VIZCore3D.NET.Data.Node> nodes =
new Dictionary<string, VIZCore3D.NET.Data.Node>();

bool result = vizcore3d.Model.Add(models, out nodes);

if (result == false) return;

foreach (KeyValuePair<string, VIZCore3D.NET.Data.Node> node in nodes)
{
string file = node.Key;

int index = node.Value.Index;
string name = node.Value.NodeName;
}
}

단일 부재로 내보내기 API 추가​

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

private void Example()
{
string input = "C:\\Model\\Input.viz";
string output = "C:\\Model\\Output.viz";

bool result = vizcore3d.Model.MergeSingleNode(input, output);
}

간소화 품질 설정 가능한 Virtual Screen Size 및 Count 파라미터 추가​

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

private void Example()
{
string input = "C:\\Model\\Input.viz";
string output = "C:\\Model\\Output.viz";

vizcore3d.Model.ExportSimplifiedModel(
input /* INPUT FILE */
, output /* OUTPUT FILE */
, false /* KEEP Structure */
, false /* Limit BoundBox */
, 0 /* BoundBox - Min. X */
, 0 /* BoundBox - Min. Y */
, 0 /* BoundBox - Min. Z */
, 0 /* BoundBox - Max. X */
, 0 /* BoundBox - Max. Y */
, 0 /* BoundBox - Max. Z */
, false /* Limit Mesh Count */
, 0 /* Mesh Count */
, VIZCore3D.NET.Manager.ModelManager.SimplifiedUnit.TRIANGLE_MESH /* Unit */
, 1024 /* Virtual Screen Size */
, 1 /* Virtual Screen Count */
);
}

좌표계(Frame) 축별 좌표값으로 설정할 수 있는 API 추가​

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

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

vizcore3d.Frame.XAxisLabelAsPosition = false; // X-Axis. Frame
vizcore3d.Frame.YAxisLabelAsPosition = false; // Y-Axis. Frame
vizcore3d.Frame.ZAxisLabelAsPosition = true; // Z-Axis. Position
}

리뷰 항목 HitTest API 추가​

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

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

vizcore3d.View.OnViewDefaultMouseUpEvent += View_OnViewDefaultMouseUpEvent;
}

private void View_OnViewDefaultMouseUpEvent(object sender, MouseEventArgs e)
{
// Case 1)
bool existReview1 = vizcore3d.Review.HitTest(e.X, e.Y);

// Case 2)
int reviewId = -1;
bool existReview2 = vizcore3d.Review.HitTest(e.X, e.Y, ref reviewId);
}

동일 부모 하위에 동일 이름 개체 삭제 API 추가​

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

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

int oldCount = vizcore3d.Model.GetModelInformation().NodeCount;

vizcore3d.Object3D.RemoveObjectsWithDuplicateNames();

int newCount = vizcore3d.Model.GetModelInformation().NodeCount;
}

워터마크 API 추가​

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

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

vizcore3d.BeginUpdate();

vizcore3d.View.Watermark.Color = Color.Black;
vizcore3d.View.Watermark.FontSize = VIZCore3D.NET.Data.FontSize.Size_26_Bold;
vizcore3d.View.Watermark.Rotate = 45.0f;
vizcore3d.View.Watermark.Spacing = new VIZCore3D.NET.Data.Vector3D(100, 200, 0);
vizcore3d.View.Watermark.Text = "VIZCore3D.NET\nWatermark";

vizcore3d.EndUpdate();

//vizcore3d.View.Watermark.Clear();
}