由于工作需要,在項目中遇到一個棘手的問題,如何将(mssql)資料庫中的BLOB檔案轉成cad可見圖形
(可能每個項目需求不一樣,解決方式不同)
- 第一步 . 需要轉換的圖形類型

- 第二步 . 那我們先查詢這個字段
- 第三步 試試将這個寫入一個文本中 看看是那種圖形 (data:image/*;base64) *号 為圖檔格式字尾
1.試試用新學的python 來操作,當然java也可以
(這個連結資料庫,寫入某個字段的内容就貼出來了,畢竟是做python與cad的)
2.生成後的檔案内容
3.不是我們期待的普通圖形,是cad的一些坐标點什麼的,那我們就可以找到坐标點來操作
檢視文本内容後,我們看到的是開頭辨別符T , TEXT , LINE , JZMJ (還有其他的圖形包含 ARC , ARRORW , PL , DIMQJ)還有一部分 就不一一寫了(主要是目前就隻用到幾個常用的開頭辨別符)
轉換一下(在cad指令行中輸入) 可以知道 PL LINE RULEDIM 為直線,有兩個坐标點
如: p1 = (0,0) p2 = (0,10) 就可以生成一條直線
4 . 那麼從上面的内容中可以看到,我們找到坐标點,
如:LINE_宋體_1_120_-1__18_1_0__clBlack_0_0_3_13580_-7520_7280_-7520_0_0_13580_-7520_
p1 = (13580,-7520)
p2 = (7280,-7520)
5 . 找到坐标之後發現一個規律 可以将這一行 截取(“_”),生成數組下标為 [14] ,[15], [16], [17]
- 第四步 打開CAD (任意版本的cad都可以)
使用python來操作autocad,并且将坐标點轉換成cad可見對象
(個人使用的是2017版)
- 第五步 使用python操作CAD
1.首先導入pyautocad庫,并且看看自己python的comtypes是否安裝
2.先插入一條測試線 看看能否成功
from pyautocad import Autocad,APoint
p1 = APoint(10,20)
p2 = APoint(10,80)
acad = Autocad(create_if_not_exists = True)
acad.model.AddLine(p1,p2)
3.提示錯誤:
_ctypes.COMError: (-2147352567, '發生意外。', ('無法擷取 Document 對象', 'AutoCAD', 'C:\\Program Files\\Autodesk\\AutoCAD 2017\\HELP\\OLE_ERR.CHM', -2145320900, None))
4.這個錯誤一般是cad沒有建立一個視窗
5.建立一個畫圖視窗就可以運作上面測試代碼了
6.介紹幾個常用指令:
AddLine(p1,p2)
添加直線
點一,點二
AddText(text,p1,fontSize)
添加文本
文本内容,點一,字型高度
AddArc(center,radius,sDrgress,eDrgress)
添加圓弧
圓心 , 半徑 ,開始弧 , 結束弧
SaveAs(filepath ,1)
儲存目前畫好的圖形
檔案絕對路徑 , 後面預設寫1 不知道原因 (這方面文檔很少,是以不知道怎麼查)
最後,如果有不懂得地方,或者我哪些沒有做好,都可以聯系我,感謝