让草图符号附着到气球

今天在论坛上看到一个帖子,问起如何让草图符号(Sketched Symbol)附着到气球(Balloon)。用户界面是能做的,但API失败。经过一些研究,发现这里有些技巧。
先来看看用户界面怎么做:

首选选择草图符号, 右键菜单里有一项




Inventor会让你选择位置作为引线的端点,在气球附近移动鼠标,你会发现在气球圆圈周上,鼠标会变成一个小十字,而在其它位置还是箭头。这说明有效的位置只是气球的圆周。而用户的API代码使用的是气球圆心位置,于是失败了。另外发现,用户界面操作,先选择气球上的点,接着是草图符号点位置。而API的引线点集合首先需要添加草图符号点位置, 接着是气球上的点。否则也会失败。



image

以下是个简单代码,假定你有一张图纸,已经创建了一个气球和草图符号。拾取它们,然后运行。它取用气球圆半径,从圆心(气球的位置Position)沿着X方向计算出圆周上的一个点。


  Public Sub AttachSymbolToBalloon()

 

        ' 假定打开一张工程图

        Dim oDrawDoc As DrawingDocument

        oDrawDoc = ThisApplication.ActiveDocument

 

        ' 获取当前图纸

        Dim oActiveSheet As Sheet

        oActiveSheet = oDrawDoc.ActiveSheet

 

        ' 假定拾取了气球和草图符号

        Dim oBalloon As Balloon

        oBalloon = oDrawDoc.SelectSet.Item(1)

 

        Dim oSS As SketchedSymbol

        oSS = oDrawDoc.SelectSet.Item(2)

 

        '需要的引线点集合 

        Dim oObjColl As ObjectCollection

        oObjColl = ThisApplication.TransientObjects.CreateObjectCollection()

 

        ' 第一个是草图符号位置点 

        Dim oFirstPt1 As Point2d

        oFirstPt1 = ThisApplication.TransientGeometry.CreatePoint2d(oSS.Position.X, oSS.Position.Y)

 

        '第二个是气球圆周上某点 

        Dim oPtItent As Point2d

        oPtItent = ThisApplication.TransientGeometry.CreatePoint2d( _

        oBalloon.Position.X + oBalloon.Style.BalloonDiameter / 2, _

           oBalloon.Position.Y) 

 

        Dim oBalloonIntent As GeometryIntent

        oBalloonIntent = oActiveSheet.CreateGeometryIntent(oBalloon, oPtItent)

 

        ' 注意添加顺序

        Call oObjColl.Add(oFirstPt1)

        Call oObjColl.Add(oBalloonIntent)

 

        ' 加入引线。

        Call oSS.Leader.AddLeader(oObjColl)

    End Sub



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值