VBNET AutoCAD Activex 切换图层为当前图层失效
最近有朋友询问切换图层的代码
com切换图层

1 <CommandMethod("mycl")> 2 Public Sub MySubLayerChange() 3 Dim Thisdrawing As Autodesk.AutoCAD.Interop.AcadDocument = Application.DocumentManager.MdiActiveDocument.AcadDocument 4 Dim curLayer As Autodesk.AutoCAD.Interop.Common.AcadLayer = Thisdrawing.ActiveLayer 5 Dim newLayer As Autodesk.AutoCAD.Interop.Common.AcadLayer 6 For Each la As Autodesk.AutoCAD.Interop.Common.AcadLayer In Thisdrawing.Layers 7 If la.Name = "layer1" Then 8 newLayer = la 9 Thisdrawing.ActiveLayer = newLayer 10 End If 11 Next 12 13 End Sub
示效的话用下面的代码,切换系统变量

1 Public Sub ChangeLayer(ByRef LayerName As String) 2 3 Acadapp.ActiveDocument.SetVariable("Clayer", LayerName) 4 Acadapp.ActiveDocument.SetVariable("CELTYPE", "Bylayer") 5 6 'For Each entry As Object In Acadapp.ActiveDocument.layers 7 ' If entry.name = LayerName Then 8 ' Acadapp.ActiveDocument.Activelayer = entry 9 ' Exit For 10 ' End If 11 'Next entry 12 13 ''改变线型 14 'For Each entry As Object In Acadapp.ActiveDocument.Linetypes 15 ' If entry.name = "Bylayer" Then 16 ' Acadapp.ActiveDocument.ActiveLinetype = entry 17 ' Exit For 18 ' End If 19 'Next 20 21 End Sub 22 '改变标注样式 //20190606 nan sheng modify 23 Public Sub ChangeDimStyles(ByRef Name As String) 24 Acadapp.ActiveDocument.SendCommand("-dimstyle" & vbCr & "r" & vbCr & Name & vbCr) REM "_zoom" & vbCr & "a" & vbCr 25 'ThisDrawing.SendCommand ("-dimstyle" & vbCr & "r" & vbCr & "111" & vbCr) 26 'For Each entry As Object In Acadapp.ActiveDocument.DimStyles 27 ' If entry.name = Name Then 28 ' Acadapp.ActiveDocument.ActiveDimStyle = entry 29 ' Exit For 30 ' End If 31 'Next entry 32 End Sub 33 34 '改变文字样式//20190606 nan sheng modify 35 Public Sub ChangeTextStyles(ByRef Name As String) 36 Acadapp.ActiveDocument.SetVariable("TEXTSTYLE", Name) 37 'For Each entry As Object In Acadapp.ActiveDocument.TextStyles 38 ' If entry.name = Name Then 39 ' Acadapp.ActiveDocument.ActiveTextStyle = entry 40 ' Exit For 41 ' End If 42 'Next entry 43 End Sub
NetApi切换图层

1 <CommandMethod("myclNetApi")> 2 Public Sub MySubLayerChangeNetApi() 3 Dim doc As Document = Application.DocumentManager.MdiActiveDocument 4 Dim db As Database = doc.Database 5 Using trans As Transaction = db.TransactionManager.StartTransaction() 6 Dim lt As LayerTable = trans.GetObject(db.LayerTableId, OpenMode.ForRead) 7 If lt.Has("layer1") Then 8 db.Clayer = lt("layer1") 9 End If 10 trans.Commit() 11 End Using 12 13 End Sub
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具