diff --git a/src/components/floor-plan/modal/lineTypes/RightAngle.jsx b/src/components/floor-plan/modal/lineTypes/RightAngle.jsx
index b217a867..3f64cd1e 100644
--- a/src/components/floor-plan/modal/lineTypes/RightAngle.jsx
+++ b/src/components/floor-plan/modal/lineTypes/RightAngle.jsx
@@ -4,6 +4,18 @@ import { onlyNumberInputChange } from '@/util/input-utils'
export default function RightAngle({ props }) {
const { getMessage } = useMessage()
const { length1, setLength1, length1Ref, length2, setLength2, length2Ref, arrow1, setArrow1, arrow2, setArrow2 } = props
+
+ const handleClickArrow = (arrow) => {
+ const arrowType = arrow === '↑' ? 'ArrowUp' : arrow === '↓' ? 'ArrowDown' : arrow === '←' ? 'ArrowLeft' : arrow === '→' ? 'ArrowRight' : ''
+ setArrow2(arrow)
+ const originLeng2Val = length2Ref.current.value
+ if (originLeng2Val === '') {
+ length2Ref.current.value = '0'
+ }
+ length2Ref.current.focus()
+ length2Ref.current.value = originLeng2Val
+ document.dispatchEvent(new KeyboardEvent('keydown', { key: arrowType }))
+ }
return (
@@ -89,29 +101,25 @@ export default function RightAngle({ props }) {
diff --git a/src/hooks/module/useTrestle.js b/src/hooks/module/useTrestle.js
index 5132a344..17f6711a 100644
--- a/src/hooks/module/useTrestle.js
+++ b/src/hooks/module/useTrestle.js
@@ -807,60 +807,59 @@ export const useTrestle = () => {
const getAzimuth = (parent) => {
const { moduleCompass, surfaceCompass, direction } = parent
- if (surfaceCompass) {
- if (surfaceCompass > 180) {
- return surfaceCompass - 360
- }
- return surfaceCompass
- }
+ let resultAzimuth = surfaceCompass || moduleCompass
+
switch (direction) {
case 'south': {
- if (moduleCompass < 0) {
- return -1 * moduleCompass
- } else if (moduleCompass === 0) {
+ if (resultAzimuth < 0) {
+ return -1 * resultAzimuth
+ } else if (resultAzimuth === 0) {
return 0
- } else if (moduleCompass < 180) {
- return -1 * moduleCompass
- } else if (moduleCompass === 180) {
+ } else if (resultAzimuth < 180) {
+ return -1 * resultAzimuth
+ } else if (resultAzimuth === 180) {
return 180
}
}
case 'north': {
- if (moduleCompass < 0) {
- return -1 * (180 + moduleCompass)
- } else if (moduleCompass === 0) {
+ if (resultAzimuth < 0) {
+ return -1 * (180 + resultAzimuth)
+ } else if (resultAzimuth === 0) {
return 180
- } else if (moduleCompass < 180) {
- return 180 - moduleCompass
- } else if (moduleCompass === 180) {
+ } else if (resultAzimuth < 180) {
+ return 180 - resultAzimuth
+ } else if (resultAzimuth === 180) {
return 0
}
}
case 'west': {
- if (moduleCompass > -180 && moduleCompass < -90) {
- return -180 - (90 + moduleCompass)
- } else if (moduleCompass < 0) {
- return 180 - (90 + moduleCompass)
- } else if (moduleCompass === 0) {
- return 90
- } else if (moduleCompass < 180) {
- return 90 - moduleCompass
- } else if (moduleCompass === 180) {
- return -90
+ if (resultAzimuth > -180 && resultAzimuth < 0) {
+ return -1 * (90 + resultAzimuth)
+ } else if (resultAzimuth === 0) {
+ return -180 + (90 - resultAzimuth)
+ } else if (resultAzimuth < 180) {
+ if (resultAzimuth > 90) {
+ return 180 + (90 - resultAzimuth)
+ }
+ return -180 + (90 - resultAzimuth)
+ } else if (resultAzimuth === 180) {
+ return 180 + (90 - resultAzimuth)
}
}
+
case 'east': {
- if (moduleCompass < 0) {
- return -(90 + moduleCompass)
- } else if (moduleCompass === 0) {
- return -90
- } else if (moduleCompass < 90) {
- return -180 + (90 - moduleCompass)
- } else if (moduleCompass < 180) {
- return 180 + (90 - moduleCompass)
- } else if (moduleCompass === 180) {
- return 90
+ if (resultAzimuth === 0) {
+ return 90 - resultAzimuth
+ } else if (resultAzimuth > 0 && resultAzimuth < 180) {
+ return 90 - resultAzimuth
+ } else if (resultAzimuth === 180) {
+ return 90 - resultAzimuth
+ } else if (resultAzimuth > -180 && resultAzimuth < 0) {
+ if (resultAzimuth < -90) {
+ return -180 - (90 + resultAzimuth)
+ }
+ return 180 - (90 + resultAzimuth)
}
}
}