[英]How can i set markup text size according to the font size set to it the markup size is too large when zooming in?
[英]Why Does Text Markup Size Varies Based on Zoom?
從數據庫加載文本標記時,文本標記會根據查看器的當前縮放比例以不同的大小顯示。 無論縮放如何,如何使文本標記以靜態大小顯示?
function saveFreeformMarkup(markup){
let markupObject = {
x: markup.position.x,
y: markup.position.y,
width: markup.size.x,
height:markup.size.y,
type: TEXT_MARKUP_TYPE,
text: $(`#freeText`).val(),
urn_id: urn[`id`],
active: ACTIVE
};
$.ajax({
... send markupObject to database ...
});
}
function loadSingleMarkup(markup, markupTool){
let MarkupsCore = Autodesk.Viewing.Extensions.Markups.Core;
let text = new MarkupsCore.MarkupText(markup.id + ID_INCREMENT, markupTool, markup.text);
markupTool.addMarkup(text);
text.setSize({ x: markup.x, y: markup.y}, markup.width, markup.height);
text.setText(markup.text);
text.updateStyle(true);
}
這是因為在發生導航(縮放/平移)時,攝像機更改事件附帶有一個處理程序,該處理程序會根據當前視圖的更新邊界來調整SVG的視圖viewbox
。
為了克服這個問題,您可以背負MarkupCore擴展的onCameraChange
處理程序(確保在進入進入編輯模式之前將事件綁定到上鏈之前執行此操作),並根據當前的相機軸心值和SVG應用縮放添加標記時記錄的記錄:
MarkupsCore.originalOnCameraChange = MarkupsCore.onCameraChange;
MarkupsCore.onCameraChange = function(event){
let scaleString = calculateScale(originalPivot, viewer.autocam.pivot);
this.svg.setAttribute('transform', scaleString);
this.originalOnCameraChange(event)
}
有關SVG轉換的詳細信息,請參見此處 。
它將由您自己來執行計算,甚至是更好的方法來響應於導航來轉換標記。
我可以通過將loadSingleMarkup()
函數更改為以下內容來解決此問題
const FONT_SIZE_SCALE = 90;
function loadSingleMarkup(markup, markupTool){
let MarkupsCore = Autodesk.Viewing.Extensions.Markups.Core;
let text = new MarkupsCore.MarkupText(markup.id + ID_INCREMENT, markupTool, markup.text);
markupTool.addMarkup(text);
text.setSize({ x: markup.x, y: markup.y}, markup.width, markup.height);
text.setText(markup.text);
text.style[`font-size`] = 12 / FONT_SIZE_SCALE;
text.updateStyle(true);
}
(添加text.style[`font-size`] = 12 / FONT_SIZE_SCALE;
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.