明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3026|回复: 4

如何用用VBA绘制带圆弧的多样线

[复制链接]
发表于 2009-2-1 14:27:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-2-1 14:28:20 编辑

在论坛里只找到纯直线的多样线VBA绘制方法,但是不知道带圆弧的要怎么绘制。请大侠们帮帮忙。。。帖个例程给我。

本帖子中包含更多资源

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

x
发表于 2009-2-1 22:13:00 | 显示全部楼层
本帖最后由 作者 于 2009-2-1 22:33:31 编辑

Dim PL As AcadLWPolyline '声明一条优化(二维)多段线
Dim P(7) As Double '声明优化多段线顶点坐标数组
P(0) = 0: P(1) = 0 '第一个顶点坐标(0,0)
P(2) = 10: P(3) = 0 '第二个顶点坐标(10,0)
P(4) = 10: P(5) = 10 '第三个顶点坐标(10,10)
P(6) = (0): P(7) = 10 '第四个顶点坐标(0,10)
Set PL = ThisDrawing.ModelSpace.AddLightWeightPolyline(P) '在模型空间画多段线
PL.SetBulge 1, Tan(ThisDrawing.Utility.AngleToReal(180 / 4, acDegrees)) '把该多段线的第二、三顶点间直线改为圆心角180度的圆弧

上面代码的最后一行使用了优化多段线对象的SetBulge方法,它有两个参数,第一个参数是圆弧起点的顶点索引值(从0开始),这里要把二、三顶点间的线段改为圆弧,所以这个参数用第二个顶点索引也就是1;第二个参数是该圆弧的圆心角的四分之一的正切值,这里用了一个表达式

Tan(ThisDrawing.Utility.AngleToReal(180 / 4, acDegrees))

其中180 / 4是圆弧圆心角(180度)的四分之一,ThisDrawing.Utility.AngleToReal(180 / 4, acDegrees)是用实用工具集Utility的AngleToReal方法把角度制换算为弧度制,Tan() 是正切函数。

因为想画180度圆弧,180度的四分之一是45度,45度的正切值是1,所以这行也可以直接写成

PL.SetBulge 1, 1

第二个参数可以是正的,也可以是负的。它的正负和圆弧相邻两顶点的位置关系共同决定了圆弧的凸起方向,这和在图形界面用起点、端点、角度画圆弧的道理是一样的。

 楼主| 发表于 2009-2-2 12:03:00 | 显示全部楼层
本帖最后由 作者 于 2009-2-3 11:50:34 编辑

 问题又来了,如图中的一个打散的形状。。。非曲样线。。我如何用程序判断 Tan的正与负呢???。。。也就是弧的方向要怎么判断。

再请高手指点一下,我试了很多方法,还是没用。结果生成的曲线还是乱七八糟的。

本帖子中包含更多资源

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

x
发表于 2009-2-4 21:52:00 | 显示全部楼层

我前面说过,这和在图形界面用起点、端点、角度画圆弧的道理是一样的。Tan如果是正的,就从起点到端点逆时针画弧;如果是负的,就顺时针画弧。

 楼主| 发表于 2009-2-7 20:54:00 | 显示全部楼层
本帖最后由 作者 于 2009-2-7 20:56:10 编辑

问题就在于。我如何去判断  这个TAN的正负。。是用程序来判断...而不是我用手工去判断。。

TAN  正负代表不同的方向。我已经知道了。。。。问题就在于我如果去判断原先的图中的圆弧的方向。。。是用程序去判断,而且不是手工。。不是手工。。。。。

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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