CADViewer, grazie al suo design flessibile e all’utilizzo di toolkit standard, può essere integrato con qualsiasi applicazione di gestione di database e utilizzato con una moltitudine di applicazioni personalizzate basate sui dati.
Questo Tutorial
Questo tutorial descrive l’estensione a SVG prodotta dal convertitore CAD AutoXchange 2020, che CADViewer utilizza per trasformazioni di unità , cambio di pagina, quotatura, ecc. durante la modellazione di un file DWG come SVG.
Questo tutorial contiene le seguenti sezioni:
- 1: Definizione del <metadata> tag cadviewer_worldUnits.
- 2: Definizione del <metadata> tag cadviewer_drawingCoordinates.
- 3: Definizione del <metadata> tag cadviewer_ViewportClipping.
- 4: Definizione del <metadata> tag cadviewer_multiPages.
- 5: Variabili in <defs> root section.
- 6: Modelspace viewport classes definito il <defs> section.
- 7: SVG viewport classes definito il <defs> sezione.
- 8: Utilizzando il contenuto di trasformazione in calcolare le distanze.
Si prega di fare riferimento al nostro Download sezione, da scaricare AutoXchange 2020 e CADViewer per testare con i tuoi file.
1: cadviewer_worldUnits
AutoXchange rappresenta un numero di variabili Unit che AutoCAD DWG espone nel file cadviewer_worldUnits matrice nel <metadata> section:
<text id="cadviewer_worldUnits">
{ "globalOrigin": { "x": -7101.72, "y" : 15047.9},
"units": "mm",
"measurementType": "Metric",
"lengthType": "Decimal",
"lengthPrecision": 4,
"blockUnitsFormat": "Undefined",
"svgToWorldUnits": 5.79325,
"worldToSVGUnits": 0.172615
}
</text>
I valori del sistema CAD di origine sono:
- measurementType
- lengthType
- lengthPrecision
- blockUnitsFormat
I valori calcolati da utilizzare nel file SVG corrente sono:
- svgToWorldUnits
- worldToSVGUnits
Le unità presunte nel disegno, come percepite da AX2020 al momento della conversione, lo sono:
- units
NOTE: AutoCAD DWG does not contain a unit definition. Il presunto unit la definizione si basa sui valori di: measurementType, lengthType, lengthPrecision and blockUnitsFormat in combinazione. Il programmatore dell’applicazione può formulare le proprie ipotesi in base a queste impostazioni. CADViewer include un comando Calibrate, dove gli utenti possono cambiare unità o ricalibrare se necessario.
2: cadviewer_drawingCoordinates
Per il modello o layout corrente, AutoXchange ha calcolato una trasformazione tra le estensioni DWG e SVG. Per il calcolo generale della distanza, vedere la sezione 8, calculate distances.
<text id="cadviewer_drawingCoordinates">
{ "DWG":
{ "lowerLeft": { "x": -7101.72, "y" : 15047.9},
"upperRight": { "x": 7118.24, "y" : 25000.7}
},
"SVG":
{ "lowerLeft": { "x": 22.7133, "y" : 1718},
"upperRight": { "x": 2477.29, "y" : 0}
},
"Drawing Height": 1718
}
</text>
3: cadviewer_ViewportClipping
Nel caso di un layout di Spazio Carta, in cui la finestra dello spazio modello viene ritagliata, il percorso della finestra viene esposto attraverso cadviewer_ViewportClipping in the <metadata> section:
<text id="cadviewer_ViewportClipping">
{ "paths":
{
[[20,15.5] , [230,15.5] , [230,35] , [326,35] , [326,292] , [20,292] ],
[[326,292] , [326,35] , [415,35] , [415,292] ]
}
}
</text>
4: cadviewer_multiPages
Poiché SVG è solo un formato a pagina singola, AutoXchange 2020 computes a multipage navigation matrix, when the original drawing is processed for ModelSpace and all Layouts, see cadviewer_multiPages in the <metadata> section:
<text id="cadviewer_multiPages">
{ "multiPages": 3,
"currentPage":1,
"pages" : [
{ "fileName":"bru_52a_basic", "pageName":"ModelSpace"},
{ "fileName":"bru_52a_basic__Layout01", "pageName":"Pr\u00E9sentation1"},
{ "fileName":"bru_52a_basic__Layout02", "pageName":"Pr\u00E9sentation2"}
]
}
</text>
5: Sezione root
Nella sezione root del <defs>, vengono esposte una serie di variabili di controllo, per i programmatori di applicazioni quelli importanti sono tmsNumberOfLayouts descritto di seguito nel Modelspace viewport classes e tmsNumberOfSVGViewports descritto di seguito nel SVG viewport classes.
<defs>
<style id="cv_styles" type = "text/css">
<![CDATA[
svg{ background-color: white; opacity: 1.}
:root {
--tmsMinLineWidth: 0.6;
--tmsHLWidth: 0.6;
--tmsNumberOfLayouts: 3;
--tmsNumberOfSVGViewports: 1;
--tmsMinFixedLineWidth: 0.2;
--tmsbPostFix: 0;
}
]]></style>
</defs>
6: Classi vista Modelspace
Per ogni layout di PaperSpace, le finestre definite nel ModelSpace sono esposte come classi .sLO_xx. Queste definizioni di classe contengono il fattore di scala e le estensioni di ciascuna finestra dello spazio modello
<defs>
<style id="cv_styles" type = "text/css">
<![CDATA[
.sLO_0 {
scale: 1;
x: -62.7155;
y: -1.36865;
width: 545.431;
height: 299.737;
}
.sLO_1 {
scale: 0.0199062;
x: 20;
y: 15.5;
width: 306;
height: 276.5;
}
.sLO_2 {
scale: 0.0994258;
x: 326;
y: 35;
width: 89;
height: 257;
}
]]></style>
</defs>
7: Classi vista SVG
Per ogni layout di PaperSpace, le finestre SVG che mappano una finestra di ModelSpace sono definite come classi .sSVGViewport__xx. Nella maggior parte dei casi ci sarà solo una SVGViewport in un dato layout, ma possono essercene più.
<defs>
<style id="cv_styles" type = "text/css">
<![CDATA[
.sSVGViewport_0 {
x: 0;
y: 0.161616;
width: 2500;
height: 1767.68;
}
]]></style>
</defs>
NOTE: Se la finestra SVG è una maschera di ritaglio, il file .sSVGViewport__xx verrà soppresso e invece rappresentato dal cadviewer_ViewportClipping variabile nella sezione <metadata>.
8: Calcolare le distanze
Le distanze nel disegno vengono calcolate in modo diverso, a seconda che si trovino in ModelSpace o nei layout di PaperSpace
ModelSpace
Le distanze in ModelSpace vengono trasformate direttamente utilizzando il file variabile svgToWorldUnits.
distanceDWG = distanceSVG * svgToWorldUnits;
Layout con Viewport rettangolare
Le distanze nelle finestre di layout devono essere ridimensionate in base al fattore di scala della finestra e al fattore di larghezza (o altezza) relativa tra la finestra SVG e la finestra DWG nelle coordinate dello spazio modello.
distanceDWG = distanceSVG * sLO_1.width/(sSVGViewport_0.width*sLO_1.scale);
Layout with Clipped Viewport
Il programmatore dell’applicazione deve calcolare le estensioni del viewport SVG ritagliate come definito dal percorso in cadviewer_ViewportClipping, e quindi applicare la stessa trasformazione di cui sopra in Layout with Rectangular Viewport.