明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1619|回复: 3

[求助]直线相交触发事件

[复制链接]
发表于 2003-2-4 02:29 | 显示全部楼层 |阅读模式
您好:
请教一个 vba事件的编写问题。
---------------------------------------
如两条直线相交并有交点 为触发事件
来引发别的程序,应怎么做呢?
---------------------------------------
也就是说,当我画直线时如区域中有直线
相交他们需要以 半圆线隔开(请看图片)
这种用法在电路图中经常用到
---------------------------------------
用vba能不能做
============请您多指点=================
============谢谢!!===================

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2003-2-4 10:22 | 显示全部楼层

你可以通过画线的起点和终点两个点取得选择集,通过选择集中的对象与刚画的线的交点

你可以通过画线的起点和终点两个点取得选择集,通过选择集中的对象与刚画的线的交点...[br]可以做到你所要做的工作。
发表于 2003-2-26 21:09 | 显示全部楼层

可以做到你所要做的工作,给你一段例了。

Dim MyPline As Acad3DPolyline
  
   ' On Error Resume Next

    point1 = ThisDrawing.Utility.GetPoint(, "Enter first point: ")
    point2 = ThisDrawing.Utility.GetPoint(point1, "Enter Other corner: ")
   
    ReDim vpoints(0 To 5) As Double
    vpoints(0) = point1(0)
    vpoints(1) = point1(1)
    vpoints(2) = 0
    vpoints(3) = point2(0)
    vpoints(4) = point2(1)
    vpoints(5) = 0
        
    Set MyPline = ThisDrawing.ModelSpace.Add3DPoly(vpoints)

     Dim sset As AcadSelectionSet     'Define sset as a SelectionSet object
     Dim elem As Acad3DPolyline
     Dim intersectPoint As Variant

   
    'Set sset to a new selection set named SS2 (the name doesn't matter here)
    Set sset = ThisDrawing.SelectionSets.Add("SS2")
    'Call sset.Select(acSelectionSetWindow, point1, point2)
   
       Call sset.Select(acSelectionSetCrossing, point1, point2)

        
    Dim pointObj As AcadPoint
    Dim location(0 To 2) As Double
   
  
  
        
        For I = 1 To sset.count - 1
        If sset.Item(I).ObjectName = "AcDb3dPolyline" Then
        
     
      
        Set elem = sset.Item(I)
        
        vpoints(2) = elem.Coordinates(2)
        vpoints(5) = elem.Coordinates(2)
         MyPline.Coordinates = vpoints
        ' MsgBox vpoints(5), , elem.Coordinates(2)
        
        intersectPoint = MyPline.IntersectWith(elem, acExtendNone)
      
                If VarType(intersectPoint) <> vbEmpty Then

。。。。。。。。此处加入你的程序,OK         
               
              
                End If
        End If
        Next I
   
        Set sset = Nothing
发表于 2003-2-27 10:11 | 显示全部楼层

两个事件,(增加和修改对象)

Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)

End Sub

Private Sub AcadDocument_ObjectModified(ByVal Object As Object)

End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-3 20:54 , Processed in 0.186141 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表