Конвертирование в svg формат чертежей созданных в редакторах Компас3D, CorelCad, AutoCAD?

интересует вопрос создания качественных чертежей в формате SVG. Подскажите где это сделать удобнее всего. Экспорт в Компас3д в формате svg я не нашел. Есть мысли по данной теме? Спасибо.


Ответы (1 шт):

Автор решения: Alexandr_TT

Чертежи, созданные в AutoCAD и в других подобных программах, обычно сохраняются в формате *.dwg

Если вам нужен конвертер из *.dwg в *.svg формат можете попробовать Бесплатное онлайн преобразование dwg в svg

Но будьте готовы, что в некоторых случаях могут возникнуть всякого рода артефакты: сдвиг линий чертежа, сдвиг стрелок с размерами, штриховка может оказаться не на том месте, где должна быть.

Короче, бесплатный сыр, бывает только в мышеловках. Поэтому, нужно уметь найти в этом бесконечном коде SVG нужное место и подкорректировать его вручную.

В помощь можно почитать отличную статью в четырех частях, как в ручную нарисовать или соответственно поправить, тот или иной элемент.

Чертежи в SVG формате. Часть 1

Эта статья написана в 2013 году, но svg не менялся с 2001 года, поэтому она актуальна до сих пор.

В статье описываются, как можно создать или поправить те или иные элементы чертежа

введите сюда описание изображения

Например, SVG код размерной линии со стрелками. В качестве стрелок используются маркеры. Подробнее здесь

Код размерной стрелки:

<svg  xmlns="http://www.w3.org/2000/svg"  xmlns:xlink="http://www.w3.org/1999/xlink"
         width="300" height="300" viewBox="0 0 400 400" >  

<defs id="defsCAD">
<!-- Рисование стрелок и засечек  -->
    <marker id="DimPoint1" viewBox="-2 -12 29 24" markerWidth="44" markerHeight="36" orient="auto">
        <path class="lt2_025" stroke="black" d="M0,0 L20,-4 16,0 20,4 z M0,-10 L0,10 M0,0 L27,0"/>
    </marker>
    <marker id="DimPoint2" viewBox="-27 -12 29 24" markerWidth="44" markerHeight="36" orient="auto">
        <path class="lt2_025" stroke="black" d="M0,0 L-20,-4 -16,0 -20,4 z M0,-10 L0,10 M0,0 L-27,0"/>
    </marker>
</defs>

    <g class="DimL">
        <line class="lt2" x1="190" y1="180" x2="190" y2="230"/>
        <line class="lt2" x1="310" y1="180" x2="310" y2="230"/>
        <line id="dim1" class="lt2" x1="190" y1="230" x2="310" y2="230" marker-start="url(#DimPoint1)" marker-end="url(#DimPoint2)"/>
        <text x="230" y="222" font-size="28" >120</text> 
    </g>
</svg>  

Update

Внешняя рамка чертежа

Есть одна особенность отображения графики в SVG. Если мы задали область и хотим по краю её нарисовать контур, то должны отступить на пол толщины линии иначе линии будут на половину тоньше. Например ниже код чёрной рамочки края чертежа.

<svg id="Shtamp" type="1" x="0" y="0" width="420" height="297" viewBox="0 0 420 297">
    ...
    <rect class="lt2" x="1" y="1" width="418" height="295"/>
   ....
</svg>

Вполне возможно, что при конвертации из *.dwg => *.svg это не учитывается, откуда конвертору узнать, что это край холста SVG. И если вам нужен качественный чертеж с одинаковыми по толщине линиями, то измените viewBox и другие атрибуты, как в примере выше

  • vector-effect: non-scaling-stroke;.

Применяется, если есть необходимость сохранять постоянной толщину линий при масштабировании холста SVG.
Пример здесь с анимацией, демонстрирующий этот эффект

→ Ссылка