2018년 1월 21일 일요일

부대시설물 입력과 출력


    1. 방음벽을 횡단에서 추가하는 경우
      1. 사용자가 drag&drop으로 방음벽을 추가한다.
      2. 방음벽 객체를 생성한다.
        1. CAlignSubsidiaryMng::AddNoiseBarrierOnCrossSection
          1. 방음벽 설치 위치를 결정한다.
          2. CHgAlignStructurePosData 를 생성한다.
          3. 방음벽 객체를 생성한다.
      3. 방음벽을 횡단에 표시한다.
        1. 좌표 계산
          1. parameter 설정
          2. 좌표 계산
        2. 방음벽을 그린다.

설계기준 적용 방법


    1. 설계기준과 관련된 파일 목록
      1. Alignment_Symbol.dwg
      2. HgAlignmentEntityConfig.xml
      3. RoadEquipmentStandard2013.hdb
      4. SuperelevationByRadiusCurvature.hdb
    2. 디렉토리 구조
    3. 설계기준 종류
      1. DesignStandard 에 있는 폴더명들이 설계기준리스트가 됨

Grid 입출력을 Station 옵션에 맞춰서 하기


    1. m_Grid에 station 옵션을 설정
      1. m_Grid.SetStationFormatText(HgAlignmentEntity_GetStationFormatText(m_pHg3DData))
    2. 해당 cell을 station 타입으로 설정
      1. m_Grid.AddCell(row, col++, pVip->GetStationRef(), nFormat, nLineRealForSta, NOTRANS(""), CELL_TYPE_STATION);
    3. 끝!

Object style 추가 방법


    1. 심볼 추가
      1. style이 심볼을 포함하는 경우에 해당 심볼파일 추가한다.
        1. 예) HgAlignmentEntity 는 HgAlignmentSymbol.dwg
    2. System style 추가
      1. 환경설정파일에 system style을 추가한다.
        1. 예) HgAlignmentEntityConfig.xml
    3. Object style 추가
      1. object style은 객체별로 등록해야 한다.
        1. 추가된 Object style이 연관되어 있는 객체에 style의 path명을 등록한다.
          1. 예) CAlignEttHorizontalAlignment::SetHorStylePath

BimRoad 패치 절차


    1. Update List 작성
      1. BimRoad/Patch/AS내용관리시스템(BimRoad).xls 파일 수정
    2. 버전 정보 수정
      1. BimRoad/Include/versionNumber.inc 파일 수정
    3. 베타 패치 실행
    4. 베타 패치 테스트
    5. 정식 패치 실행
    6. Setup 파일을 구글 드라이브에 업로드
      1. Setup 파일
        1. Win32 : \\192.168.0.5\BimRoad_v2_Install\WIN32
        2. Win64 : \\192.168.0.5\BimRoad_v2_Install\WIN64
    7. BimRoad 블로그에 Update list 작성
      1. http://bimroad.blogspot.kr/

두 선형의 교점 찾기


    1. GetStationMatchAlignment
      1. parameter
        1. const HGBOOL &bFast : TRUE - 빠른 검색을 한다.(모호한 상황에서 안 찾아 질 수 있다)

객체 삭제하기


    1. CHg3DData::AddEtt 된 객체는 반드시 CHg3DData::DeleteEtt 를 사용해서 삭제해야 한다.
      1. DeleteEtt시 Undo에 추가해야 하는지 설정한다.
      2. 사용자에 의해서 삭제하지 않은 경우 보통은 Undo에 추가하면 안된다.
    2. CHg3DData::AddEtt가 되지 않은 객체는 delete pEtt 를 해서 삭제한다.

xy좌표로 Sta을 찾을 때 dRefSta에 가장 가까운 Sta을 찾기


    1. GetStaByXyAndRefSta()
      1. parameter
        1. const CDPoint &xyPos - 찾고자 하는 sta의 좌표
        2. const HGDOUBLE &dRefSta - 기준이 되는 sta
        3. HGDOUBLE &dStaRet - 결과 리턴값
    2. 램프일 경우 선형이 겹치기 때문에 좌표로 sta을 찾으면 가장가까운 좌표로 찾기 때문에 제대로 안가져오는 경우가 있음

치수를 마우스 클릭으로 입력하기


    1. Hg3DCad_PreviewInputDim
      1. 마우스 좌표에 걸리는 input dim을 highlight한다.
    2. Hg3DCad_CheckInputDim
      1. 마우스 좌표에 input dim이 있는지 검사해서 사용자에게 치수를 입력받고, 입력받은 값을 리턴한다.
    3. 일반 치수를 Input dim으로 만드는 방법
      1. CAlignEttGutterSection::DrawDim 함수 참조
      2. // 치수에 InputTag를 넣자.
      3. {
      4. pDim->CreateBimProperty();
      5. CHgBimProperty *pBimProp = pDim->GetBimProperty();
      6. if(pBimProp)
      7. {
      8. CHgValueBase value;
      9. value.SetValueString(strValue);
      10. pBimProp->AddItem(value, DIM_INPUT_TAG, TRUE);


      11. value.SetValueString(NOTRANS("MM"));;
      12. pBimProp->AddItem(value, DIM_INPUT_UNIT, TRUE);
      13. }
      14. }

객체를 다시 그리기

    1. CEttBase::Create()
      1. 객체를 다시 그린다.
    2. CHg3DData:Regen()
      1. 최적화 되지 않은 객체만 다시 그린다.
      2. CEttBase::Create() 그린 객체는 최적화 되지 않은 객체로 등록된다.
      3. 결국 동일한 객체를 2번 그린다.
    3. CHg3DData::AddUnOptimizedEtt()
      1. 객체를 최적화 되지 않은 객체로 등록한다.
최적화 되지 않은 객체는 CHg3DData::Regen() 을 호출하면 화면에 그린다.

CallBackManager


    1. 특정 동작후에 호출되어야 하는 함수를 Engine이 아닌 application 수준에서 정해줄 경우 사용한다.
    2. 현재 지원중인 callback
      1. SetCallBack_BeforeMoveEtt
        1. 객체가 Move되기 전에 호출되는 callback을 지정한다.
      2. SetCallBack_BeforeDeleteEtt
        1. 객체가 Delete되기 전에 호출되는 callback을 지정한다.
      3. SetCallBack_AfterCreateEtt
        1. 객체가 create된 후에 호출되는 callback을 지정한다.
    3. 사용예
      1. 특정 객체가 create된 후에 UI를 변경해야 하는 경우
        1. application 에서 UI를 변경하는 전역 함수를 만들고 SetCallBack_AfterCreateEtt에 해당 전역 함수를 등록한다.
    4. 필요한 동작에 대한 CallBack함수가 필요하면 CallBackManager에 직접 개발가능합니다.

반복문 안에서 hggettext 사용하지 말기


    1. hggettext 호출 비용이 큽니다.
    2. 반복문안에서는 호출하지 않도록 합니다.
    3. 반복문 밖에서 문자열을 미리 변수에 담아서 변수를 직접 사용하도록 합시다.

2018년 1월 19일 금요일

개발 문서 작성 테스트

선형
bimroad
인터체인지

기술 문서 작성 테스트

선형
클로소이드

부대시설물 입력과 출력

방음벽을 횡단에서 추가하는 경우 사용자가 drag&drop으로 방음벽을 추가한다. 방음벽 객체를 생성한다. CAlignSubsidiaryMng::AddNoiseBarrierOnCrossSection 방음벽 설치 ...