diff --git a/.env.development b/.env.development
index 9a1529ed..4cc98669 100644
--- a/.env.development
+++ b/.env.development
@@ -5,4 +5,6 @@ NEXT_PUBLIC_TEST="테스트변수입니다. development"
DATABASE_URL="sqlserver://mssql.devgrr.kr:1433;database=qcast;user=qcast;password=Qwertqaz12345;trustServerCertificate=true"
-SESSION_SECRET="i3iHH1yp2/2SpQSIySQ4bpyc4g0D+zCF9FAn5xUG0+Y="
\ No newline at end of file
+SESSION_SECRET="i3iHH1yp2/2SpQSIySQ4bpyc4g0D+zCF9FAn5xUG0+Y="
+
+CONVERTER_API_URL="https://v2.convertapi.com/convert/dwg/to/png?Secret=secret_bV5zuYMyyIYFlOb3"
\ No newline at end of file
diff --git a/.env.production b/.env.production
index 8970b77b..145db4d0 100644
--- a/.env.production
+++ b/.env.production
@@ -4,4 +4,6 @@ NEXT_PUBLIC_API_SERVER_PATH="http://localhost:8080"
DATABASE_URL=""
-SESSION_SECRET="i3iHH1yp2/2SpQSIySQ4bpyc4g0D+zCF9FAn5xUG0+Y="
\ No newline at end of file
+SESSION_SECRET="i3iHH1yp2/2SpQSIySQ4bpyc4g0D+zCF9FAn5xUG0+Y="
+
+CONVERTER_API_URL="https://v2.convertapi.com/convert/dwg/to/png?Secret=secret_bV5zuYMyyIYFlOb3"
\ No newline at end of file
diff --git a/package.json b/package.json
index bbd8c881..a91884a8 100644
--- a/package.json
+++ b/package.json
@@ -32,6 +32,7 @@
},
"devDependencies": {
"@turf/turf": "^7.0.0",
+ "convertapi": "^1.14.0",
"dayjs": "^1.11.13",
"postcss": "^8",
"prettier": "^3.3.3",
diff --git a/src/components/Playground.jsx b/src/components/Playground.jsx
index d7b06e58..4d8007b9 100644
--- a/src/components/Playground.jsx
+++ b/src/components/Playground.jsx
@@ -6,6 +6,7 @@ import ColorPicker from './common/color-picker/ColorPicker'
import { useAxios } from '@/hooks/useAxios'
import { useMessage } from '@/hooks/useMessage'
+import { convertDwgToPng } from '@/lib/cadAction'
// import { get } from '@/lib/Axios'
import QSelect from '@/components/ui/QSelect'
@@ -13,7 +14,8 @@ import QSelect from '@/components/ui/QSelect'
import styles from './playground.module.css'
export default function Playground() {
- const { get } = useAxios()
+ const fileRef = useRef(null)
+ const { get, post } = useAxios()
const testVar = process.env.NEXT_PUBLIC_TEST
const { getMessage } = useMessage()
@@ -28,6 +30,16 @@ export default function Playground() {
console.log('users', users)
}
+ const handleConvert = async () => {
+ console.log('file', fileRef.current.files[0])
+
+ const formData = new FormData()
+ formData.append('file', fileRef.current.files[0])
+
+ const result = await post({ url: process.env.CONVERTER_API_URL, data: formData })
+ await convertDwgToPng(result.Files[0].FileName, result.Files[0].FileData)
+ }
+
const data = [
{
id: 1,
@@ -70,6 +82,12 @@ export default function Playground() {
{color}
+
>
)
diff --git a/src/components/ui/SurfaceShape.jsx b/src/components/ui/SurfaceShape.jsx
index 46bac2a5..21f3edd7 100644
--- a/src/components/ui/SurfaceShape.jsx
+++ b/src/components/ui/SurfaceShape.jsx
@@ -634,30 +634,60 @@ export const SurfaceShapeModal = ({ canvas }) => {
switch (type) {
case 1: {
if (length3 !== 0 && length1 > length3) {
- return false
+ return
+ }
+ break
+ }
+ case 3: {
+ if (length3 > length1) {
+ return
+ }
+ break
+ }
+ case 6: {
+ if (length3 > length1) {
+ return
+ }
+ break
+ }
+ case 7: {
+ if (length3 > length1) {
+ return
+ }
+ break
+ }
+ case 8: {
+ if (length2 > length3) {
+ return
+ }
+ break
+ }
+ case 9: {
+ if (length2 > length3) {
+ return
}
break
}
case 21: {
if (length1 < length2) {
alert('1번보다 작게 입력해주세요.')
- return false
+ return
}
if (length3 < length4) {
alert('3번보다 작게 입력해주세요.')
- return false
+ return
}
}
case 22: {
if (length1 < length2) {
alert('1번보다 작게 입력해주세요.')
- return false
+ return
}
if (length3 < length4) {
alert('3번보다 작게 입력해주세요.')
- return false
+ return
}
}
}
diff --git a/src/lib/cadAction.js b/src/lib/cadAction.js
new file mode 100644
index 00000000..be69fecb
--- /dev/null
+++ b/src/lib/cadAction.js
@@ -0,0 +1,13 @@
+const convertDwgToPng = async (fileName, data) => {
+ console.log('fileName', fileName)
+ const imagePath = 'public/cad-images'
+ try {
+ await fs.readdir(imagePath)
+ } catch {
+ await fs.mkdir(imagePath)
+ }
+
+ return fs.writeFile(`${imagePath}/${fileName}`, data, 'base64')
+}
+
+export { convertDwgToPng }
diff --git a/yarn.lock b/yarn.lock
index d41582a6..1a73ec7a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4017,6 +4017,15 @@ asynckit@^0.4.0:
resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+axios@^1.6.2:
+ version "1.7.7"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f"
+ integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==
+ dependencies:
+ follow-redirects "^1.15.6"
+ form-data "^4.0.0"
+ proxy-from-env "^1.1.0"
+
axios@^1.7.3:
version "1.7.3"
resolved "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz"
@@ -4252,6 +4261,13 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0:
resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"
integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
+convertapi@^1.14.0:
+ version "1.14.0"
+ resolved "https://registry.yarnpkg.com/convertapi/-/convertapi-1.14.0.tgz#a291a98cb986ae1e0f2340a130adbe17f65c8c76"
+ integrity sha512-9Rzkn+Mjs4jVLQ5pRUC8KpIjnT9WFUkuJZ5yjCJaDJsDM7Na2lWPKtDJdkfKcYCNDuo1h+OYZedne5SLp60EkQ==
+ dependencies:
+ axios "^1.6.2"
+
cookie@0.6.0:
version "0.6.0"
resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz"