Текущие решения, которые я знаю для отображения JSCad Designs:
всем нужна достаточно инфраструктуры для работы.
https://www.openjscad.org/
основан на узле Userguide
https://www.openjscad.org/dokuwiki/doku.php?id=user_guide_website
состояния
Сайт может быть интегрирован в существующий сайт.
Но не говорит как.
https://danmarshall.github.io/jscad-gallery/
Имеет источники в https://github.com/danmarshall/jscad-gallery. Они были в последний раз изменены в 2017 году (около 2 лет назад на этот пост).
Он использует несколько десятков файлов javascript и jekyll, чтобы выполнить свою задачу.
Пример: https://danmarshall.github.io/jscad-gallery/s-hook
Исходный код страницы довольно мал:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>JSCAD Gallery s-hook</title>
<link rel="stylesheet" type="text/css" href="/jscad-gallery/site.css"/>
<script src='/jscad-gallery/browser_modules/@jscad/csg/0.3.7.js' type="text/javascript"></script>
<script src='/jscad-gallery/js/jscad-viewer.js' type="text/javascript"></script>
<script src='/jscad-gallery/js/ui.js' type="text/javascript"></script></head>
<body>
<h1>s-hook</h1>
<p>a simple S-hook design</p>
<div id="detail-viewer"></div>
<div id="inputs"></div>
<button onclick="detailView.export('stl', document.getElementById('download'))">Generate STL</button>
<div id="download"></div>
<script>
var design = {
title: "s-hook",
updated: null,
author: "Joost Nieuwenhuijse",
version: "1.0.0",
dependencies: [{"@jscad/scad-api":"^0.4.2"}],
image: "/browser_modules/s-hook/thumbnail.png",
camera: {"angle":{"x":-60,"y":0,"z":-45},"position":{"x":0,"y":0,"z":116}}
};
var detailView = new JscadGallery.DesignView();
detailView.load(document.getElementById('detail-viewer'), design, document.getElementById('inputs'));
</script>
<footer>
<a href="https://github.com/danmarshall/jscad-gallery">Jscad-gallery on GitHub</a>
</footer>
</body>
</html>
Я ищу (надеюсь) простое решение, которое можно встроить в Mediawiki. Для начала мне подойдет простая HTML-страница с небольшим количеством javascript.
см. Также:
https://openjscad.nodebb.com/topic/98/displaying-jscad-designs-in-media-wiki-or-plain-html-for-a-start
Для начала я создал http://wiki.bitplan.com/index.php/ParametricLampShade, просто скопировав html из https://risacher.org/OpenJsCad/lampshadedemo.html.
Я положил файлы:
- csg.js
- lightgl.js
- openjscad.js
в папку extensions / OpenJsCad.
При таком упрощенном подходе я получаю ошибку:
Error in line 466: NetworkError: Failed to load worker script at http://wiki.bitplan.com/index.php/csg.js (nsresult = 0x804b001d)
Кажется, причины в openjscad.js:
// callback: should be function(error, csg)
OpenJsCad.parseJsCadScriptASync = function(script, mainParameters, options, callback) {
var baselibraries = [
"csg.js",
"openjscad.js"
];
var baseurl = document.location.href.replace(/\?.*$/, '');
var openjscadurl = baseurl;
if (options['openJsCadPath'] != null) {
openjscadurl = OpenJsCad.makeAbsoluteUrl( options['openJsCadPath'], baseurl );
}
var libraries = [];
if (options['libraries'] != null) {
libraries = options['libraries'];
}
...
}
openjscadurl берется из базового пути, который для Mediawiki - ../index.php.
Как я могу это исправить?
Какой минимальный набор файлов javascript необходим и будут правильными версиями этих файлов?