Merge branch 'solvespace:master' into keep-split-entities
commit
9650a28af8
|
@ -1,8 +1,8 @@
|
|||
#!/bin/sh -xe
|
||||
|
||||
if [ "$1" = "ci" ]; then
|
||||
armloc=$(brew fetch --bottle-tag=arm64_big_sur libomp | grep -i downloaded | grep tar.gz | cut -f2 -d:)
|
||||
x64loc=$(brew fetch --bottle-tag=big_sur libomp | grep -i downloaded | grep tar.gz | cut -f2 -d:)
|
||||
armloc=$(brew fetch --bottle-tag=arm64_ventura libomp | grep -i downloaded | grep tar.gz | cut -f2 -d:)
|
||||
x64loc=$(brew fetch --bottle-tag=ventura libomp | grep -i downloaded | grep tar.gz | cut -f2 -d:)
|
||||
cp $armloc /tmp/libomp-arm64.tar.gz
|
||||
mkdir /tmp/libomp-arm64 || true
|
||||
tar -xzvf /tmp/libomp-arm64.tar.gz -C /tmp/libomp-arm64
|
||||
|
|
|
@ -58,34 +58,29 @@ hdiutil create -srcfolder "${app}" "${dmg}"
|
|||
# sign the .dmg
|
||||
codesign -s "${MACOS_DEVELOPER_ID}" --timestamp --options runtime -f --deep "${dmg}"
|
||||
|
||||
# notarize and store request uuid in variable
|
||||
notarize_uuid=$(xcrun altool --notarize-app --primary-bundle-id "${bundle_id}" --username "${MACOS_APPSTORE_USERNAME}" --password "${MACOS_APPSTORE_APP_PASSWORD}" --file "${dmg}" | grep RequestUUID | awk '{print $3'})
|
||||
if ! command -v xcrun >/dev/null || ! xcrun --find notarytool >/dev/null; then
|
||||
echo "Notarytool is not present in the system. Notarization has failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo $notarize_uuid
|
||||
# Submit the package for notarization
|
||||
notarization_output=$(
|
||||
xcrun notarytool submit "${dmg}" \
|
||||
--apple-id "hello@koenschmeets.nl" \
|
||||
--password "${MACOS_APPSTORE_APP_PASSWORD}" \
|
||||
--team-id "8X77K9NDG3" \
|
||||
--wait 2>&1)
|
||||
|
||||
# wait a bit so we don't get errors during checking
|
||||
sleep 10
|
||||
|
||||
success=0
|
||||
for (( ; ; ))
|
||||
do
|
||||
echo "Checking progress..."
|
||||
progress=$(xcrun altool --notarization-info "${notarize_uuid}" -u "${MACOS_APPSTORE_USERNAME}" -p "${MACOS_APPSTORE_APP_PASSWORD}" 2>&1)
|
||||
# echo "${progress}"
|
||||
|
||||
if [ $? -ne 0 ] || [[ "${progress}" =~ "Invalid" ]] ; then
|
||||
echo "Error with notarization. Exiting"
|
||||
break
|
||||
fi
|
||||
|
||||
if [[ "${progress}" =~ "success" ]]; then
|
||||
success=1
|
||||
break
|
||||
else
|
||||
echo "Not completed yet. Sleeping for 10 seconds"
|
||||
fi
|
||||
sleep 10
|
||||
done
|
||||
if [ $? -eq 0 ]; then
|
||||
# Extract the operation ID from the output
|
||||
operation_id=$(echo "$notarization_output" | awk '/RequestUUID/ {print $NF}')
|
||||
echo "Notarization submitted. Operation ID: $operation_id"
|
||||
exit 0
|
||||
else
|
||||
echo "Notarization failed. Error: $notarization_output"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# staple
|
||||
xcrun stapler staple "${dmg}"
|
||||
|
|
|
@ -114,36 +114,36 @@ jobs:
|
|||
name: macos
|
||||
path: build/bin/SolveSpace.dmg
|
||||
|
||||
deploy_snap_amd64:
|
||||
needs: [test_ubuntu, test_windows, test_macos]
|
||||
name: Deploy AMD64 Snap
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Fetch Tags
|
||||
run: git fetch --force --tags
|
||||
- name: Set Up Source
|
||||
run: rsync --filter=":- .gitignore" -r ./ pkg/snap/solvespace-snap-src
|
||||
- name: Build Snap
|
||||
uses: snapcore/action-build@v1
|
||||
id: build
|
||||
with:
|
||||
path: pkg/snap
|
||||
- name: Upload & Release to Edge
|
||||
if: github.event_name == 'push'
|
||||
uses: snapcore/action-publish@v1
|
||||
env:
|
||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPSTORE_LOGIN }}
|
||||
with:
|
||||
snap: ${{ steps.build.outputs.snap }}
|
||||
release: edge
|
||||
- name: Upload & Release to Beta + Edge
|
||||
if: github.event_name == 'release'
|
||||
uses: snapcore/action-publish@v1
|
||||
with:
|
||||
store_login: ${{ secrets.SNAPSTORE_LOGIN }}
|
||||
snap: ${{ steps.build.outputs.snap }}
|
||||
release: edge,beta
|
||||
# deploy_snap_amd64:
|
||||
# needs: [test_ubuntu, test_windows, test_macos]
|
||||
# name: Deploy AMD64 Snap
|
||||
# runs-on: ubuntu-latest
|
||||
# steps:
|
||||
# - uses: actions/checkout@v2
|
||||
# - name: Fetch Tags
|
||||
# run: git fetch --force --tags
|
||||
# - name: Set Up Source
|
||||
# run: rsync --filter=":- .gitignore" -r ./ pkg/snap/solvespace-snap-src
|
||||
# - name: Build Snap
|
||||
# uses: snapcore/action-build@v1
|
||||
# id: build
|
||||
# with:
|
||||
# path: pkg/snap
|
||||
# - name: Upload & Release to Edge
|
||||
# if: github.event_name == 'push'
|
||||
# uses: snapcore/action-publish@v1
|
||||
# env:
|
||||
# SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPSTORE_LOGIN }}
|
||||
# with:
|
||||
# snap: ${{ steps.build.outputs.snap }}
|
||||
# release: edge
|
||||
# - name: Upload & Release to Beta + Edge
|
||||
# if: github.event_name == 'release'
|
||||
# uses: snapcore/action-publish@v1
|
||||
# with:
|
||||
# store_login: ${{ secrets.SNAPSTORE_LOGIN }}
|
||||
# snap: ${{ steps.build.outputs.snap }}
|
||||
# release: edge,beta
|
||||
|
||||
upload_release_assets:
|
||||
name: Upload Release Assets
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<key>CFBundleShortVersionString</key>
|
||||
<string>${PROJECT_VERSION}</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>© 2008-2023 Jonathan Westhues and other authors</string>
|
||||
<string>© 2008-2024 Jonathan Westhues and other authors</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
<key>NSMainNibFile</key>
|
||||
|
|
|
@ -10,7 +10,7 @@ set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
|
|||
|
||||
# FIXME(emscripten): Suppress non-c-typedef-for-linkage warnings in solvespace.h
|
||||
add_compile_options(-Wno-non-c-typedef-for-linkage)
|
||||
|
||||
add_link_options(-s EXPORTED_RUNTIME_METHODS=[allocate])
|
||||
|
||||
# Enable optimization. Workaround for "too many locals" error when runs on browser.
|
||||
if(CMAKE_BUILD_TYPE STREQUAL Release)
|
||||
|
|
|
@ -27,6 +27,8 @@ apps:
|
|||
desktop: solvespace.desktop
|
||||
extensions: [gnome]
|
||||
plugs: [opengl, unity7, home, removable-media, gsettings, network]
|
||||
environment:
|
||||
GTK_USE_PORTAL: "0"
|
||||
cli:
|
||||
command: usr/bin/solvespace-cli
|
||||
extensions: [gnome]
|
||||
|
|
|
@ -7,7 +7,7 @@ msgstr ""
|
|||
"Project-Id-Version: SolveSpace 3.0\n"
|
||||
"Report-Msgid-Bugs-To: phkahler@gmail.com\n"
|
||||
"POT-Creation-Date: 2023-01-20 16:45+0200\n"
|
||||
"PO-Revision-Date: 2021-04-14 01:42+0300\n"
|
||||
"PO-Revision-Date: 2024-01-02 18:47+0200\n"
|
||||
"Last-Translator: https://github.com/Symbian9\n"
|
||||
"Language-Team: app4soft\n"
|
||||
"Language: uk_UA\n"
|
||||
|
@ -15,7 +15,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 2.4.2\n"
|
||||
"X-Generator: Poedit 3.4.1\n"
|
||||
|
||||
#: clipboard.cpp:309
|
||||
msgid ""
|
||||
|
@ -51,12 +51,12 @@ msgstr "Оберіть дві точки для визначення векто
|
|||
msgid ""
|
||||
"Transformation is identity. So all copies will be exactly on top of each "
|
||||
"other."
|
||||
msgstr ""
|
||||
msgstr "Трансформація ідентична, тому усі копії будуть точно одна на одній."
|
||||
|
||||
#: clipboard.cpp:457
|
||||
#, fuzzy
|
||||
msgid "Too many items to paste; split this into smaller pastes."
|
||||
msgstr "Забагато об'єктів для вставки; рзділіть копіювання на кілька етапів."
|
||||
msgstr ""
|
||||
"Забагато об'єктів для вставки; розділіть копіювання на кілька менших етапів."
|
||||
|
||||
#: clipboard.cpp:462
|
||||
msgid "No workplane active."
|
||||
|
@ -64,20 +64,19 @@ msgstr "Немає активної площини."
|
|||
|
||||
#: confscreen.cpp:381
|
||||
msgid "Bad format: specify coordinates as x, y, z"
|
||||
msgstr "Некоректний формат: визначте координати X, Y, Z"
|
||||
msgstr "Некоректний формат: визначте координати як X, Y, Z"
|
||||
|
||||
#: confscreen.cpp:391 style.cpp:729 textscreens.cpp:863
|
||||
msgid "Bad format: specify color as r, g, b"
|
||||
msgstr "Некоректний формат: визначте колір як R, G, B"
|
||||
|
||||
#: confscreen.cpp:417
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"The perspective factor will have no effect until you enable View -> Use "
|
||||
"Perspective Projection."
|
||||
msgstr ""
|
||||
"Значення перспективи не матиме ефекту допоки не ввімкнено Вигляд -> "
|
||||
"Використовувати Перспективну проєкцію."
|
||||
"Використовувати Перспективну Проєкцію."
|
||||
|
||||
#: confscreen.cpp:435 confscreen.cpp:445
|
||||
#, c-format
|
||||
|
@ -97,9 +96,8 @@ msgid "Bad value: autosave interval should be positive"
|
|||
msgstr "Некоректне значення: інтервал автозбереження має бути додатнім"
|
||||
|
||||
#: confscreen.cpp:531
|
||||
#, fuzzy
|
||||
msgid "Bad format: specify interval in integral minutes"
|
||||
msgstr "Некоректний формат: визначте цілим числом інтервал у хвилинах"
|
||||
msgstr "Некоректний формат: визначте інтервал цілим числом у хвилинах"
|
||||
|
||||
#: constraint.cpp:12
|
||||
msgctxt "constr-name"
|
||||
|
@ -129,7 +127,7 @@ msgstr "відстань-тчк-грань"
|
|||
#: constraint.cpp:17
|
||||
msgctxt "constr-name"
|
||||
msgid "proj-pt-pt-distance"
|
||||
msgstr "проєційна-відстань-тчк-тчк"
|
||||
msgstr "проєкційна-відстань-тчк-тчк"
|
||||
|
||||
#: constraint.cpp:18
|
||||
msgctxt "constr-name"
|
||||
|
@ -169,12 +167,12 @@ msgstr "пропорція-довжин"
|
|||
#: constraint.cpp:25
|
||||
msgctxt "constr-name"
|
||||
msgid "arc-arc-length-ratio"
|
||||
msgstr ""
|
||||
msgstr "пропорція-довжин-дуга-дуга"
|
||||
|
||||
#: constraint.cpp:26
|
||||
msgctxt "constr-name"
|
||||
msgid "arc-line-length-ratio"
|
||||
msgstr ""
|
||||
msgstr "пропорція-довжини-дуга-лінія"
|
||||
|
||||
#: constraint.cpp:27
|
||||
msgctxt "constr-name"
|
||||
|
@ -184,12 +182,12 @@ msgstr "різниця-довжин"
|
|||
#: constraint.cpp:28
|
||||
msgctxt "constr-name"
|
||||
msgid "arc-arc-len-difference"
|
||||
msgstr ""
|
||||
msgstr "різниця-довжин-дуга-дуга"
|
||||
|
||||
#: constraint.cpp:29
|
||||
msgctxt "constr-name"
|
||||
msgid "arc-line-len-difference"
|
||||
msgstr ""
|
||||
msgstr "різниця-довжин-дуга-лінія"
|
||||
|
||||
#: constraint.cpp:30
|
||||
msgctxt "constr-name"
|
||||
|
@ -239,7 +237,7 @@ msgstr "тчк-на-колі"
|
|||
#: constraint.cpp:39
|
||||
msgctxt "constr-name"
|
||||
msgid "same-orientation"
|
||||
msgstr "співнаправленість"
|
||||
msgstr "співнапрямленість"
|
||||
|
||||
#: constraint.cpp:40
|
||||
msgctxt "constr-name"
|
||||
|
@ -301,18 +299,24 @@ msgid ""
|
|||
"The tangent arc and line segment must share an endpoint. Constrain them with "
|
||||
"Constrain -> On Point before constraining tangent."
|
||||
msgstr ""
|
||||
"Дотичні дуга та лінія повинні мати спільну кінцеву точку. Використайте "
|
||||
"Обмежити -> На точці перед застосуванням дотичного обмеження."
|
||||
|
||||
#: constraint.cpp:163
|
||||
msgid ""
|
||||
"The tangent cubic and line segment must share an endpoint. Constrain them "
|
||||
"with Constrain -> On Point before constraining tangent."
|
||||
msgstr ""
|
||||
"Дотичні сплайн та лінія повинні мати спільну кінцеву точку. Використайте "
|
||||
"Обмежити -> На точці перед застосуванням дотичного обмеження."
|
||||
|
||||
#: constraint.cpp:189
|
||||
msgid ""
|
||||
"The curves must share an endpoint. Constrain them with Constrain -> On Point "
|
||||
"before constraining tangent."
|
||||
msgstr ""
|
||||
"Дотичні дуги повинні мати спільну кінцеву точку. Використайте Обмежити -> На "
|
||||
"точці перед застосуванням дотичного обмеження."
|
||||
|
||||
#: constraint.cpp:240
|
||||
msgid ""
|
||||
|
@ -327,6 +331,17 @@ msgid ""
|
|||
" * a plane face and a point (minimum distance)\n"
|
||||
" * a circle or an arc (diameter)\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для обмеження за Відстанню / Діаметром. Це обмеження можна "
|
||||
"застосувати до:\n"
|
||||
"\n"
|
||||
" * двох точок (відстань між точками)\n"
|
||||
" * відрізку прямої (довжина)\n"
|
||||
" * двох точок та відрізку прямої чи нормалі (відстань між проєкціями "
|
||||
"точок)\n"
|
||||
" * робочої площини та точки (найменша відстань)\n"
|
||||
" * відрізку прямої та точки (найменша відстань)\n"
|
||||
" * грані та точки (найменша відстань)\n"
|
||||
" * кола або дуги (діаметр)\n"
|
||||
|
||||
#: constraint.cpp:303
|
||||
msgid ""
|
||||
|
@ -339,6 +354,14 @@ msgid ""
|
|||
" * a point and a circle or arc (point on curve)\n"
|
||||
" * a point and one to three plane faces (point on face(s))\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для обмеження На Точці / Кривій / Площині. Це обмеження можна "
|
||||
"застосувати до:\n"
|
||||
"\n"
|
||||
" * двох або більше точок (точки збігаються)\n"
|
||||
" * точки та площини (точка лежить в площині)\n"
|
||||
" * точки та відрізку прямої (точка лежить на прямій)\n"
|
||||
" * точки та кола чи дуги (точка лежить на дузі)\n"
|
||||
" * точки та від одієї до трьох граней (точка лежить на грані(ях))\n"
|
||||
|
||||
#: constraint.cpp:364
|
||||
msgid ""
|
||||
|
@ -353,6 +376,17 @@ msgid ""
|
|||
" * two or more circles or arcs (equal radius)\n"
|
||||
" * a line segment and an arc (line segment length equals arc length)\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для обмеження Рівні Довжина / Радіус. Це обмеження можна "
|
||||
"застосувати до:\n"
|
||||
"\n"
|
||||
" * двох або більше відрізків прямої (рівні довжини)\n"
|
||||
" * двох відрізків та двох точок (рівні відстані від точок до відповідних "
|
||||
"відрізків)\n"
|
||||
" * відрізка та двох точок (рівні відстані від точок до відрізка)\n"
|
||||
" * відрізка, точки, та другого відрізка (відстань від точки до другого "
|
||||
"відрізка дорівнює першому)\n"
|
||||
" * двох або більше кіл чи дуг (рівні радіуси)\n"
|
||||
" * відрізку та дуги (довжина відрізку дорівнює довжині дуги) \n"
|
||||
|
||||
#: constraint.cpp:417
|
||||
msgid ""
|
||||
|
@ -362,6 +396,12 @@ msgid ""
|
|||
" * two arcs\n"
|
||||
" * one arc and one line segment\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для обмеження Пропорція Довжин. Це обмеження можна застосувати "
|
||||
"до:\n"
|
||||
"\n"
|
||||
" * двох відрізків прямої\n"
|
||||
" * двох дуг\n"
|
||||
" * дуги та відрізка прямої\n"
|
||||
|
||||
#: constraint.cpp:452
|
||||
msgid ""
|
||||
|
@ -372,6 +412,12 @@ msgid ""
|
|||
" * two arcs\n"
|
||||
" * one arc and one line segment\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для обмеження Різниця Довжин. Це обмеження можна застосувати "
|
||||
"до:\n"
|
||||
"\n"
|
||||
" * двох відрізків\n"
|
||||
" * двох дуг\n"
|
||||
" * відрізка та дуги\n"
|
||||
|
||||
#: constraint.cpp:487
|
||||
msgid ""
|
||||
|
@ -380,6 +426,10 @@ msgid ""
|
|||
" * a line segment and a point (point at midpoint)\n"
|
||||
" * a line segment and a workplane (line's midpoint on plane)\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для обмеження До Середини. Це обмеження можна застосувати до:\n"
|
||||
"\n"
|
||||
" * відрізка та точки (точка на середині відрізку)\n"
|
||||
" * відрізка та робочої площини (середина відрізку лежить в площині)\n"
|
||||
|
||||
#: constraint.cpp:545
|
||||
msgid ""
|
||||
|
@ -392,18 +442,31 @@ msgid ""
|
|||
" * workplane, and two points or a line segment (symmetric about "
|
||||
"workplane)\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для обмеження за симетрією. Це обмеження можна застосувати "
|
||||
"до:\n"
|
||||
"\n"
|
||||
" * двох точок або відрізку прямої (симетрія відносно початку координат "
|
||||
"робочої площини)\n"
|
||||
" * відрізка та двох точок або іншого відрізка (симетрія відносно "
|
||||
"відрізка)\n"
|
||||
" * робочої площини та двох точок або відрізка (симетрія відносно робочої "
|
||||
"площини)\n"
|
||||
|
||||
#: constraint.cpp:560
|
||||
msgid ""
|
||||
"A workplane must be active when constraining symmetric without an explicit "
|
||||
"symmetry plane."
|
||||
msgstr ""
|
||||
"Робоча площина має бути активною коли використовується обмеження за "
|
||||
"симетрією без явного вибору площини."
|
||||
|
||||
#: constraint.cpp:600
|
||||
msgid ""
|
||||
"Activate a workplane (with Sketch -> In Workplane) before applying a "
|
||||
"horizontal or vertical constraint."
|
||||
msgstr ""
|
||||
"Активуйте площину (в Креслення -> У Робочій Площині) перед застосуванням "
|
||||
"обмеження Горизонтально або Вертикально."
|
||||
|
||||
#: constraint.cpp:616
|
||||
msgid ""
|
||||
|
@ -413,6 +476,11 @@ msgid ""
|
|||
" * two or more points\n"
|
||||
" * one or more line segments\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для обмеження Горизонтально / Вертикально. Це обмеження можна "
|
||||
"застосувати до:\n"
|
||||
"\n"
|
||||
" * двох або більше точок\n"
|
||||
" * одного або більше відрізків\n"
|
||||
|
||||
#: constraint.cpp:634
|
||||
msgid ""
|
||||
|
@ -421,9 +489,12 @@ msgid ""
|
|||
"\n"
|
||||
" * two normals\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для обмеження Однакова Орієнтація. Це обмеження можна "
|
||||
"застосувати до:\n"
|
||||
"\n"
|
||||
" * двох перпендикулярів\n"
|
||||
|
||||
#: constraint.cpp:685
|
||||
#, fuzzy
|
||||
msgid "Must select an angle constraint."
|
||||
msgstr "Необхідно обрати кут."
|
||||
|
||||
|
@ -444,10 +515,20 @@ msgid ""
|
|||
" * four line segments or normals (equal angle between A,B and C,D)\n"
|
||||
" * three line segments or normals (equal angle between A,B and B,C)\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для обмеження за Кутом. Це обмеження можна застосувати до:\n"
|
||||
"\n"
|
||||
"Кута між:\n"
|
||||
" * двома відрізками\n"
|
||||
" * відрізком та перпендикуляром\n"
|
||||
" * двома перпендикулярами\n"
|
||||
"\n"
|
||||
"Рівних кутів між:\n"
|
||||
" * чотирма відрізками чи перпендикулярами (рівні кути між А,Б та В,Г)\n"
|
||||
" * трьома відрізками чи перпендикулярами (рівні кути між А,Б та Б,В)\n"
|
||||
|
||||
#: constraint.cpp:805
|
||||
msgid "Curve-curve tangency must apply in workplane."
|
||||
msgstr ""
|
||||
msgstr "Обмеження дотичності дуг має відбуватися у робочій площині."
|
||||
|
||||
#: constraint.cpp:818
|
||||
msgid ""
|
||||
|
@ -460,6 +541,16 @@ msgid ""
|
|||
" * two or more normals (parallel)\n"
|
||||
" * two line segments, arcs, or beziers, that share an endpoint (tangent)\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для обмеження Паралельно / Дотична. Це обмеження можна "
|
||||
"застосувати до:\n"
|
||||
"\n"
|
||||
" * двох граней\n"
|
||||
" * двох або більше відрізків (паралельні)\n"
|
||||
" * одного або більше відрізка та одного або більше перпендикуляра "
|
||||
"(паралельні)\n"
|
||||
" * двох або більше перпендикулярів (паралельні)\n"
|
||||
" * двох відрізків, дуг, чи кривих Безьє, що мають спільну кінцеву "
|
||||
"точку(дотичні)\n"
|
||||
|
||||
#: constraint.cpp:843
|
||||
msgid ""
|
||||
|
@ -470,6 +561,13 @@ msgid ""
|
|||
" * a line segment and a normal\n"
|
||||
" * two normals\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для обмеження Перпендикулярно. Це обмеження можна застосувати "
|
||||
"до:\n"
|
||||
"\n"
|
||||
" * двох граней\n"
|
||||
" * двох відрізків\n"
|
||||
" * відрізка та перпендикуляра\n"
|
||||
" * двох перпендикулярів\n"
|
||||
|
||||
#: constraint.cpp:860
|
||||
msgid ""
|
||||
|
@ -478,6 +576,10 @@ msgid ""
|
|||
"\n"
|
||||
" * a point\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для обмеження Фіксувати Точку Після Переміщення. Це обмеження "
|
||||
"можна застосувати до:\n"
|
||||
"\n"
|
||||
" * точки\n"
|
||||
|
||||
#: constraint.cpp:875 mouse.cpp:1158
|
||||
msgid "NEW COMMENT -- DOUBLE-CLICK TO EDIT"
|
||||
|
@ -492,9 +594,9 @@ msgid ""
|
|||
"No solid model present; draw one with extrudes and revolves, or use Export "
|
||||
"2d View to export bare lines and curves."
|
||||
msgstr ""
|
||||
"Вісутня об'ємна модель; створіть одну з допомогою екструдування та "
|
||||
"виточування або скористайтеся функцією \"Експортувати 2D Вигляд\" для "
|
||||
"еспорту лише ліній та кривих."
|
||||
"Вісутня об'ємна модель; створіть модель за допомогою екструдування та "
|
||||
"обертання або скористайтеся функцією \"Експортувати 2D Вигляд\" для еспорту "
|
||||
"лише ліній та кривих."
|
||||
|
||||
#: export.cpp:61
|
||||
msgid ""
|
||||
|
@ -505,18 +607,25 @@ msgid ""
|
|||
" * a point and two line segments (plane through point and parallel to "
|
||||
"lines)\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для експорту розрізу. Будьласка, оберіть:\n"
|
||||
"\n"
|
||||
" * нічого, з активною робочою площиною (робоча площина буде площиною "
|
||||
"розрізу)\n"
|
||||
" * грань (площина розрізу через грань)\n"
|
||||
" * точку та два відрізки (площина розрізу через точку та паралельно "
|
||||
"відрізкам)\n"
|
||||
|
||||
#: export.cpp:818
|
||||
msgid "Active group mesh is empty; nothing to export."
|
||||
msgstr "Активна група не містить меш; немає чого експортувати."
|
||||
msgstr "Активна група не містить сітку; немає чого експортувати."
|
||||
|
||||
#: exportvector.cpp:336
|
||||
msgid "freehand lines were replaced with continuous lines"
|
||||
msgstr ""
|
||||
msgstr "довільні лінії було замінено на неперервні відрізки"
|
||||
|
||||
#: exportvector.cpp:338
|
||||
msgid "zigzag lines were replaced with continuous lines"
|
||||
msgstr ""
|
||||
msgstr "zigzag лінії було замінено на неперервні відрізки"
|
||||
|
||||
#: exportvector.cpp:592
|
||||
msgid ""
|
||||
|
@ -573,6 +682,9 @@ msgid ""
|
|||
"If you decline, any geometry that depends on the missing file will be "
|
||||
"permanently removed."
|
||||
msgstr ""
|
||||
"Шукати файл вручну?\n"
|
||||
"\n"
|
||||
"При відмові, уся геометрія, що залежить від втраченого файлу буде видалена."
|
||||
|
||||
#: file.cpp:873
|
||||
msgctxt "button"
|
||||
|
@ -759,7 +871,7 @@ msgstr "Використовувати &Перспективну Проекці
|
|||
|
||||
#: graphicswin.cpp:97
|
||||
msgid "Show E&xploded View"
|
||||
msgstr ""
|
||||
msgstr "Показати С&кладальне Креслення"
|
||||
|
||||
#: graphicswin.cpp:98
|
||||
msgid "Dimension &Units"
|
||||
|
@ -779,7 +891,7 @@ msgstr "Розміри у &Дюймах"
|
|||
|
||||
#: graphicswin.cpp:102
|
||||
msgid "Dimensions in &Feet and Inches"
|
||||
msgstr ""
|
||||
msgstr "Розміри в &Футах та Дюймах"
|
||||
|
||||
#: graphicswin.cpp:104
|
||||
msgid "Show &Toolbar"
|
||||
|
@ -915,7 +1027,7 @@ msgstr "Від&носний Розмір"
|
|||
|
||||
#: graphicswin.cpp:148
|
||||
msgid "A&ngle / Equal Angle"
|
||||
msgstr ""
|
||||
msgstr "К&ут / Рівний Кут"
|
||||
|
||||
#: graphicswin.cpp:149
|
||||
msgid "Reference An&gle"
|
||||
|
@ -943,15 +1055,15 @@ msgstr "&На точці / Кривій / Площині"
|
|||
|
||||
#: graphicswin.cpp:157
|
||||
msgid "E&qual Length / Radius"
|
||||
msgstr ""
|
||||
msgstr "Р&івна Довжина / Радіус"
|
||||
|
||||
#: graphicswin.cpp:158
|
||||
msgid "Length / Arc Ra&tio"
|
||||
msgstr ""
|
||||
msgstr "Пропорція довжин"
|
||||
|
||||
#: graphicswin.cpp:159
|
||||
msgid "Length / Arc Diff&erence"
|
||||
msgstr ""
|
||||
msgstr "Різниця довжин"
|
||||
|
||||
#: graphicswin.cpp:160
|
||||
msgid "At &Midpoint"
|
||||
|
@ -1039,7 +1151,7 @@ msgstr "&Вебсайт / Посібник"
|
|||
|
||||
#: graphicswin.cpp:186
|
||||
msgid "&Go to GitHub commit"
|
||||
msgstr ""
|
||||
msgstr "&До коміту на GitHub"
|
||||
|
||||
#: graphicswin.cpp:188
|
||||
msgid "&About"
|
||||
|
@ -1066,37 +1178,47 @@ msgid ""
|
|||
"For a perspective projection, modify the perspective factor in the "
|
||||
"configuration screen. A value around 0.3 is typical."
|
||||
msgstr ""
|
||||
"Встановлено нульовий коефіцієнт перспективи, тому відображення завжди буде "
|
||||
"паралельною проєкцією."
|
||||
|
||||
#: graphicswin.cpp:878
|
||||
msgid ""
|
||||
"Select a point; this point will become the center of the view on screen."
|
||||
msgstr ""
|
||||
msgstr "Оберіть точку. Ця точка стане центром відображення на екрані."
|
||||
|
||||
#: graphicswin.cpp:1178
|
||||
msgid "No additional entities share endpoints with the selected entities."
|
||||
msgstr ""
|
||||
msgstr "Жодні сутності не мають спільних кінцевих точок з обраними сутностями."
|
||||
|
||||
#: graphicswin.cpp:1196
|
||||
msgid ""
|
||||
"To use this command, select a point or other entity from an linked part, or "
|
||||
"make a link group the active group."
|
||||
msgstr ""
|
||||
"Для використання цієї команди оберіть точку або іншу сутність з приєднаної "
|
||||
"деталі, або зробіть приєднану групу активною."
|
||||
|
||||
#: graphicswin.cpp:1219
|
||||
msgid ""
|
||||
"No workplane is active. Activate a workplane (with Sketch -> In Workplane) "
|
||||
"to define the plane for the snap grid."
|
||||
msgstr ""
|
||||
"Жодної активної площини. Активуйте площину (в Креслення -> У Робочій "
|
||||
"Площині) щоб визначити площину для сітки."
|
||||
|
||||
#: graphicswin.cpp:1226
|
||||
msgid ""
|
||||
"Can't snap these items to grid; select points, text comments, or constraints "
|
||||
"with a label. To snap a line, select its endpoints."
|
||||
msgstr ""
|
||||
"Неможливо прикріпити ці штуки до сітки; оберіть точки, текстові коментарі чи "
|
||||
"обмеження з назвою. Щоб прикріпити лінію, оберіть її кінцеві точки."
|
||||
|
||||
#: graphicswin.cpp:1311
|
||||
msgid "No workplane selected. Activating default workplane for this group."
|
||||
msgstr ""
|
||||
"Жодної робочої площини не обрано. Активую площину за замовченням для цієї "
|
||||
"групи."
|
||||
|
||||
#: graphicswin.cpp:1314
|
||||
msgid ""
|
||||
|
@ -1104,16 +1226,21 @@ msgid ""
|
|||
"workplane. Try selecting a workplane, or activating a sketch-in-new-"
|
||||
"workplane group."
|
||||
msgstr ""
|
||||
"Жодної робочої площини не обрано, і активна група не має площини за "
|
||||
"замовченням. Спробуйте обрати площину, або активувати групу Креслення У "
|
||||
"Робочій Площині"
|
||||
|
||||
#: graphicswin.cpp:1335
|
||||
msgid ""
|
||||
"Bad selection for tangent arc at point. Select a single point, or select "
|
||||
"nothing to set up arc parameters."
|
||||
msgstr ""
|
||||
"Поганий вибір для дотичної дуги у точці. Оберіть одну точку, або оберіть "
|
||||
"нічого щоб налаштувати дугу."
|
||||
|
||||
#: graphicswin.cpp:1346
|
||||
msgid "click point on arc (draws anti-clockwise)"
|
||||
msgstr ""
|
||||
msgstr "клікніть для встановлення точки дуги (проти годинникової стрілки)"
|
||||
|
||||
#: graphicswin.cpp:1347
|
||||
msgid "click to place datum point"
|
||||
|
@ -1155,7 +1282,7 @@ msgstr "клікніть для встановлення верхньої лів
|
|||
msgid ""
|
||||
"No entities are selected. Select entities before trying to toggle their "
|
||||
"construction state."
|
||||
msgstr ""
|
||||
msgstr "Жодної сутності не обрано. Оберіть сутності для перключення їх стану."
|
||||
|
||||
#: group.cpp:86
|
||||
msgctxt "group-name"
|
||||
|
@ -1172,6 +1299,13 @@ msgid ""
|
|||
" * a point and a normal (through the point, orthogonal to the normal)\n"
|
||||
" * a workplane (copy of the workplane)\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для ного креслення в робочій площині. Ця група може бути "
|
||||
"створена з:\n"
|
||||
"\n"
|
||||
" * точки (через точку, ортогонально до координатних осей)\n"
|
||||
" * точки та двох відрізків (через точку, паралельно до відрізків)\n"
|
||||
" * точку та перпендикуляр (через точку, ортогонально перпендикуляру)\n"
|
||||
" * робочої площини (створиться копія площини)\n"
|
||||
|
||||
#: group.cpp:170
|
||||
msgid ""
|
||||
|
@ -1189,6 +1323,7 @@ msgstr "видавлювання"
|
|||
#: group.cpp:184
|
||||
msgid "Lathe operation can only be applied to planar sketches."
|
||||
msgstr ""
|
||||
"Операція виточування може бути застосована тільки для пласких креслень."
|
||||
|
||||
#: group.cpp:195
|
||||
msgid ""
|
||||
|
@ -1198,6 +1333,11 @@ msgid ""
|
|||
"to line / normal, through point)\n"
|
||||
" * a line segment (revolved about line segment)\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для нової групи проточування. Ця група може бути створена з:\n"
|
||||
"\n"
|
||||
" * точки та відрізка або перпендикуляра (обертається крізь точку навколо "
|
||||
"осі, паралельної до відрізку / перпендикуляру)\n"
|
||||
" * відрізка (обертається навколо відрізка)\n"
|
||||
|
||||
#: group.cpp:205
|
||||
msgctxt "group-name"
|
||||
|
@ -1207,6 +1347,7 @@ msgstr "проточування"
|
|||
#: group.cpp:210
|
||||
msgid "Revolve operation can only be applied to planar sketches."
|
||||
msgstr ""
|
||||
"Операція прокручування може бути застосована тільки для пласких креслень."
|
||||
|
||||
#: group.cpp:221
|
||||
msgid ""
|
||||
|
@ -1216,6 +1357,11 @@ msgid ""
|
|||
"to line / normal, through point)\n"
|
||||
" * a line segment (revolved about line segment)\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для нової групи прокручування. Ця група може бути створена з:\n"
|
||||
"\n"
|
||||
" * точки та відрізка або перпендикуляра (обертається крізь точку навколо "
|
||||
"осі, паралельної до відрізку / перпендикуляру)\n"
|
||||
" * відрізка (обертається навколо відрізка)\n"
|
||||
|
||||
#: group.cpp:233
|
||||
msgctxt "group-name"
|
||||
|
@ -1234,6 +1380,11 @@ msgid ""
|
|||
"to line / normal, through point)\n"
|
||||
" * a line segment (revolved about line segment)\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для нової групи проточування. Ця група може бути створена з:\n"
|
||||
"\n"
|
||||
" * точки та відрізка або перпендикуляра (обертається крізь точку навколо "
|
||||
"осі, паралельної до відрізку / перпендикуляру)\n"
|
||||
" * відрізка (обертається навколо відрізка)\n"
|
||||
|
||||
#: group.cpp:261
|
||||
msgctxt "group-name"
|
||||
|
@ -1249,6 +1400,12 @@ msgid ""
|
|||
" * a point and a line or a normal (rotate about an axis through the "
|
||||
"point, and parallel to line / normal)\n"
|
||||
msgstr ""
|
||||
"Поганий вибір для нової групи проточування. Ця група може бути створена з:\n"
|
||||
"\n"
|
||||
" * точки, доки закріплено в робочій площині (обертається в площині, "
|
||||
"навколо цієї точки)\n"
|
||||
" * точки та відрізка чи перпендикуляря (обертається навколо осі, що "
|
||||
"проходить крізь цю точку, і паралельна до відрізку / перпендикуляру)\n"
|
||||
|
||||
#: group.cpp:287
|
||||
msgctxt "group-name"
|
||||
|
@ -1270,7 +1427,7 @@ msgstr "не замкнений контур або не все в єдином
|
|||
|
||||
#: groupmesh.cpp:723
|
||||
msgid "points not all coplanar!"
|
||||
msgstr ""
|
||||
msgstr "не всі точки знаходяться в одній площині!"
|
||||
|
||||
#: groupmesh.cpp:725
|
||||
msgid "contour is self-intersecting!"
|
||||
|
@ -1282,38 +1439,48 @@ msgstr "ребро нульової довжини!"
|
|||
|
||||
#: importmesh.cpp:136
|
||||
msgid "Text-formated STL files are not currently supported"
|
||||
msgstr ""
|
||||
msgstr "Файли STL з текстовим форматуванням наразі не підтримуються"
|
||||
|
||||
#: modify.cpp:252
|
||||
msgid "Must be sketching in workplane to create tangent arc."
|
||||
msgstr ""
|
||||
"Для створення дотичної дуги має бути обраний режим креслення в робочій "
|
||||
"площині."
|
||||
|
||||
#: modify.cpp:299
|
||||
msgid ""
|
||||
"To create a tangent arc, select a point where two non-construction lines or "
|
||||
"circles in this group and workplane join."
|
||||
msgstr ""
|
||||
"Для створення дотичної дуги оберіть точку де два відрізки або дуги "
|
||||
"поєднуються."
|
||||
|
||||
#: modify.cpp:386
|
||||
msgid ""
|
||||
"Couldn't round this corner. Try a smaller radius, or try creating the "
|
||||
"desired geometry by hand with tangency constraints."
|
||||
msgstr ""
|
||||
"Неможливо закруглити цей кут. Спробуйте менший радіус або створіть необхідну "
|
||||
"геометрію вручну задопомогою омеження Дотичності."
|
||||
|
||||
#: modify.cpp:595
|
||||
msgid "Couldn't split this entity; lines, circles, or cubics only."
|
||||
msgstr ""
|
||||
"Неможливо розділити цей об'єкт. Дозволено тільки для відрізків, кіл(дуг), чи "
|
||||
"сплайнів."
|
||||
|
||||
#: modify.cpp:622
|
||||
#, fuzzy
|
||||
msgid "Must be sketching in workplane to split."
|
||||
msgstr "Має бути накреслений у робочій площині для розділеня."
|
||||
msgstr ""
|
||||
"Креслення має відбуватися у робочій площині для використання розділення."
|
||||
|
||||
#: modify.cpp:629
|
||||
msgid ""
|
||||
"Select two entities that intersect each other (e.g. two lines/circles/arcs "
|
||||
"or a line/circle/arc and a point)."
|
||||
msgstr ""
|
||||
"Оберіть дві сутності, що перетинаються (наприклад лінії/кола/дуги або лінія/"
|
||||
"коло/дуга та точка)"
|
||||
|
||||
#: modify.cpp:734
|
||||
msgid "Can't split; no intersection found."
|
||||
|
@ -1421,6 +1588,8 @@ msgid ""
|
|||
"Can't draw rectangle in 3d; first, activate a workplane with Sketch -> In "
|
||||
"Workplane."
|
||||
msgstr ""
|
||||
"Неможливо накреслити прямокутник у 3d; спочатку активуйте робочу площину в "
|
||||
"Креслення -> У Робочій Площині."
|
||||
|
||||
#: mouse.cpp:1026
|
||||
msgid "click to place other corner of rectangle"
|
||||
|
@ -1435,6 +1604,8 @@ msgid ""
|
|||
"Can't draw arc in 3d; first, activate a workplane with Sketch -> In "
|
||||
"Workplane."
|
||||
msgstr ""
|
||||
"Неможливо накреслити дугу у 3d; спочатку активуйте робочу площину в "
|
||||
"Креслення -> У Робочій Площині."
|
||||
|
||||
#: mouse.cpp:1071
|
||||
msgid "click to place point"
|
||||
|
@ -1448,12 +1619,16 @@ msgstr "клікніть наступну точку кривої або нат
|
|||
msgid ""
|
||||
"Sketching in a workplane already; sketch in 3d before creating new workplane."
|
||||
msgstr ""
|
||||
"Вже обрано креслення у робочій площині; поверніться у креслення будь-ду в 3D "
|
||||
"для створення нової робочої площини."
|
||||
|
||||
#: mouse.cpp:1108
|
||||
msgid ""
|
||||
"Can't draw text in 3d; first, activate a workplane with Sketch -> In "
|
||||
"Workplane."
|
||||
msgstr ""
|
||||
"Неможливо накреслити текст у 3д; спочатку активуйте робочу площину в "
|
||||
"Креслення -> У Робочій Площині."
|
||||
|
||||
#: mouse.cpp:1125
|
||||
msgid "click to place bottom right of text"
|
||||
|
@ -1464,16 +1639,18 @@ msgid ""
|
|||
"Can't draw image in 3d; first, activate a workplane with Sketch -> In "
|
||||
"Workplane."
|
||||
msgstr ""
|
||||
"Неможливо накреслити зображення у 3д; спочатку активуйте робочу площину в "
|
||||
"Креслення -> У Робочій Площині."
|
||||
|
||||
#: platform/gui.cpp:85 platform/gui.cpp:90 solvespace.cpp:565
|
||||
msgctxt "file-type"
|
||||
msgid "SolveSpace models"
|
||||
msgstr "SolveSpace модель"
|
||||
msgstr "SolveSpace модел"
|
||||
|
||||
#: platform/gui.cpp:89
|
||||
msgctxt "file-type"
|
||||
msgid "ALL"
|
||||
msgstr ""
|
||||
msgstr "УСІ"
|
||||
|
||||
#: platform/gui.cpp:91
|
||||
msgctxt "file-type"
|
||||
|
@ -1483,7 +1660,7 @@ msgstr "IDF друкована плата"
|
|||
#: platform/gui.cpp:92
|
||||
msgctxt "file-type"
|
||||
msgid "STL triangle mesh"
|
||||
msgstr ""
|
||||
msgstr "STL трикутникова сітка"
|
||||
|
||||
#: platform/gui.cpp:96
|
||||
msgctxt "file-type"
|
||||
|
@ -1493,7 +1670,7 @@ msgstr "PNG зображення"
|
|||
#: platform/gui.cpp:100
|
||||
msgctxt "file-type"
|
||||
msgid "STL mesh"
|
||||
msgstr "STL меш"
|
||||
msgstr "STL сітка"
|
||||
|
||||
#: platform/gui.cpp:101
|
||||
msgctxt "file-type"
|
||||
|
@ -1663,6 +1840,9 @@ msgid ""
|
|||
"is probably not what you want; hide them by clicking the link at the top of "
|
||||
"the text window."
|
||||
msgstr ""
|
||||
"Зараз обмеження відображаються, і будуть експортовані в шлях інструменту. "
|
||||
"Скоріш за все, це не те, чого ви домагаєтеся; cховайте їх клікнувши на "
|
||||
"посилання над текстовим вікном."
|
||||
|
||||
#: solvespace.cpp:812
|
||||
#, c-format
|
||||
|
@ -1670,6 +1850,7 @@ msgid ""
|
|||
"Can't identify file type from file extension of filename '%s'; try .dxf or ."
|
||||
"dwg."
|
||||
msgstr ""
|
||||
"Неможливо визначити тип файлу з розширення '%s'; спробуйте .dxf чи .dwg."
|
||||
|
||||
#: solvespace.cpp:864
|
||||
msgid "Constraint must have a label, and must not be a reference dimension."
|
||||
|
@ -1681,7 +1862,7 @@ msgstr "Поганий вибір для крокової зміни розмі
|
|||
|
||||
#: solvespace.cpp:892
|
||||
msgid "The assembly does not interfere, good."
|
||||
msgstr ""
|
||||
msgstr "Збірка не перетинається, очман."
|
||||
|
||||
#: solvespace.cpp:908
|
||||
#, c-format
|
||||
|
@ -1714,6 +1895,10 @@ msgid ""
|
|||
"Curved surfaces have been approximated as triangles.\n"
|
||||
"This introduces error, typically of around 1%."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Скруглені поверхні були апроксимовані до трикутників.\n"
|
||||
"Це створює похибку, зазвичай біля 1%."
|
||||
|
||||
#: solvespace.cpp:937
|
||||
#, c-format
|
||||
|
@ -1725,6 +1910,12 @@ msgid ""
|
|||
"Curves have been approximated as piecewise linear.\n"
|
||||
"This introduces error, typically of around 1%%."
|
||||
msgstr ""
|
||||
"Площа поверхні обраної грані:\n"
|
||||
"\n"
|
||||
" %s\n"
|
||||
"\n"
|
||||
"Криві були апроксимовані як дрібні відрізки.\n"
|
||||
"Це створює похибку, зазвичай біля 1%%."
|
||||
|
||||
#: solvespace.cpp:946
|
||||
msgid ""
|
||||
|
@ -1804,6 +1995,9 @@ msgid ""
|
|||
"\n"
|
||||
"The model contains %d triangles, from %d surfaces."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Модель складається з %d трикутників, що розташовані на %d поверхнях."
|
||||
|
||||
#: solvespace.cpp:1068
|
||||
#, c-format
|
||||
|
|
|
@ -18,7 +18,7 @@ BEGIN
|
|||
VALUE "FileVersion", "${PROJECT_VERSION}~${solvespace_GIT_HASH}"
|
||||
VALUE "OriginalFilename", "solvespace.exe"
|
||||
VALUE "InternalName", "solvespace"
|
||||
VALUE "LegalCopyright", "(c) 2008-2023 Jonathan Westhues and other authors"
|
||||
VALUE "LegalCopyright", "(c) 2008-2024 Jonathan Westhues and other authors"
|
||||
END
|
||||
END
|
||||
|
||||
|
|
|
@ -249,8 +249,10 @@ void GraphicsWindow::PasteClipboard(Vector trans, double theta, double scale) {
|
|||
case Constraint::Type::COMMENT:
|
||||
c.disp.offset = c.disp.offset.Plus(trans);
|
||||
break;
|
||||
case Constraint::Type::PT_PT_DISTANCE:
|
||||
case Constraint::Type::PT_LINE_DISTANCE:
|
||||
c.valA *= scale;
|
||||
break;
|
||||
case Constraint::Type::PT_PT_DISTANCE:
|
||||
case Constraint::Type::PROJ_PT_DISTANCE:
|
||||
case Constraint::Type::DIAMETER:
|
||||
c.valA *= fabs(scale);
|
||||
|
|
|
@ -70,6 +70,10 @@ void TextWindow::ScreenChangeExportOffset(int link, uint32_t v) {
|
|||
SS.TW.edit.meaning = Edit::EXPORT_OFFSET;
|
||||
}
|
||||
|
||||
void TextWindow::ScreenChangeArcDimDefault(int link, uint32_t v) {
|
||||
SS.arcDimDefaultDiameter = !SS.arcDimDefaultDiameter;
|
||||
}
|
||||
|
||||
void TextWindow::ScreenChangeFixExportColors(int link, uint32_t v) {
|
||||
SS.fixExportColors = !SS.fixExportColors;
|
||||
}
|
||||
|
@ -344,6 +348,9 @@ void TextWindow::ShowConfiguration() {
|
|||
Printf(false, " %Fd%f%Ll%s edit newly added dimensions%E",
|
||||
&ScreenChangeImmediatelyEditDimension,
|
||||
SS.immediatelyEditDimension ? CHECK_TRUE : CHECK_FALSE);
|
||||
Printf(false, " %Fd%f%Ll%s arc default is diameter%E",
|
||||
&ScreenChangeArcDimDefault,
|
||||
SS.arcDimDefaultDiameter ? CHECK_TRUE : CHECK_FALSE);
|
||||
Printf(false, "");
|
||||
Printf(false, "%Ft autosave interval (in minutes)%E");
|
||||
Printf(false, "%Ba %d %Fl%Ll%f[change]%E",
|
||||
|
|
|
@ -236,6 +236,12 @@ void Constraint::MenuConstrain(Command id) {
|
|||
} else if(gs.circlesOrArcs == 1 && gs.n == 1) {
|
||||
c.type = Type::DIAMETER;
|
||||
c.entityA = gs.entity[0];
|
||||
Entity* arc = SK.GetEntity(gs.entity[0]);
|
||||
if ((arc->type == EntityBase::Type::ARC_OF_CIRCLE)
|
||||
&& (!SS.arcDimDefaultDiameter))
|
||||
{
|
||||
c.other = true;
|
||||
}
|
||||
} else {
|
||||
Error(_("Bad selection for distance / diameter constraint. This "
|
||||
"constraint can apply to:\n\n"
|
||||
|
|
|
@ -241,7 +241,7 @@ void GraphicsWindow::SelectByMarquee() {
|
|||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Sort the selection according to various critieria: the entities and
|
||||
// Sort the selection according to various criteria: the entities and
|
||||
// constraints separately, counts of certain types of entities (circles,
|
||||
// lines, etc.), and so on.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
@ -16,7 +16,7 @@ void SMesh::AddTriangle(STriMeta meta, Vector n, Vector a, Vector b, Vector c) {
|
|||
Vector ab = b.Minus(a), bc = c.Minus(b);
|
||||
Vector np = ab.Cross(bc);
|
||||
if(np.Magnitude() < 1e-10) {
|
||||
// ugh; gl sometimes tesselates to collinear triangles
|
||||
// ugh; gl sometimes tessellates to collinear triangles
|
||||
return;
|
||||
}
|
||||
if(np.Dot(n) > 0) {
|
||||
|
|
|
@ -1270,7 +1270,7 @@ MessageDialogRef CreateMessageDialog(WindowRef parentWindow) {
|
|||
// File dialogs
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// In emscripten psuedo filesystem, all userdata will be stored in this directory.
|
||||
// In emscripten pseudo filesystem, all userdata will be stored in this directory.
|
||||
static std::string basePathInFilesystem = "/data/";
|
||||
|
||||
|
||||
|
|
|
@ -130,7 +130,7 @@ class FileManagerUI {
|
|||
dialog.appendChild(filelist);
|
||||
|
||||
const dummyfilelistitem = document.createElement('li');
|
||||
dummyfilelistitem.textContent = "(No file in psuedo filesystem)";
|
||||
dummyfilelistitem.textContent = "(No file in pseudo filesystem)";
|
||||
filelist.appendChild(dummyfilelistitem);
|
||||
|
||||
if (this.__isOpenDialog) {
|
||||
|
@ -341,7 +341,7 @@ class FileManagerUI {
|
|||
const files = this.__getFileEntries_recurse(this.__basePathInFilesystem);
|
||||
if (files.length < 1) {
|
||||
const dummyfilelistitem = document.createElement('li');
|
||||
dummyfilelistitem.textContent = "(No file in psuedo filesystem)";
|
||||
dummyfilelistitem.textContent = "(No file in pseudo filesystem)";
|
||||
this.__filelistElement.appendChild(dummyfilelistitem);
|
||||
|
||||
} else {
|
||||
|
|
|
@ -423,7 +423,7 @@ window.addEventListener('keyup', function(event) {
|
|||
});
|
||||
|
||||
|
||||
// FIXME(emscripten): Should be implemnted in guihtmlcpp ?
|
||||
// FIXME(emscripten): Should be implemented in guihtmlcpp ?
|
||||
class FileUploadHelper {
|
||||
constructor() {
|
||||
this.modalRoot = document.createElement("div");
|
||||
|
@ -583,7 +583,7 @@ function createFileUploadHelperInstance() {
|
|||
return new FileUploadHelper();
|
||||
}
|
||||
|
||||
// FIXME(emscripten): Should be implemnted in guihtmlcpp ?
|
||||
// FIXME(emscripten): Should be implemented in guihtmlcpp ?
|
||||
class FileDownloadHelper {
|
||||
constructor() {
|
||||
this.modalRoot = document.createElement("div");
|
||||
|
|
|
@ -69,6 +69,8 @@ void SolveSpaceUI::Init() {
|
|||
exportScale = settings->ThawFloat("ExportScale", 1.0);
|
||||
// Export offset (cutter radius comp)
|
||||
exportOffset = settings->ThawFloat("ExportOffset", 0.0);
|
||||
// Dimensions on arcs default to diameter vs radius
|
||||
arcDimDefaultDiameter = settings->ThawBool("ArcDimDefaultDiameter", false);
|
||||
// Rewrite exported colors close to white into black (assuming white bg)
|
||||
fixExportColors = settings->ThawBool("FixExportColors", true);
|
||||
// Export background color
|
||||
|
@ -250,6 +252,8 @@ void SolveSpaceUI::Exit() {
|
|||
settings->FreezeFloat("ExportScale", exportScale);
|
||||
// Export offset (cutter radius comp)
|
||||
settings->FreezeFloat("ExportOffset", exportOffset);
|
||||
// Rewrite the default arc dimension setting
|
||||
settings->FreezeBool("ArcDimDefaultDiameter", arcDimDefaultDiameter);
|
||||
// Rewrite exported colors close to white into black (assuming white bg)
|
||||
settings->FreezeBool("FixExportColors", fixExportColors);
|
||||
// Export background color
|
||||
|
@ -1099,7 +1103,7 @@ void SolveSpaceUI::MenuHelp(Command id) {
|
|||
"law. For details, visit http://gnu.org/licenses/\n"
|
||||
"\n"
|
||||
"© 2008-%d Jonathan Westhues and other authors.\n"),
|
||||
PACKAGE_VERSION, 2023);
|
||||
PACKAGE_VERSION, 2024);
|
||||
break;
|
||||
|
||||
case Command::GITHUB:
|
||||
|
|
|
@ -573,6 +573,7 @@ public:
|
|||
double gridSpacing;
|
||||
double exportScale;
|
||||
double exportOffset;
|
||||
bool arcDimDefaultDiameter;
|
||||
bool fixExportColors;
|
||||
bool exportBackgroundColor;
|
||||
bool drawBackFaces;
|
||||
|
|
|
@ -530,7 +530,7 @@ bool SShell::ClassifyEdge(Class *indir, Class *outdir,
|
|||
SBspUv::Class c = (srf.bsp) ? srf.bsp->ClassifyPoint(puv, dummy, &srf) : SBspUv::Class::OUTSIDE;
|
||||
if(c == SBspUv::Class::OUTSIDE) continue;
|
||||
|
||||
// Edge-on-face (unless edge-on-edge above superceded)
|
||||
// Edge-on-face (unless edge-on-edge above superseded)
|
||||
Point2d pin, pout;
|
||||
srf.ClosestPointTo(p.Plus(edge_n_in), &pin, /*mustConverge=*/false);
|
||||
srf.ClosestPointTo(p.Plus(edge_n_out), &pout, /*mustConverge=*/false);
|
||||
|
|
1
src/ui.h
1
src/ui.h
|
@ -442,6 +442,7 @@ public:
|
|||
static void ScreenShowEditView(int link, uint32_t v);
|
||||
static void ScreenGoToWebsite(int link, uint32_t v);
|
||||
|
||||
static void ScreenChangeArcDimDefault(int link, uint32_t v);
|
||||
static void ScreenChangeFixExportColors(int link, uint32_t v);
|
||||
static void ScreenChangeExportBackgroundColor(int link, uint32_t v);
|
||||
static void ScreenChangeBackFaces(int link, uint32_t v);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// The View menu, stuff to snap to certain special vews of the model, and to
|
||||
// The View menu, stuff to snap to certain special views of the model, and to
|
||||
// display our current view of the model to the user.
|
||||
//
|
||||
// Copyright 2008-2013 Jonathan Westhues.
|
||||
|
|
Loading…
Reference in New Issue