网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月10日漏签0天
coreldrawvba吧 关注:146贴子:338
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 2回复贴,共1页
<<返回coreldrawvba吧
>0< 加载中...

不正十二等边形画法(精度可调)

  • 只看楼主
  • 收藏

  • 回复
  • 抽象原理
  • 中级粉丝
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

Dim a, b, c, d As Double
Dim P0x, P0y, P1x, P1y, P2x, P2y, P3x, P3y As DoublePrivate
Sub cmd_3_Click() ActiveDocument.Unit = cdrMillimeter '设定文件单位为毫米
a = txt_a.Value
b = txt_b.Value
If a < b Then
b = txt_a.Value
a = txt_b.Value
End If ' 取值(a>b)
c = txt_c.Value '
Set s0 = ActiveLayer.CreateEllipse2(0, 0, a, b) '画个圆
Set s1 = ActiveLayer.CreateEllipse2(0, 0, a, b, 180#, 270#) '画个半圆
Set s2 = ActiveLayer.CreateLineSegment(0, 0, -b, b)
ActiveDocument.AddToSelection s1, s2
Set ss1 = ActiveSelectionRange
Set ss1 = ss1.ConvertOutlineToObject
Set ss1 = ss1(1).Intersect(ss1(2), True, True)
s1.Delete
s2.Delete
P0x = ss1.CenterX
P0y = ss1.CenterY
ss1.Delete
Rem 找到第初始点(P0x, P0y)redofist:
Set sone = ActiveLayer.CreateLineSegment(-a, 0, P0x, P0y) ' 第一根测试线
Set s1 = ActiveLayer.CreateEllipse2(0, 0, a, b, 180#, 270#) '画个半圆
Set s2 = sone.Duplicate
s2.Rotate 90#
ActiveDocument.AddToSelection s1, s2
Set ss1 = ActiveSelectionRange
Set ss1 = ss1.ConvertOutlineToObject
Set ss1 = ss1(1).Intersect(ss1(2), True, True)
s1.Delete
s2.Delete
P1x = ss1.CenterX
P1y = ss1.CenterY
ss1.Delete
Rem 找到第一个点(P1x, P1y)
Set stwo = ActiveLayer.CreateLineSegment(0, b, P1x, P1y) ' 第2根测试线
Set s1 = ActiveLayer.CreateEllipse2(0, 0, a, b, 180#, 270#) '画个半圆
Set s2 = stwo.Duplicate s2.Rotate 90#
ActiveDocument.AddToSelection s1, s2
Set ss1 = ActiveSelectionRange
Set ss1 = ss1.ConvertOutlineToObject
Set ss1 = ss1(1).Intersect(ss1(2), True, True)
s1.Delete
s2.Delete
P2x = ss1.CenterX
P2y = ss1.CenterY
ss1.Delete
Rem 找到第2个点(P2x, P2y)
If Abs(P2x - P0x) > c Or Abs(P2y - P0y) > c Then
sone.Delete
stwo.Delete
P0x = P2x
P0y = P2y
GoTo redofist '转上去,重画第一根线
Else
sone.Delete
stwo.Delete
Set line1 = ActiveLayer.CreateLineSegment(0, b, P2x, P2y)
Set line2 = ActiveLayer.CreateLineSegment(P2x, P2y, P1x, P1y)
Set line3 = ActiveLayer.CreateLineSegment(P1x, P1y, -a, 0)
End If
End Sub
Function drawline1(sone As Shape) As Double
Set sone = ActiveLayer.CreateLineSegment(-a, 0, P0x, P0y) ' 第一根测试线
Set s1 = ActiveLayer.CreateEllipse2(0, 0, a, b, 180#, 270#) '画个半圆
Set s2 = sone.Duplicate s2.Rotate 90#
ActiveDocument.AddToSelection s1, s2
Set ss1 = ActiveSelectionRange
Set ss1 = ss1.ConvertOutlineToObject
Set ss1 = ss1(1).Intersect(ss1(2), True, True)
s1.Delete
s2.Delete
P1x = ss1.CenterX
P1y = ss1.CenterY
ss1.DeleteEnd Function


  • type3软件
  • 中级粉丝
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
能写个改矢量起始点的代码不


2025-08-10 14:14:49
广告
不感兴趣
开通SVIP免广告
  • lix909
  • 中级粉丝
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
经验证,左右两侧尺寸不是30


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 2回复贴,共1页
<<返回coreldrawvba吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示