小师傅 发表于 2017-12-25 08:02:14

帮我写个反应器

要求两图元位置互相关联,移动其中一个图元,另一个图元随之移动,删除一个图元,另一个图元随之删除,谢谢

xinxirong 发表于 2017-12-25 22:50:30

不用反应器,直接group命令就行

小师傅 发表于 2017-12-26 07:44:23

xinxirong 发表于 2017-12-25 22:50
不用反应器,直接group命令就行

谢谢,不想用组或块的形式实现,希望学习一下反应器

ljq 发表于 2017-12-31 13:02:46

本帖最后由 ljq 于 2017-12-31 13:04 编辑

1、建立fyq类,代码如下:
'声明ACADent为带事件的acad实体对象
Public WithEvents ent1 As AcadCircle
Public WithEvents ent2 As AcadCircle

'在实体修改事件中增加提示框---显示多段线面积
Private Sub ent1_Modified(ByVal pObject As AutoCAD.IAcadObject)
    On Error Resume Next
    ent2.Center = ent1.Center
    ent2.Radius = ent1.Radius + 30
    If Err.Number = -2145386420 Then ent2.Delete
End Sub
'在实体修改事件中增加提示框---显示多段线面积
Private Sub ent2_Modified(ByVal pObject As AutoCAD.IAcadObject)
    On Error Resume Next
    ent1.Center = ent2.Center
    ent1.Radius = ent2.Radius - 30
    If Err.Number = -2145386420 Then ent1.Delete
End Sub

2、在模块中写代码如下:
Public Y As New fyq
'对象层事件应用
Sub ent_event1()
    Dim cc1 As AcadCircle, cc2 As AcadCircle
    ThisDrawing.Utility.GetEntity cc1, pt, "dsd"
    cc1.color = acRed
    Set Y.ent1 = cc1
    ThisDrawing.Utility.GetEntity cc2, pt, "dsd"
    cc2.color = acGreen
    Set Y.ent2 = cc2
End Sub

3、执行模块中ent_event1宏命令,在图中任选2个圆即可。
页: [1]
查看完整版本: 帮我写个反应器