Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.GraphicsInterface
<Assembly: CommandClass(GetType(OverRule_图名.图名_Overule))>
Namespace OverRule_图名
Public Class 图名_Overule
<CommandMethod("TcTuMingStart")> _
Public Sub TcTuMingStart()
Dim NewRule As New TuMing_OverRule()
StartOverRule(RXClass.GetClass(GetType(DBText)), NewRule)
End Sub
<CommandMethod("TcTuMingEnd")> _
Public Sub TcTuMingEnd()
EndOverRule()
End Sub
Public Shared Sub StartOverRule(ByVal CADClass As RXClass, ByVal Rule As Overrule)
Overrule.AddOverrule(CADClass, Rule, False)
Overrule.Overruling = True
End Sub
Public Shared Sub EndOverRule()
Overrule.Overruling = False
End Sub
End Class
Public Class TuMing_OverRule
Inherits DrawableOverrule
Public Overrides Function WorldDraw(ByVal Drawable As Drawable, ByVal WD As WorldDraw) As Boolean
On Error Resume Next
'如果为单行文字,则进行规则重定义
If TypeOf Drawable Is DBText Then
Dim DB As DBText = DirectCast(Drawable, DBText)
If Not DB.Id.IsNull Then
If DB.Layer = "图名" Then '文字在"图名"图层上
Dim H As Double = DB.Height
Dim Xmin As Double = DB.GeometricExtents.MinPoint.X
Dim Xmax As Double = DB.GeometricExtents.MaxPoint.X
Dim Y As Double = DB.GeometricExtents.MinPoint.Y
Dim P1 As Point2d = New Point2d(Xmin, Y - H / 5)
Dim P2 As Point2d = New Point2d(Xmax, Y - H / 5)
Dim PL1 As Autodesk.AutoCAD.DatabaseServices.Polyline = New Autodesk.AutoCAD.DatabaseServices.Polyline
Dim PL2 As Autodesk.AutoCAD.DatabaseServices.Polyline = New Autodesk.AutoCAD.DatabaseServices.Polyline
PL1.AddVertexAt(0, P1, 0, H / 6, H / 6)
PL1.AddVertexAt(1, P2, 0, H / 6, H / 6)
P1 = New Point2d(Xmin, Y - 2 * H / 5)
P2 = New Point2d(Xmax, Y - 2 * H / 5)
PL2.AddVertexAt(0, P1, 0, 0, 0)
PL2.AddVertexAt(1, P2, 0, 0, 0)
PL1.WorldDraw(WD)
PL1.Dispose()
PL2.WorldDraw(WD)
PL2.Dispose()
MyBase.WorldDraw(DB, WD) '这句可以保留原对象
Else
MyBase.WorldDraw(DB, WD)
End If
End If
End If
If Err.Number > 0 Then MsgBox(Err.Description)
Return True
End Function
End Class
End Namespace
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.GraphicsInterface
<Assembly: CommandClass(GetType(OverRule_图名.图名_Overule))>
Namespace OverRule_图名
Public Class 图名_Overule
<CommandMethod("TcTuMingStart")> _
Public Sub TcTuMingStart()
Dim NewRule As New TuMing_OverRule()
StartOverRule(RXClass.GetClass(GetType(DBText)), NewRule)
End Sub
<CommandMethod("TcTuMingEnd")> _
Public Sub TcTuMingEnd()
EndOverRule()
End Sub
Public Shared Sub StartOverRule(ByVal CADClass As RXClass, ByVal Rule As Overrule)
Overrule.AddOverrule(CADClass, Rule, False)
Overrule.Overruling = True
End Sub
Public Shared Sub EndOverRule()
Overrule.Overruling = False
End Sub
End Class
Public Class TuMing_OverRule
Inherits DrawableOverrule
Public Overrides Function WorldDraw(ByVal Drawable As Drawable, ByVal WD As WorldDraw) As Boolean
On Error Resume Next
'如果为单行文字,则进行规则重定义
If TypeOf Drawable Is DBText Then
Dim DB As DBText = DirectCast(Drawable, DBText)
If Not DB.Id.IsNull Then
If DB.Layer = "图名" Then '文字在"图名"图层上
Dim H As Double = DB.Height
Dim Xmin As Double = DB.GeometricExtents.MinPoint.X
Dim Xmax As Double = DB.GeometricExtents.MaxPoint.X
Dim Y As Double = DB.GeometricExtents.MinPoint.Y
Dim P1 As Point2d = New Point2d(Xmin, Y - H / 5)
Dim P2 As Point2d = New Point2d(Xmax, Y - H / 5)
Dim PL1 As Autodesk.AutoCAD.DatabaseServices.Polyline = New Autodesk.AutoCAD.DatabaseServices.Polyline
Dim PL2 As Autodesk.AutoCAD.DatabaseServices.Polyline = New Autodesk.AutoCAD.DatabaseServices.Polyline
PL1.AddVertexAt(0, P1, 0, H / 6, H / 6)
PL1.AddVertexAt(1, P2, 0, H / 6, H / 6)
P1 = New Point2d(Xmin, Y - 2 * H / 5)
P2 = New Point2d(Xmax, Y - 2 * H / 5)
PL2.AddVertexAt(0, P1, 0, 0, 0)
PL2.AddVertexAt(1, P2, 0, 0, 0)
PL1.WorldDraw(WD)
PL1.Dispose()
PL2.WorldDraw(WD)
PL2.Dispose()
MyBase.WorldDraw(DB, WD) '这句可以保留原对象
Else
MyBase.WorldDraw(DB, WD)
End If
End If
End If
If Err.Number > 0 Then MsgBox(Err.Description)
Return True
End Function
End Class
End Namespace
[本日志由 tiancao1001 于 2013-06-01 07:16 PM 编辑]
|
暂时没有评论
发表评论 - 不要忘了输入验证码哦! |