Берём карандаш и лист бумаги (в крайнем случаи и шариковая ручка сойдёт). Проводим с десяток линий и смотрим на концы линий.
Берём Ваш скан и изменяем на чёрно-белый, как на начерталке и сравниваем.
Пока я не представляю как dwg внедрить в DOM и с помощью JavaScripta с ним работать, поэтому с svg проще + написать для CAD системы простой экспорт из dwg в объектно структурированный svg.
Иначе зачем придумали сам SVG? Можете мне пояснить?
"@ param dimDrawing (number and string[ ][ ])" — а может стоит пользоваться json-подобным набором параметров? как минимум будет читабельнее в использующем функцию коде (и не придется вставлять функцию и описание к ней).
Может и стоит, размер файла описание чертежа вырастит. Может в функции проверять массив или объект и соответственно обрабатывать. Определённые части массива могут не заполнятся, соответственно и какой-то элемент графики не отображаться.
Например, у вас есть чертеж — некий документ. В документе есть страницы. Страницы могут быть собственно чертежами либо страницей с текстом. Страница содержит рамку с описанием. Ну, а далее на странице расположены элементы разных типов.
Но только это не примитивы svg, а свои элементы (в принципе вы и делаете эти элементы). В дальнейшем у вас будет библиотека элементов. Еще возможно внедрение областей и слоев на странице (возможно даже функциональных слоев — надписи в одном слое, блоки в другом). Все это реализуемо в рамках svg.
Есть документ. У него нет страниц. Это область листа определённого формата. Он может быть разного вида(типа): фрагмент, чертёж, спецификация, текстовый документ (он тоже имеет рамочку с штампом как и у чертежа и каждая страница текстовой документации рассматривается как отдельный документ). Чертёж детали может состоять из нескольких документов (листов) как и спецификация (страниц).
Для вида(типа) чертёж в области листа размещаются виды (фрагмент вида детали с одной стороны) в определённом масштабе. В области вида кроме примитивов (линия, дуга, окружность) размещены объекты: размеры, обозначение линии разреза, обозначение шероховатости, лини-выноски. Графическая и текстовая части объекта (размера, позиции и др.) не может быть разнесена на разные слои.
Набор слоёв размещается в каждом виде и могут быть слои в области листа. Слой — группа элементов отображенная одним цветом.
Так как набрасываю черновик библиотеки для экспорта/импорта из Компас-график в SVG, то мне проще документ описать так
Возможно, стоит предусмотреть вам свое описание предметной области для отрисовки чертежей. Некое подобие объектно-ориентированного формата, в котором будут методы, реализующие отрисовку тех или иных элементов формата в svg.
Так и есть.
Например описание вида на листе чертежа
/* Add an embedded SVG element.
Specify all of vx, vy, vwidth, vheight or none of them.
@param parent (element or jQuery) the parent node for the new node (optional)
@param x (number) the x-coordinate for the left edge of the node
@param y (number) the y-coordinate for the top edge of the node
@param width (number) the width of the node
@param height (number) the height of the node
@param vx (number) the minimum x-coordinate for view box (optional)
@param vy (number) the minimum y-coordinate for the view box (optional)
@param vwidth (number) the width of the view box (optional)
@param vheight (number) the height of the view box (optional)
@param settings (object) additional settings for the node (optional)
@return (element) the new node */
view: function(parent, x, y, width, height, vx, vy, vwidth, vheight, settings) {
Например описание линейного размера в виде (не примитив svg)
var dimText = [0, 0, '120'];
var dimDrawing = [0, [190,180,'dimArrow1'],[310,180,'dimArrow2'],[0,50,1]];
cad.diml(vsf, dimDrawing, dimText);
Описание функции
/* Draw a linear dimension
@param parent (element or jQuery) the parent node for the new shape (optional)
@param dimDrawing (number and string[][]) the options drawing dimensions
@param dimText (number and string[][]) the options drawing text
@return (element) the new shape node */
diml: function(parent, dimDrawing, dimText) {
Задаю два массива dimText — для текстовой части, dimDrawing — для графической.
Функция cad.diml создаёт по заданным данным массива конструкцию в SVG в виде vsf.
/* Draw a hatch
@param parent (element or jQuery) the parent node for the new shape (optional)
@param nameHatch (string) the name hatch
@param contour (string) the definition of the outline of a shape
@return (element) the new shape node */
hatch: function(parent, nameHatch, contour) {
return this.path(parent, contour, {fill: 'url(#'+nameHatch+')'});
},
Функция cad.hatch создаёт по заданным данным ( hatch1_45 — шаблон штриховки и контуру) конструкцию в SVG в виде vsf.
Например описание дуги
cad.arc(vsf,187,-125.024,313,-125.024,140,0,1);
Описание функции
/* Draw a arc.
@param parent (element or jQuery) the parent node for the new shape (optional)
@param x1 (number) the x-coordinate for the start of the line
@param y1 (number) the y-coordinate for the start of the line
@param x2 (number) the x-coordinate for the end of the line
@param y2 (number) the y-coordinate for the end of the line
@param r (number) the radius of the circle
@param large (boolean) true to draw the large part of the arc,
false to draw the small part (omitted if rx is array)
@param clockwise (boolean) true to draw the clockwise arc,
false to draw the anti-clockwise arc (omitted if rx is array)
@param type (number) the type of the line (optional)
@return (element) the new shape node */
arc: function(parent, x1, y1, x2, y2, r, large, clockwise, type) {
Почему jquery.svg.js? Правильно ли я понимаю, что обзор делается в рамках разработки стандарта чертежей?
Описание чертежа на JavaScript тоже тестировал с использованием библиотеки jquery.svg.js. Для более компактного кода чертежа, взяв всё необходимое из jquery.svg.js переписываю в jquery.cad.js с методами более понятными для описания чертежа.
Расширенные возможности CSS, применяемые при разработке среднего современного сайта, скорее всего будут отображены старым броузером искаженно или вообще не позволят открыть страницу.
Скрытие стилей с помощью метода @ import (Netscape 4, Internet Explorer 4 и другие старые броузеры не поддерживают возможность ссылки на таблицу стилей с помощью метода @ import, а благодаря особенностям CSS эта непонятная команда будет ими проигнорирована) позволит избежать таких сбоев. На самом деле даже не обязательно добавлять базовую таблицу стилей – если вы присоединяете свою таблицу стилей с помощью @ import, то в старых броузерах документ будет отображен в соответствии с их внутренней таблицей стилей.
Создать online cad? Она может замечательно работать на DWG. Более того, она обязана работать с DWG (хотя бы на уровне импорт/экспорт), иначе у нее будет существенно меньшее кол-во пользователей.
Может импорт/экспорт лучше реализовать на уровне библиотеки под CAD offLine системы. В AutoCAD 2014 появилось JavaScript API.
Когда я имею чертёж в Document Object Model то проще работать с таким чертежом в облаках. Чем работать с DWG.
Ваши слова:
По сути DWG — это расширяемая в разные стороны база данных.
Зачем ещё одна база данных в облаках?
Давайте отойдем от DWG и SVG и посмотрим на форматы DOC и DOCX.
DOC — двоичный файл документа.
На основе формата DOC и XML разработан новый формат текстовых файлов.
DOCX — Office Open XML
Сейчас никак, а где то через 25 лет думаю также как и в DWG.
Веб-технологии не топчутся на месте.
В Википедии пишут что в AutoCAD 2014 появилось JavaScript API.
Формат DWG — это не просто линии, штриховки и т.п. Это еще и ряд технологий вокруг этого формата — прокси-объекты и XDATA, внешние ссылки, пространство модели-листа, блоки и динамические блоки, поддержка растров и PDF, слои и комбинации слоев, автозаполняемые поля, параметризация и зависимости, 3D данные…
DWG — разработан в конце 1970-х, лицензирован компанией Autodesk в 1982
SVG — Разрабатывается с 1999 года. В 2001 году вышла версия 1.0
Думаю DWG ни в один миг получил то что Вы описали. С чего то надо начинать, думаю с самого простого.
Реализовать расчётную задачу с формированием пакета чертежей в SVG для просмотра/печати с последующим импортом для редактирования в одну из CAD offLine систем думаю не составляет особых трудностей. Хотя есть уже и редакторы SVG onLine. Очень много таких простых расчетных задач.
1. Не надо устраивать войн за формат, есть возможность использовать SVG.
2. SVG в облачный САПР как внутренний формат. Не тянуть за уши DWG в облако.
3. SVG in 3D
4. Локально на компьютере STEP меня вполне устраивает, а для облаков есть SVG.
Ни одна браузерная игра не обходится без багов. Причем, баги зависят от браузера, от составляющих компа, от его старинности и т.д. Товарищи, не надо онлайн CAD делать, пожалуйста…
Берём Ваш скан и изменяем на чёрно-белый, как на начерталке и сравниваем.
Иначе зачем придумали сам SVG? Можете мне пояснить?
Может и стоит, размер файла описание чертежа вырастит. Может в функции проверять массив или объект и соответственно обрабатывать. Определённые части массива могут не заполнятся, соответственно и какой-то элемент графики не отображаться.
Есть документ. У него нет страниц. Это область листа определённого формата. Он может быть разного вида(типа): фрагмент, чертёж, спецификация, текстовый документ (он тоже имеет рамочку с штампом как и у чертежа и каждая страница текстовой документации рассматривается как отдельный документ). Чертёж детали может состоять из нескольких документов (листов) как и спецификация (страниц).
Для вида(типа) чертёж в области листа размещаются виды (фрагмент вида детали с одной стороны) в определённом масштабе. В области вида кроме примитивов (линия, дуга, окружность) размещены объекты: размеры, обозначение линии разреза, обозначение шероховатости, лини-выноски. Графическая и текстовая части объекта (размера, позиции и др.) не может быть разнесена на разные слои.
Набор слоёв размещается в каждом виде и могут быть слои в области листа. Слой — группа элементов отображенная одним цветом.
Так как набрасываю черновик библиотеки для экспорта/импорта из Компас-график в SVG, то мне проще документ описать так
чем так
И по мере изменений поддержки браузерами SVG вносить изменения в библиотеку на JavaScript, чем в библиотеку под Компас-график или другую CAD систему.
Так и есть.
Например описание вида на листе чертежа
Описание функции
Например описание линейного размера в виде (не примитив svg)
Описание функции
Задаю два массива dimText — для текстовой части, dimDrawing — для графической.
Функция cad.diml создаёт по заданным данным массива конструкцию в SVG в виде vsf.
Например описание штриховки (не примитив svg)
Описание функции
Функция cad.hatch создаёт по заданным данным ( hatch1_45 — шаблон штриховки и контуру) конструкцию в SVG в виде vsf.
Например описание дуги
Описание функции
Описание чертежа на JavaScript тоже тестировал с использованием библиотеки jquery.svg.js. Для более компактного кода чертежа, взяв всё необходимое из jquery.svg.js переписываю в jquery.cad.js с методами более понятными для описания чертежа.
Пример
Может импорт/экспорт лучше реализовать на уровне библиотеки под CAD offLine системы. В AutoCAD 2014 появилось JavaScript API.
Когда я имею чертёж в Document Object Model то проще работать с таким чертежом в облаках. Чем работать с DWG.
Ваши слова:
Зачем ещё одна база данных в облаках?
Давайте отойдем от DWG и SVG и посмотрим на форматы DOC и DOCX.
DOC — двоичный файл документа.
На основе формата DOC и XML разработан новый формат текстовых файлов.
DOCX — Office Open XML
Теперь вспомним главный вопрос: зачем?
Веб-технологии не топчутся на месте.
В Википедии пишут что в AutoCAD 2014 появилось JavaScript API.
DWG — разработан в конце 1970-х, лицензирован компанией Autodesk в 1982
SVG — Разрабатывается с 1999 года. В 2001 году вышла версия 1.0
Думаю DWG ни в один миг получил то что Вы описали. С чего то надо начинать, думаю с самого простого.
Реализовать расчётную задачу с формированием пакета чертежей в SVG для просмотра/печати с последующим импортом для редактирования в одну из CAD offLine систем думаю не составляет особых трудностей. Хотя есть уже и редакторы SVG onLine. Очень много таких простых расчетных задач.
2. SVG в облачный САПР как внутренний формат. Не тянуть за уши DWG в облако.
3. SVG in 3D
4. Локально на компьютере STEP меня вполне устраивает, а для облаков есть SVG.
такой же пример из Компас-графика (скан), я понимаю что ещё мой пример в SVG далёк до идеальности, будем усовершенствовать
тоже так думаю, и продумываю варианты
2. Пробовал вставлять, видимо редактор такого не предусматривает
Таким же алгоритмом отфильтруем по координатам объекты и в SVG. Мы имеем те же координаты и объекты.