흡착점 작동 관련 수정

This commit is contained in:
hyojun.choi 2025-05-20 10:23:36 +09:00
parent 70a4c85149
commit d4ae092ae5
3 changed files with 30 additions and 21 deletions

View File

@ -185,7 +185,7 @@ export default function SecondOption(props) {
const onClickOption = async (item) => {
let option4Data = settingModalSecondOptions?.option4
let adsorpPointData = adsorptionPointMode.adsorptionPoint
let adsorpPointData = adsorptionPointMode
// ( )
if (
@ -203,11 +203,9 @@ export default function SecondOption(props) {
//
setAdsorptionRange(item.range)
setAdsorptionPointMode({ ...adsorptionPointMode, adsorptionPoint: adsorpPointData })
setAdsorptionPointMode(adsorpPointData)
} else if (item === 'adsorpPoint') {
setAdsorptionPointMode({ ...adsorptionPointMode, adsorptionPoint: !adsorpPointData })
adsorpPointData = !adsorpPointData
setAdsorptionPointMode(!adsorpPointData)
}
setSettingsData({ ...settingsData, option4: [...option4Data], adsorptionPoint: adsorpPointData })
@ -257,7 +255,7 @@ export default function SecondOption(props) {
}}
>
<span>{getMessage('modal.canvas.setting.font.plan.absorption.point')}</span>
<i>{adsorptionPointMode.adsorptionPoint ? 'ON' : 'OFF'}</i>
<i>{adsorptionPointMode ? 'ON' : 'OFF'}</i>
</button>
</div>
</div>

View File

@ -609,7 +609,7 @@ export function useCanvasSetting(executeEffect = true) {
const optionData5 = settingModalFirstOptions.dimensionDisplay.map((item) => ({ ...item }))
/** 흡착점 ON/OFF */
setAdsorptionPointMode({ ...adsorptionPointMode, adsorptionPoint: res.adsorpPoint })
setAdsorptionPointMode(res.adsorpPoint)
/** 치수선 설정 */
setDimensionLineSettings({ ...dimensionLineSettings, pixel: res.originPixel, color: res.originColor })
@ -695,7 +695,7 @@ export function useCanvasSetting(executeEffect = true) {
/** 조회된 글꼴 데이터가 없는 경우 (데이터 초기화) */
/** 흡착점 ON/OFF */
setAdsorptionPointMode({ ...adsorptionPointMode, adsorptionPoint: false })
setAdsorptionPointMode(false)
/** 치수선 설정 */
resetDimensionLineSettings()
@ -775,7 +775,7 @@ export function useCanvasSetting(executeEffect = true) {
adsorpRangeMedium: dataToSend.secondOption2[2].selected,
adsorpRangeLarge: dataToSend.secondOption2[3].selected,
/** 흡착점 ON/OFF */
adsorpPoint: adsorptionPointMode.adsorptionPoint,
adsorpPoint: adsorptionPointMode,
//??: adsorptionRange, 사용여부 확인 필요
/** 문자 글꼴 설정 */

View File

@ -104,24 +104,35 @@ export function useEvent() {
if (dotLineGridSetting.LINE || canvas.getObjects().filter((obj) => ['lineGrid', 'tempGrid'].includes(obj.name)).length > 0) {
const closestLine = getClosestLineGrid(pointer)
const horizonLines = canvas.getObjects().filter((obj) => obj.name === 'lineGrid' && obj.direction === 'horizontal')
const verticalLines = canvas.getObjects().filter((obj) => obj.name === 'lineGrid' && obj.direction === 'vertical')
const horizonLines = canvas.getObjects().filter((obj) => ['lineGrid', 'tempGrid'].includes(obj.name) && obj.direction === 'horizontal')
const verticalLines = canvas.getObjects().filter((obj) => ['lineGrid', 'tempGrid'].includes(obj.name) && obj.direction === 'vertical')
if (!horizonLines || !verticalLines) {
return
}
const closestHorizontalLine = horizonLines.reduce((prev, curr) => {
const prevDistance = calculateDistance(pointer, prev)
const currDistance = calculateDistance(pointer, curr)
return prevDistance < currDistance ? prev : curr
})
let closestHorizontalLine = null
let closestVerticalLine = null
const closestVerticalLine = verticalLines.reduce((prev, curr) => {
const prevDistance = calculateDistance(pointer, prev)
const currDistance = calculateDistance(pointer, curr)
return prevDistance < currDistance ? prev : curr
})
if (horizonLines && horizonLines.length > 0) {
closestHorizontalLine = horizonLines.reduce((prev, curr) => {
const prevDistance = calculateDistance(pointer, prev)
const currDistance = calculateDistance(pointer, curr)
return prevDistance < currDistance ? prev : curr
})
}
if (verticalLines && verticalLines.length > 0) {
closestVerticalLine = verticalLines.reduce((prev, curr) => {
const prevDistance = calculateDistance(pointer, prev)
const currDistance = calculateDistance(pointer, curr)
return prevDistance < currDistance ? prev : curr
})
}
if (!closestVerticalLine || !closestHorizontalLine) {
return
}
const closestIntersectionPoint = calculateIntersection(closestHorizontalLine, closestVerticalLine)