夢想CAD控制元件網頁開發--圖形資料庫(文字樣式)
DWG資料庫中,文字樣式存放在文字樣式表中,表類名: MxDrawTextStyleTable,它的詳細介面說明參考:
文字樣式表中每一條記錄稱為一種文字樣式,類名: MxDrawTextStyleTableRecord,它的詳細介面說明參考:
文字樣式是隨圖紙儲存,不同的圖紙使用的文字樣式都可能會不一樣。
文字樣式設定命令:Mx_Style, 比如:
mxOcx.SendStringToExecute("Mx_Style")
呼叫樣式介面,如下圖:
文字樣式主要屬性有:字型檔名,大字型檔名,新建文字高度,新建文字寬度縮放比例,文字傾斜角度,TrueType字型資料等
DWG資料庫預設總是有一個"Standard"文字樣式,該文字樣式不能被刪除。
影片演示:
A. 當前文字樣式
當前文字樣式表示向DWG資料庫新增一個文字物件時,使用的預設的文字樣式,透過系統變數TEXTSTYLE操作,系統變數設定參考:
設定當前文字樣式JS
// 新增文字樣式 mxOcx.AddTextStyle1("MyTextStyle", "txt.shx", "hztxt.shx", 1); // 得到當前資料庫 var database =mxOcx.GetDatabase(); // 設定當前文字樣式 database.CurrentlyTextStyle = "MyTextStyle";
取當前文字樣式程式碼:
var sCurrentTextStyle = database.CurrentlyTextStyle;
B. 新增文字樣式
下面程式碼,得到當前資料庫中的文字樣式表,然後向樣式表中新增一個文字樣表記錄
JS程式碼:
function CreateText(){ //返回控制元件的資料庫物件 var database =mxOcx.GetDatabase(); //返回資料庫中的文字樣式表物件 var mxtst = database.GetTextStyleTable(); var txtStyle = mxtst.GetAt("duanceng", true); if(txtStyle != null) { // 當前資料已經有該文字樣。 // 如果被刪除,就反刪除。 txtStyle.SetProp("unErase", null); return; } //增加新的文字樣式 var mxtstr = mxtst.Add("duanceng"); //設定樣式 //設定文字的TrueType字型,如果文字樣式設定了TrueType字型,就不會使用前面設定shx字型 //引數一為turetype字型名 引數二為是否粗寫 引數三為是否斜寫 引數四為windows字符集 引數五暫沒使用 mxtstr.SetFont("黑體", false, false, 0, 0); //返回文字的高度 mxtstr.textSize = 5;}
呼叫上面函式,增加"aa"文字樣式
AddTextStyle("aa");
或者也可以這樣:
使用
ocx.AddTextStyle1
(新增線形字型文字樣式),
ocx.AddTextStyle2
(新增TrueType字型文字樣式)新增文字,該函式詳細介面說明參考:
比如VB程式碼
MxDrawX1.AddTextStyle1 "MyTextStyle", "italicc.shx", "gbcbig.shx", 0.7 MxDrawX1.TextStyle = "MyTextStyle" MxDrawX1.DrawColor = 255 MxDrawX1.DrawText 0, 3000, "夢想繪圖控制元件3.0
比如新增一個黑體字型的文字樣式
'新增TureType字型 MxDrawX1.AddTextStyle2 "MyTrueTypeStyle", "黑體", 0.7 MxDrawX1.TextStyle = "MyTrueTypeStyle" MxDrawX1.DrawText 0, 3150, "夢想繪圖控制元件3.0
效果展示:
C. 得到所有文字樣式
下面程式碼是遍歷文字樣式表中所有文字樣式,並得到所有文字樣式名,在遍歷的迴圈中,得到每個文字樣式記錄物件,可以去修改它的屬性
function GetAllText() { var database = mxOcx.GetDatabase(); // 得到所有圖層名 var sRet = null; //返回資料庫中的文字樣式表物件 var spTextStyleTable = database.GetTextStyleTable(); //建立一個遍歷層表中所有圖層的遍歷器 var spIter = spTextStyleTable.NewIterator(); //移動當前遍歷器位置 for(;!spIter.Done();spIter.Step(true,true)) { //返回遍歷器當前位置的記錄 var spTextStyleRec = spIter.GetRecord(); //符號表記錄名屬性 var sName = spTextStyleRec.Name; // 0零層不參加比較 if(sName != "0") { if(sRet == null) sRet = sName; else { sRet = sRet +","+sName; } } } alert(sRet);}
D. 刪除文字樣式
在刪除文字樣式前,最好判斷圖上有沒有文字物件正在使用該文字樣式,如果有的話就不要刪除文字樣式
JS程式碼如下:
function DelText() { var winWidth = 440; var winHeight = 140; var winLeft = (screen.width - winWidth) / 2; var winTop = (screen.height - winHeight) / 2 - 20; var str = 'dialogHeight:' + winHeight + 'px;dialogWidth:' + winWidth + 'px;dialogTop:' + winTop + 'px;dialogLeft:' + winLeft + 'px;resizable:yes;center:yes;status:no;' var rt = window.showModalDialog("Gettext.htm?tmp=" + Math.random(), "輸入圖層名", str); var txt; if (typeof (rt) == "undefined") { return; } else { var arr = rt.split(","); txt = arr[0]; } var database = mxOcx.GetDatabase(); //返回資料庫中的文字樣式表表物件 var TextStyleTable = database.GetTextStyleTable(); //得到層表中的文字樣式表物件 var TextStyleRec = TextStyleTable.GetAt(txt, false); if (TextStyleRec == null) return; //刪除物件 TextStyleRec.Erase(); alert("成功刪除文字樣式");}
E.呼叫文字樣式管理介面
Mx_Style是文字樣式命令名
例如程式碼 JS:
mxOcx.SendStringToExecute("Mx_Style");
F. 修改文字物件的文字樣式
文字物件都一個TextStyle屬性,用這個屬性可以設定,或取到文字物件的文字樣式。
下面程式碼演示設定一個文字物件的字型為黑體,如果沒有文字樣式,就新增文字樣式。
var ent = mxOcx.GetEntity("選擇實體物件:"); if(ent == null) { return; } // 得到資料庫物件. var database = mxOcx.GetDatabase(); // 得到文字式表. var textStyleTable = database.GetTextStyleTable(); var sTextStyleName = "MyTextStyleName"; // 得到文字式 var textStyle = textStyleTable.GetAt(sTextStyleName, true); if (textStyle == null) { // 如果沒有就新建一個。 mxOcx.AddTextStyle2(sTextStyleName, "黑體", 0.7); } else { // 如果被刪除,就反刪除。 textStyle.SetProp("unErase", null); textStyle.SetFont("黑體", false, false, 0, 0); } // 設定實體文字樣式。 ent.TextStyle = sTextStyleName; alert("已將該實體設定文字樣式");
G. 得到圖所有文字物件使用的字型檔案
下面程式碼會遍歷圖上所有CAD文字物件,然後取它使用的字型資訊
var database = mxOcx.GetDatabase();//返回資料庫中的文字樣式表表物件 var textStyleTable = database.GetTextStyleTable();// 定義選擇集物件 var ss = mxOcx.NewSelectionSet();//構造一個過濾連結串列 var spFilte = mxOcx.NewResbuf();//得到當前空間的所有實體 ss.AllSelect (spFilte);// 遍歷所有物件 for(var i = 0;i <ss.Count;i++) { var ent = ss.Item(i); // 得到物件使用的文字樣式記錄. var rec = textStyleTable.GetAt(ent.TextStyle); if (rec == null) continue; // 得到TrueType字型屬性。 var pTypeface = ""; var bold = false; var italic = false; var charset = 0; var pitchAndFamily = 0; rec.Font(pTypeface,bold,italic,charset,pitchAndFamily); var sShxFileName; var sBigShxFileName; var sShxFileName1; // 如果TrueType字型名為空,表示使用的Shx字型。 if(pTypeface.Length != 0) { // 得到西文字型 sShxFileName = rec.fileName; // 得到中文字型 sBigShxFileName = rec.bigFontFileName; sShxFileName1=sShxFileName+sBigShxFileName; alert(sShxFileName1); } }
H. 文字顯示號問題原因和解決辦法
開啟DWG時,圖紙中使用的shx字型檔案在本地電腦不能找到時,控制元件會預設使用預設的字型txt.shx,hztxt.shx來代替,這樣一般文字不會顯示成問號,但是如果文字中的特殊符號在預設字型也一樣找不到,這時就會顯示成問號。 使用預設的字型的代替的文字樣式,可能會出現文字顯示大小,樣子不一至的效果。
這時最好的辦法是,把需要使用的字型拷到MxDrawX.ocx所在目錄的shx目錄下,如果不知道當前用的MxDrawX.ocx在位置,可以命令列輸入mx_about看到控制元件安裝位置
如下圖,開啟圖時,在命令列提示找不到字型
修改控制元件Iniset屬性,Iniset="ShxPath=D:/shx"新增一個字型搜尋位置,
修改控制元件Iniset屬性, Iniset="DownLoadServerFont=Y",設定開啟網路圖紙時,自動下載伺服器上的字型檔案。預設不會下載.,伺服器需要 設定MIME,增加shx檔案型別支援.
修改控制元件Iniset屬性, Iniset="SHXWEBSITEADDRESS=,設定字型下載位置
修改控制元件Iniset屬性, Iniset="DefaultText=txt.shx", 設定預設的shx檔案
修改控制元件Iniset屬性, Iniset="DefaultBigText=hztxt.shx", 設定預設的big shx檔案
iniset屬性介面說明,參考:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29511035/viewspace-2776778/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 夢想CAD控制元件(網頁CAD,web瀏覽cad) 2022.09.20更新控制元件網頁Web
- 夢想cad在網頁開發時如何獲取圖層操作的資訊網頁
- 夢想CAD控制元件 2021.09.05更新控制元件
- 關於CAD夢想控制元件介面控制控制元件
- 夢想Android版CAD控制元件2021.09.04更新Android控制元件
- CAD夢想畫圖操作介面
- CAD夢想畫圖2021.09.04更新
- CAD夢想畫圖---雲線
- CAD夢想畫圖--審圖示記
- 達夢資料庫圖形化作業管理資料庫
- 夢想CAD雲圖與GIS結合演示網址
- CAD夢想畫圖中的“延伸命令”
- CAD夢想畫圖中的“分解命令”
- CAD夢想畫圖產品簡介
- CAD夢想畫圖(線上CAD)如何上傳檔案
- 達夢資料庫開發資料庫
- CAD夢想畫圖中的“線型設定”
- CAD夢想畫圖中的“熱鍵快捷命令”
- 在CAD夢想畫圖中如何使用PLAN命令
- CAD夢想畫圖中的“繪圖工具——多線段”繪圖
- CAD夢想畫圖的瀏覽模式與繪圖模式模式繪圖
- CAD夢想畫圖如何進行重畫、繪圖模式繪圖模式
- CAD夢想畫圖如何自定義座標系統
- 麒麟linux +達夢資料庫遠端圖形介面如何呼叫Linux資料庫
- 如何修改CAD夢想畫圖繪圖視窗的背景顏色繪圖
- 瞭解圖形資料庫資料庫
- CAD列印圖形教程
- “夢想江湖,從新出發”《新夢想世界》正式開啟
- 織夢資料庫_織夢還原資料庫_織夢資料庫很卡資料庫
- CAD新手必練圖形
- Dgraph 1.2.8 釋出,事務性分散式圖形資料庫分散式資料庫
- G002-DM-INS-01 達夢資料庫 DM 8 圖形化安裝資料庫
- CAD夢想畫圖的命令輸入、結束、重複與撤銷
- 主流開源分散式圖資料庫 Benchmark分散式資料庫
- CAD有趣圖形的繪製
- 達夢透明分散式資料庫介紹分散式資料庫
- 分散式資料庫強勢崛起,達夢資料庫如何破局?分散式資料庫
- 織夢怎麼進資料庫,織夢網站原始碼在哪裡看資料庫資料庫網站原始碼