new U3dSelect(opt)
생성만으로는 동작하지 않습니다. setApp(app)으로 앱을 연결한 뒤 active()를 호출해야 클릭·드래그 입력을 받습니다.
| Name | Type | Default | Description |
|---|---|---|---|
opt |
U3dSelectCO | {} |
optional
생성 옵션. 항목별 의미와 기본값은 |
Members
-
EVENTObject
-
이 클래스가 dispatch하는 선택 이벤트 이름입니다.
on(U3dSelect.EVENT.END, callback)처럼 사용합니다.
START: 사용자가 선택 동작을 시작했을 때(payloaddata는 null). CHANGE: 선택 목록이 바뀌는 중(드래그·다각형 점 추가 등). END: 선택 동작이 끝났을 때. CHANGE/END의 payload는{type, data, work}이며data는 선택 객체 배열,work는getSelectWork()와 같은 형태의 작업 정보입니다. BOX 모드는 추가로pointerdown/pointermove/pointerup을 dispatch합니다. -
TYPEObject
-
강조 표시 방식 이름입니다.
setSelectType()과 생성 옵션selectType에 사용합니다.
COLOR: 선택 객체의 재질 색을 바꿔 강조. OUTLINE: 객체 외곽선을 그려 강조(기본값). -
exceptTextureboolean
-
강조 표시 중 모델 텍스처를 감출지 여부(생성 옵션
exceptTexture). -
modestring
-
현재 선택 모드(
UDEF.SELECT_MODE의 값: point/area/line/circle/box).setMode()로 바꾼다. -
selectBoxEventSelectBoxEvent
-
BOX 모드의 선택 박스와 리스너 식별자 묶음. 형태는
SelectBoxEvent참조. -
styleKeyValue undefined
-
색상 강조 시 재질에 적용할 스타일(생성 옵션
style).remove()후 undefined. -
uuidstring
-
이 선택기 인스턴스의 고유 식별자(GUID). BOX 모드 리스너 이름의 접두어로 쓰인다.
Methods
-
active()
-
선택기능 활성화 함수
현재 모드에 맞는 클릭/드래그 리스너를 앱에 등록합니다.setApp()이 먼저 호출되어 있어야 하며, 이미 활성 상태면 아무 것도 하지 않습니다. BOX 모드에서는 드래그 동안 지도 카메라 조작이 막힙니다. -
addRayOption(key, value)
-
Raycaster(교차 검사) 옵션을 추가/갱신하는 함수
지정된 옵션은 내부 intersect 호출(intersectAtPixel,intersectFromScene)에 전달됩니다.Name Type Description keystring 레이캐스터 옵션 이름(예:
usevisible, 교차 대상 필터 등 앱 intersect 함수가 받는 옵션)valueany 그 옵션에 넣을 값. 같은 키를 다시 지정하면 덮어쓴다
-
addSelected(object, intersect)Promise.<void>
-
해당 모델을 선택하는 기능
선택 목록에 넣고 현재 강조 방식(outline/color)으로 표시하며, 배열을 넘기면 각 원소를 차례로 선택합니다.USelect가 아닌 값과 공유 메시(USharedMesh)는 조용히 무시됩니다. 이벤트는 발생시키지 않습니다.Name Type Description objectUSelect | Array.<USelect> 선택할 객체 또는 객체 배열
intersectU3dIntersectLike optional picking 결과. 병합 메시의 부분(
faceIndex)이나 인스턴스(instanceId)만 강조할 때 전달Returns:
Type Description Promise.<void> 선택 처리가 끝나면 이행되는 Promise. 내부 선택 목록이 없는 비정상 상태에서만 거부된다 -
addTargetLayer(layerName)
-
선택 대상 레이어를 추가하는 함수
targetLayer를 지정하면 picking(선택) 시 해당 레이어들의 scene 위주로 검사하여 성능을 개선할 수 있습니다.Name Type Description layerNamestring 레이어 이름
-
checkGeom(scene, geom)Array.<({object: any, geom: OLGeometry}|Partial.<{instanceId: number}>)>
-
지오메트리(드로잉/측정 결과)와 교차하는 객체 목록을 반환하는 함수 주로
AREA/LINE/CIRCLE/BOX선택 모드에서 선택 결과를 계산할 때 사용합니다.Name Type Description sceneObject3D | Group | Scene | UMesh 검사할 scene(또는 group)
geomOLGeometry intersectsExtent(extent)를 제공하는 geometryReturns:
Type Description Array.<({object: any, geom: OLGeometry}|Partial.<{instanceId: number}>)> 교차한 객체 목록. 인스턴스 메시는 인스턴스별로 instanceId가 붙는다. 3D Tiles 메시는 검사에서 제외되며 안내 메시지만 남긴다 -
clear()
-
선택기능 초기화 함수
선택/드로잉 상태를 초기화하고 측정 레이어의 draw feature를 정리합니다. -
clearDrawnSelect()
-
드로잉으로 그려진 선택 영역(측정 도형)만 제거하는 함수
선택 목록(_selected)은 해제하고, 측정 레이어의 draw feature도 정리합니다. -
clearHighlights()
-
선택 객체 전체의 하이라이트를 제거하는 함수.
-
clearSelect(isCheckIdle)
-
선택 취소하는 함수
Name Type Default Description isCheckIdleboolean false optional 분할(mesh division(*u3f model 한정)) 상태 점검/정리 호출 여부
-
createVerticalObject(result)UGroup|undefined
-
선택 객체에 대해 지표면 기준 수직 보조 객체(빔 + 지면 하이라이트)를 생성하는 함수
opt.setVerticalObject === true일 때 선택 시 자동 생성되며, 필요 시 외부에서 직접 호출할 수 있습니다.Name Type Description resultUSelect 타일 mesh를 제외한 선택 객체. 월드 위치(
position)와 지오메트리 또는getBoundingBox()가 있어야 하며, 없으면 만들지 않는다Returns:
Type Description UGroup | undefined 앱 Scene에 추가된 수직 보조 그룹(빔 userData.verticalMesh, 지면 하이라이트userData.planeMesh). 같은 객체에 이미 만든 것이 있으면 해제 후 교체한다. 만들 수 없으면 undefined -
deactive()
-
선택기능 비활성화 함수
입력 리스너를 해제하고 그리던 영역 도형을 확정합니다. 마지막 이벤트가end가 아니면(선택 동작 도중이면)clear()로 선택도 해제합니다. -
drawByWork(work)boolean|undefined
-
getSelectWork()형태의 작업 정보를 이용해 선택을 재현하는 함수- 드로잉(측정 레이어) 재생성
- 교차 객체 탐색 후 선택/하이라이트 반영
Name Type Description workObject 선택 작업 정보.
type은 선택 모드,points는 위경도(EPSG:4326) 좌표 목록으로getSelectWork()의 반환값을 그대로 넘긴다Returns:
Type Description boolean | undefined 재현 성공 시 true. 입력이 유효하지 않거나 앱·측정 레이어가 없으면 반환 없음(POINT 모드는 재현 후에도 반환 없음) -
getClickId()string|undefined
-
내부 click 이벤트 등록 키를 반환하는 함수
Returns:
Type Description string | undefined click listener key -
getDbClickId()string|undefined
-
내부 dblclick 이벤트 등록 키를 반환하는 함수
Returns:
Type Description string | undefined dblclick listener key -
getMeasurePointList()undefined|Array.<GeoPosition>
-
현재 측정/드로잉 중인 점 목록을 반환하는 함수
AREA/LINE/CIRCLE모드에서 드로잉 중일 때 유효합니다.Returns:
Type Description undefined | Array.<GeoPosition> 그리는 중인 도형의 꼭짓점 위경도(EPSG:4326) 목록. 측정 레이어가 없거나 점이 없으면 undefined -
getMode()string
-
현재 선택된 모드를 반환하는 함수
Returns:
Type Description string 선택 모드
(단일: 'point', 영역: 'area', 선: 'line', 반경: 'circle', 드래그 사각형: 'box'). 모드가 설정되지 않았으면 빈 문자열 -
getObjectKey(object)string|void
-
객체로부터 내부 선택 키를 생성하여 반환하는 함수
Name Type Description objectUSelect 대상 객체
Returns:
Type Description string | void 선택 키(생성 실패 시 반환 없음) -
getSelectBox()U3dSelectionBox|undefined
-
BOX 선택 모드에서 사용되는 선택 박스 객체를 반환하는 함수
Returns:
Type Description U3dSelectionBox | undefined 드래그 사각형을 그리는 선택 박스. BOX 모드로 활성화된 적이 없으면 undefined -
getSelectCount()number
-
현재 선택된 모델의 개수를 반환하는 함수
Returns:
Type Description number 선택된 모델 개수 -
getSelectType()string
-
현재 선택 하이라이트 타입을 반환하는 함수
Returns:
Type Description string 선택 타입 -
getSelectTypeOption()KeyValue
-
현재 선택 하이라이트 타입의 옵션을 반환하는 함수
Returns:
Type Description KeyValue outline 강조에 적용되는 mode·renderOrder등의 옵션. 지정한 적이 없으면 빈 객체 -
getSelectWork()Object|void
-
현재 선택 작업(work) 정보를 반환하는 함수
반환값은 이벤트(change/end)의e.work와 동일한 형태를 의도하며,drawByWork()에 넘겨 같은 선택을 재현할 수 있습니다. POINT 모드에서는 반환과 함께 내부 지점 목록을 비우므로 연속 호출 시 두 번째부터는 빈 목록이 됩니다.Returns:
Type Description Object | void 선택 모드와 위경도(EPSG:4326) 좌표 목록. 모드가 없거나 영역 도형이 확정되지 않았으면 반환 없음 -
getSelected()Array.<USelect>
-
선택된 객체를 반환하는 함수
Returns:
Type Description Array.<USelect> 선택된 Mesh 객체 리스트 -
getSelectedAsKey(key)USelect|undefined
-
키로 선택 객체를 조회하는 함수
Name Type Description keystring 선택 키(
레이어이름^객체id,getSelectedKey()나getObjectKey()로 얻는 값)Returns:
Type Description USelect | undefined 그 키로 선택된 객체. 선택되어 있지 않으면 undefined -
getSelectedKey()Array.<string>
-
선택된 객체 키 목록을 반환하는 함수
Returns:
Type Description Array.<string> 선택 키 배열. 키는 레이어이름^객체id형식이며getSelectedAsKey()에 넘겨 객체를 얻을 수 있다 -
isActive()boolean
-
선택기능 활성화 여부를 반환하는 함수
Returns:
Type Description boolean 선택 기능 활성화 여부 -
isExceptTexture()boolean|undefined
-
현재 선택 모델 텍스쳐 제외 여부를 반환하는 함수
Returns:
Type Description boolean | undefined 선택 모델 텍스쳐 제외 여부(설정되지 않았으면 반환 없음) -
off(type, listener)
-
이벤트리스너 제거 함수
Name Type Description typestring 이벤트 종류. 이 클래스가 dispatch하는
U3dSelect.EVENT의 값(start/change/end)과 BOX 모드의pointerdown/pointermove/pointeruplistenerfunction 제거할 콜백 함수(
on에 넘긴 함수 자체) -
on(type, listener)string|null
-
이벤트리스너 등록함수
Name Type Description typestring 이벤트 종류. 이 클래스가 dispatch하는
U3dSelect.EVENT의 값(start/change/end)과 BOX 모드의pointerdown/pointermove/pointeruplistenerEventCallBack 이벤트 발생 시
{type, data, work}payload를 받는 콜백Returns:
Type Description string | null 등록된 리스너 식별자. off(type, id)로 제거할 때 사용하며, 등록에 실패하면 null -
remove()
-
U3dSelect 제거(dispose) 함수
선택 해제·비활성화 후 이 객체에 등록된 모든 이벤트 리스너(on으로 등록한 사용자 리스너 포함)를 제거하고 내부 자원을 해제합니다. 호출 후에는 다시 사용할 수 없습니다. -
removeSelected(object)
-
해당 모델의 선택을 취소하는 기능
Name Type Description objectUSelect 모델객체
-
removeTargetLayer(layerName)
-
선택 대상 레이어를 제거하는 함수
Name Type Description layerNamestring 레이어 이름
-
removeVerticalObject(key, selected)
-
선택 해제 시 수직 보조 객체를 제거하는 함수
Name Type Description keystring 내부 선택 키(
layerName + '^' + id)selectedUSelect 선택 객체
-
resetSelectedColor()
-
선택 객체 출력 색 초기화 함수
-
resetSelectorColor()
-
선택 영역 형상 스타일 초기화 함수
-
setApp(app)
-
작동할 U3dApp을 설정하는 함수, (U3dSelect 객체를 작동하기 위하여 필수적으로 사용하여야 하는 함수)
Name Type Description appU3dApp U3dSelect가 작동할 App
-
setColor(selected, color, opacity, intersect)
-
선택 객체에 색상 하이라이트를 적용하는 함수
selectType === UDEF.SELECT_TYPE.COLOR|| ['color'] 에서 사용되며 외부에서 직접 호출할 수도 있습니다.Name Type Description selectedUSelect 대상 모델
colorColorRepresentation 변경 색상
opacitynumber 투명도(0~1)
intersectU3dIntersectLike optional picking 정보(faceIndex 등)
-
setExceptTexture(exceptTexture)
-
선택 하이라이트 시 모델의 텍스처를 제외할지 설정하는 메서드.
true이면 하이라이트가 적용될 때 텍스처를 표시하지 않는다.Name Type Description exceptTextureboolean 선택 모델의 텍스처 제외 여부
-
setMode(mode)
-
선택 모드를 설정하는 함수
앱이 연결된 상태면 측정 레이어의 도형 종류를 모드에 맞게 바꾸고, 입력 리스너를 다시 등록한 뒤clear()를 호출하므로 현재 선택과 그려진 도형이 모두 해제됩니다.Name Type Description modestring 선택 모드
UDEF.SELECT_MODE.POINT ['point'] | AREA ['area'] | LINE ['line'] | CIRCLE ['circle'] | BOX ['box']
Throws:
-
지원하지 않는 모드가 입력된 경우
- Type
- Error
-
setOutline(selected)
-
선택 객체에 Outline(외곽선) 하이라이트를 적용하는 함수
selectType === UDEF.SELECT_TYPE.OUTLINE|| 'outline' 에서 사용되며, 외부에서 직접 호출할 수도 있습니다.Name Type Description selectedUSelect 선택 객체(모델/메시)
-
setSelectType(val, typeOption)
-
선택 하이라이트 타입을 설정하는 함수
UDEF.SELECT_TYPE.OUTLINE||['outline'] : 외곽선 강조UDEF.SELECT_TYPE.COLOR||['color'] : 색상 강조
Name Type Description valstring 선택 타입
typeOptionKeyValue 타입 옵션 outline 일때 : {mode : U3dObjectBarrier.MODE의 값 중 하나, renderOrder: U3dObjectBarrier.RENDER_ORDER의 우선순위 값, ...}
-
setSelectedAsKey(key, select)
-
키로 선택 객체를 직접 설정하는 함수 일반적으로는
addSelected/removeSelected사용을 권장합니다.Name Type Description keystring 선택 키(
레이어이름^객체id). 기존 키면 값을 덮어쓴다selectUSelect 그 키로 등록할 객체. 하이라이트나 이벤트는 발생시키지 않고 목록에만 넣는다
-
setSelectedColor(color, opacity)
-
선택 객체 출력 색 변경 함수
현재 선택된 객체 전체와 수직 보조 객체에 즉시 적용되고, 이후 선택되는 객체에도 같은 색이 쓰입니다.color·opacity에 falsy 값(0, '' 등)을 주면 그 항목은 이전 값을 유지하므로 투명도 0은 지정할 수 없습니다.Name Type Description colorColorRepresentation 변경색(three.js가 받는 색 표현: 16진수 숫자, CSS 문자열,
Color객체)opacitynumber 투명도 (0 ~1, 1이 불투명)
-
setSelectorColor(opt)
-
선택영역 형상 스타일 변경 함수
AREA/LINE/CIRCLE 모드에서 그려지는 도형의 외곽선·채움 스타일을 바꿉니다. 앱이 연결되기 전이거나opt가 없으면 아무 것도 하지 않습니다.Name Type Description optSelectorColorOption optional 바꿀 스타일. 생략한 항목은 측정 레이어 기본값을 유지한다
-
setTexture(model, exceptTexture)
-
선택 표시에서 텍스쳐를 제외/복원하는 함수
Name Type Description modelUSelect 대상 모델(UMesh/THREE.Mesh 등)
exceptTextureboolean true면 텍스쳐를 제외, false면 복원