明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4052|回复: 12

[求助]有将若干直线段合并成二维多义线的方法吗?

  [复制链接]
发表于 2003-10-6 22:36:00 | 显示全部楼层 |阅读模式
绘制一图形,该图形形成是用若干直线段编程(VBA)连接而成,现在想将该图形做成一三维实体,首先要先形成一面域。
问题是直线段数目太多,为能方便构建一面域,想将这些直线段形成一条二维多义线。请高手看看怎样编程?
发表于 2003-10-7 06:46:00 | 显示全部楼层
生成面域 AddRegion 方法 所需要提供的参数是对象数组,这些对象数量没有限制,只要所提供的对象能够形成首尾封闭的图形就行,而且可以形成一个或多个封闭图形。而多少个封闭图形就可以生成多少个面域。所以不必去考虑线段的多少,也不必自己编程去形成封闭图形。

[WEB]http://www.mjtd.com/object/acad2004/idh_addregion.htm[/WEB]
 楼主| 发表于 2003-10-7 16:26:00 | 显示全部楼层

明总说得也是。。。。

明总有空的话帮我看看我自编的这个程序。
   这个程序是我自编的一部分,为使看的清楚,我删掉了许多部分,保留了关键的语句。这个程序是凸轮的自动化设计和模拟等。。。。我想将该凸轮图形形成三维实体,所以提出上面的问题,这个图形是由许多直线段连接而成,由userform1窗体的精度所决定(一周360度,若精度设为0.5度,则直线段有720段),本想变成一二维多义线,好方便做面域。经过明总指点,觉得也可以不做二维多义段。
   问题是这图形绘制出来后在首尾点并没有自我封闭,明总帮我看看这程序里该怎么修改?

图如下:






程序:

本帖子中包含更多资源

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

x
发表于 2003-10-7 18:47:00 | 显示全部楼层
那是因为你第一个循环没有画线,因为第一个循环还没有 firstpt0 的值。所以你必须把第一个点保存起来以做便与最后一个点形成一条直线。
 楼主| 发表于 2003-10-7 19:04:00 | 显示全部楼层

明总能否明示一下程序代码该怎样修改?

本帖最后由 作者 于 2003-10-7 19:57:08 编辑

谢谢

曲线最后一个点怎么去找呢?要想封闭最后一段线段,得要找到最后形成的那个点。
改一下,应该还是明总说得第一个该怎样找的问题?我不知怎么去保存第一点。
 楼主| 发表于 2003-10-7 20:20:00 | 显示全部楼层
For u = 0 To 360 Step incrim
   Call Module1.计算sdsdds
   If k = -1 Then
     ptt = ThisDrawing.Utility.PolarPoint(bp1, pi / 2 + beta0 + cetaC, rouC)
   ElseIf k = 1 Then
     ptt = ThisDrawing.Utility.PolarPoint(bp1, pi / 2 - beta0 - cetaC, rouC)
   End If
   
   If IsArray(firstpt0) Then
      Set objline = ThisDrawing.ModelSpace.AddLine(pt0t, ptt) '实际轮廓线
      objline.Color = acRed
   Else
      firstpt0 = pt0t
   End If
   pt0t = ptt
Next u
也就是在程序最后几句离该怎样保存第一点?然后在next u 后再加一直线段连接ptt与第一点。
发表于 2003-10-7 20:20:00 | 显示全部楼层

      firstpt0 = pt0t
改为
      firstpt0 = ptt

在 Next u后加上:
If IsArray(firstpt0) Then
    Set objline = ThisDrawing.ModelSpace.AddLine(firstpt0, pt0t) '实际轮廓线
    objline.Color = acRed
End If
 楼主| 发表于 2003-10-7 20:23:00 | 显示全部楼层

谢谢明总!!

发表于 2003-10-7 20:25:00 | 显示全部楼层
其实按照你的程序,可以使用动态数组的方法保存顶点,然后通过添加二维多段线的方法来生成封闭边界。
发表于 2003-10-7 20:31:00 | 显示全部楼层
另外,看了你的程序有点乱。
其实编程可以自己写些自定义函数,通过函数来传递参数并返回值,这样的思路会清晰一点。
象你这样一直在使用Call来调用其它过程,而该过程计算些什么就很难看懂了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 15:26 , Processed in 0.213003 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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