将所选对象定义成块(块定义)
来源:互联网 发布:vue仿豆瓣app源码下载 编辑:程序博客网 时间:2024/04/30 10:26
Imports ZwSoft.ZwCAD.Runtime
Imports ZwSoft.ZwCAD.ApplicationServices
Imports ZwSoft.ZwCAD.DatabaseServices
Imports ZwSoft.ZwCAD.EditorInput
Imports ZwSoft.ZwCAD.Geometry
Public Class ZwcadApps
<CommandMethod("DefineBlock")> _
Public Sub DefineBlock()
Dim ZcDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim ZcDB As Database = ZcDoc.Database
Dim ZcEd As Editor = ZcDoc.Editor
Dim per As PromptSelectionResult = ZcEd.GetSelection()
If per.Status = PromptStatus.OK Then
Using ZcTrans As Transaction = ZcDB.TransactionManager.StartTransaction()
Dim ZcBT As BlockTable = ZcTrans.GetObject(ZcDB.BlockTableId, OpenMode.ForWrite)
Dim pso As New PromptStringOptions(vbLf & "Enter new block name: ")
Dim blkName As String = ""
Do
Dim pr As PromptResult = ZcEd.GetString(pso)
If pr.Status <> PromptStatus.OK Then
Return
End If
Try
SymbolUtilityServices.ValidateSymbolName(pr.StringResult, False)
If ZcBT.Has(pr.StringResult) Then
ZcEd.WriteMessage(vbLf & "A block with this name already exists.")
Else
blkName = pr.StringResult
End If
Catch
ZcEd.WriteMessage(vbLf & "Invalid block name.")
End Try
Loop While blkName = ""
Dim Block_ZcBTR As BlockTableRecord = New BlockTableRecord()
Block_ZcBTR.Name = blkName
Dim btrId As ObjectId = ZcBT.Add(Block_ZcBTR)
ZcTrans.AddNewlyCreatedDBObject(Block_ZcBTR, True)
Dim Ents_SS As SelectionSet = per.Value
For Each objID As ObjectId In Ents_SS.GetObjectIds
Dim Ent As Entity = ZcTrans.GetObject(objID, OpenMode.ForWrite)
Dim SubEnt As Entity = Ent.Clone()
Block_ZcBTR.AppendEntity(SubEnt)
ZcTrans.AddNewlyCreatedDBObject(SubEnt, True)
Ent.Erase()
Next
Dim ZcBTR As BlockTableRecord = DirectCast(ZcTrans.GetObject(ZcBT(BlockTableRecord.ModelSpace), OpenMode.ForWrite), BlockTableRecord)
Dim ZcBR As New BlockReference(Point3d.Origin, btrId)
ZcBTR.AppendEntity(ZcBR)
ZcTrans.AddNewlyCreatedDBObject(ZcBTR, True)
ZcTrans.Commit()
End Using
End If
End Sub
Imports ZwSoft.ZwCAD.ApplicationServices
Imports ZwSoft.ZwCAD.DatabaseServices
Imports ZwSoft.ZwCAD.EditorInput
Imports ZwSoft.ZwCAD.Geometry
Public Class ZwcadApps
<CommandMethod("DefineBlock")> _
Public Sub DefineBlock()
Dim ZcDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim ZcDB As Database = ZcDoc.Database
Dim ZcEd As Editor = ZcDoc.Editor
Dim per As PromptSelectionResult = ZcEd.GetSelection()
If per.Status = PromptStatus.OK Then
Using ZcTrans As Transaction = ZcDB.TransactionManager.StartTransaction()
Dim ZcBT As BlockTable = ZcTrans.GetObject(ZcDB.BlockTableId, OpenMode.ForWrite)
Dim pso As New PromptStringOptions(vbLf & "Enter new block name: ")
Dim blkName As String = ""
Do
Dim pr As PromptResult = ZcEd.GetString(pso)
If pr.Status <> PromptStatus.OK Then
Return
End If
Try
SymbolUtilityServices.ValidateSymbolName(pr.StringResult, False)
If ZcBT.Has(pr.StringResult) Then
ZcEd.WriteMessage(vbLf & "A block with this name already exists.")
Else
blkName = pr.StringResult
End If
Catch
ZcEd.WriteMessage(vbLf & "Invalid block name.")
End Try
Loop While blkName = ""
Dim Block_ZcBTR As BlockTableRecord = New BlockTableRecord()
Block_ZcBTR.Name = blkName
Dim btrId As ObjectId = ZcBT.Add(Block_ZcBTR)
ZcTrans.AddNewlyCreatedDBObject(Block_ZcBTR, True)
Dim Ents_SS As SelectionSet = per.Value
For Each objID As ObjectId In Ents_SS.GetObjectIds
Dim Ent As Entity = ZcTrans.GetObject(objID, OpenMode.ForWrite)
Dim SubEnt As Entity = Ent.Clone()
Block_ZcBTR.AppendEntity(SubEnt)
ZcTrans.AddNewlyCreatedDBObject(SubEnt, True)
Ent.Erase()
Next
Dim ZcBTR As BlockTableRecord = DirectCast(ZcTrans.GetObject(ZcBT(BlockTableRecord.ModelSpace), OpenMode.ForWrite), BlockTableRecord)
Dim ZcBR As New BlockReference(Point3d.Origin, btrId)
ZcBTR.AppendEntity(ZcBR)
ZcTrans.AddNewlyCreatedDBObject(ZcBTR, True)
ZcTrans.Commit()
End Using
End If
End Sub
End Class
执行DefineBlock命令后,会将用户所选择的对象转换成块。
- 将所选对象定义成块(块定义)
- 创建块定义(块表记录)
- 定义对象(变量)
- 定义对象模型(定义表)
- 定义对象
- 热点块的定义
- 将原先非随机对象重新定义随机对象数组
- (zz)定义函数对象
- 类定义(3) 类声明,类定义,类对象
- 如何将xtype: 'selectfield‘放到var定义的对象里
- “块定义”与“块参照”的区别
- js定义数组,定义对象,new对象
- 我所理解的SDN(软件定义的网络)
- 定义
- 定义
- 定义
- 上下文绑定对象之一(定义)
- 引用 javascript定义对象写法(整理)
- 上传图片
- 51单片机空间的存储
- 【C++第一课】---C到C++的升级
- 开学典礼讲话思维导图
- COM编程之IUnknown接口
- 将所选对象定义成块(块定义)
- SOLR 4.4 部署
- java中正则表达式提取字符串中日期实现代码
- 程序启动
- 求阶乘(考虑溢出)
- CodeForces 240E E. Road Repairs 树
- Android 为程序添加桌面快捷方式
- Windows上管理远程Linux VPS/服务器文件工具 - winscp
- 算法导论 4-6