明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2285|回复: 8

[求助]哪位高手知道VBA判断pl线是逆时针还是顺时针绘制的?

[复制链接]
发表于 2010-5-29 15:29:00 | 显示全部楼层 |阅读模式
[求助]哪位高手知道VBA怎样判断pl线是逆时针还是顺时针绘制的?lisp代码本站已有,但是本人不太了解LISP语言。有VBA代码的更好。谢谢!!
发表于 2010-6-1 14:36:00 | 显示全部楼层

凸度

发表于 2010-6-2 20:50:00 | 显示全部楼层

这么多天还没有人接招,这不太好。

我提示一下:

多段线向两侧偏移后,多段线的面积会有变化。

逆时针和顺时针多段线会产生不同的结果。

 楼主| 发表于 2010-6-3 13:31:00 | 显示全部楼层

首先感谢MCCAD的提示。本人在程序很想使用“判断线的绘制顺序”函数,苦于没有好的思路所有另辟新的思路与算法,问题已经得到了解决,谢谢大家。

 

“凸度”肯定不能解决此类问题的。MCCAD的算法可以的,但是本人真的没有编写程序测试。谢谢各位。此问题到此结束啦!

 楼主| 发表于 2010-6-3 15:01:00 | 显示全部楼层

对了,还要麻烦明总,如果是两个点的pline线怎没办?使用偏移好像不能够准确的判断了

 

发表于 2010-6-3 15:22:00 | 显示全部楼层
两个点怎么分顺和逆呢?如果两个点,那就要结合凸度,但如果是直线段的话,就没有方向可言了。
 楼主| 发表于 2010-6-3 16:04:00 | 显示全部楼层

可以的,可以根据绘制的方向来判断(认为)逆时针还是顺时针,即x1-x0,如果大于等0认为是顺时针,反之逆时针。

 

再请教明总:

怎样获得pline的每一段SetBulge值呢?

下面的代码提示“参数不可选”错误,谢谢赐教。

 

Sub Example_SetBulge2()
    ' This example creates a light weight polyline in model space.
    ' It then finds and changes the bulge for a given segment.
   
    Dim plineObj As AcadLWPolyline
    Dim points(0 To 11) As Double
    Dim currentBulge As Double
    Dim i As Long
    ' Define the 2D polyline points
    points(0) = 1: points(1) = 1
    points(2) = 1: points(3) = 2
    points(4) = 2: points(5) = 2
    points(6) = 3: points(7) = 2
    points(8) = 4: points(9) = 4
    points(10) = 4: points(11) = 1
       
    ' Create a light weight Polyline object in model space
    Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
   ZoomAll
    'MsgBox plineObj.SetBulge(0)

    For i = 0 To 5
    
     s = s + "plineObj.SetBulge(" + Str(i) + ")=" & plineObj.SetBulge(i) & vbCrLf
    Next i
    MsgBox s
   
End Sub

 

发表于 2010-6-3 18:20:00 | 显示全部楼层
应该是GetBulge吧
发表于 2010-6-3 23:38:00 | 显示全部楼层
算面积正负
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 22:31 , Processed in 0.198155 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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