額,慢慢學(xué)吧。不過學(xué)CAD的二次開發(fā),建議還是起點(diǎn)高些好。一般有幾種模式二次開發(fā):
成都創(chuàng)新互聯(lián)公司主營扶綏網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā),扶綏h5微信小程序定制開發(fā)搭建,扶綏網(wǎng)站營銷推廣歡迎扶綏等地區(qū)企業(yè)咨詢
1,autolisp,你學(xué)VB的,這個就免了把。
2,利用cad里面的vba,這個好像比較適合你。
3,跨平臺開發(fā),利用.NET二次開發(fā),比較酷斃的那種,com托管,大型計(jì)算方面慢。
4,objectarx,這個語言可以對cad進(jìn)行深層次的開發(fā)。比如添加命令等,而且運(yùn)行速度快。用VB.NET就可以采用這種模式進(jìn)行開發(fā)。
建議你直接從objectarx入手,專心2個月就OK了。
按照常理說一句哈: 找CAD的API。然后在你的程序里寫語句,調(diào)用這個API。關(guān)鍵是找到可以操作CAD的圖層的API。歐特克提供了這個嗎?
你去查查書吧,書上挺詳細(xì)的,在這說不好說,你先在項(xiàng)目里引用。然后 Dim acadapp As AcadApplication Dim acaddoc As AcadDocument On Error Resume Next AcadApp = GetObject(, "AutoCAD.Application") If Err.Number Then Err.Clear() AcadApp = CreateObject("AutoCAD.Application") If Err.Number Then MsgBox("不能運(yùn)行AutoCAD,請檢查是否安裝了AutoCAD") Exit Sub End If End If AcadApp.Visible = True '界面可視
Dim?ppr?As?PromptPointResult?=?ed.GetPoint("請選擇插入點(diǎn):")
Dim?pt?As?Point3d?=?ppr.Value
utility.WriteToEditor(pt.ToString())
Dim?pidBlock?As?New?PIDBlock()
'自己定義的圖塊類,保存圖塊的路徑和名稱?
pidBlock.Name?=?"sample"
pidBlock.Path?=?blockPath??"b_sample.dwg"
Using?blkDb?As?New?Database(False,?True)
'read?drawing?
blkDb.ReadDwgFile(pidBlock.Path,?System.IO.FileShare.Read,?True,?Nothing)
blkDb.CloseInput(True)
Using?docLock?As?DocumentLock?=?doc.LockDocument()
'多文檔要先這樣,否則報(bào)至命錯誤?
Using?t?As?Transaction?=?doc.TransactionManager.StartTransaction()
'insert?it?as?a?new?block?
Dim?idBTR?As?ObjectId?=?doc.Database.Insert(pidBlock.Name,?blkDb,?False)
'create?a?ref?to?the?block?
Dim?bt?As?BlockTable?=?DirectCast(t.GetObject(doc.Database.BlockTableId,?OpenMode.ForRead),?BlockTable)
Dim?btr?As?BlockTableRecord?=?DirectCast(t.GetObject(bt(BlockTableRecord.ModelSpace),?OpenMode.ForWrite),?BlockTableRecord)
Using?bref?As?New?BlockReference(pt,?idBTR)
btr.AppendEntity(bref)
t.AddNewlyCreatedDBObject(bref,?True)
End?Using
t.Commit()
End?Using
End?Using
End?Using