乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 27|回复: 1

[VBA]

[复制链接]

4

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
20
发表于 2005-6-5 22:16:00 | 显示全部楼层 |阅读模式
我编有关旋转的程序运行不了,下面是我编的源程序,请高手指点.
Sub addline1()
Dim lineobj As AcadLine
Dim pt1(0 To 2) As Double, pt2(0 To 2) As Double
pt1(0) = 1000: pt1(1) = 1000: pt1(2) = 0
pt2(0) = 1200: pt1(1) = 1000: pt1(2) = 0
Set lineobj = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
End Sub
Sub rotateline()
Dim lineobj As AcadLine
Dim pt1(0 To 2) As Double, pt2(0 To 2) As Double
pt1(0) = 1000: pt1(1) = 1000: pt1(2) = 0
pt2(0) = 1200: pt1(1) = 1000: pt1(2) = 0
Set lineobj = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
ZoomAll
Dim basepoint(0 To 2) As Double
Dim rotationangle As Double
dim angle as double
basepoint(0) = pt1(0): basepoint(1) = pt1(1): basepoint(2) = pt1(2)
rotationangle = ThisDrawing.Utility.GetAngle(, "指定角度")
Angle = Angle *3.1415926/180
tbangle = Round(angle, 2)
rotationangle=tbangle
linobj.Rotate basepoint, rotationangle
lineobj.Update
End Sub
回复

使用道具 举报

26

主题

177

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
281
发表于 2005-6-5 22:50:00 | 显示全部楼层
第一个 pt2(0) = 1200: pt1(1) = 1000: pt1(2) = 0
看楼主的意思应该是
pt2(0) = 1200: pt2(1) = 1000: pt2(2) = 0
还有这个
rotationangle = ThisDrawing.Utility.GetAngle(, "指定角度")
angle = angle * 3.1415926 / 180
tbangle = Round(angle, 2)
rotationangle = tbangle
后面三句删除。
getangle出来的是弧度,不需要转换了。
而且转换的也不对
还有
linobj.Rotate basepoint, rotationangle
应为
lineobj.Rotate basepoint, rotationangle
改正后可以运行
Sub rotateline()
Dim lineobj As AcadLine
Dim pt1(0 To 2) As Double, pt2(0 To 2) As Double
pt1(0) = 1000: pt1(1) = 1000: pt1(2) = 0
pt2(0) = 1200: pt2(1) = 1000: pt2(2) = 0
Set lineobj = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
ZoomAll
Dim basepoint(0 To 2) As Double
Dim rotationangle As Double
Dim angle As Double
basepoint(0) = pt1(0): basepoint(1) = pt1(1): basepoint(2) = pt1(2)
rotationangle = ThisDrawing.Utility.GetAngle(, "指定角度")
'angle = angle * 3.1415926 / 180
'tbangle = Round(angle, 2)
'rotationangle = tbangle
lineobj.Rotate basepoint, rotationangle
lineobj.Update
End Sub
建议,变量定义中应有大写字母,输入时只用小写输入,程序会自动把相应字母变成大写,这样可以知道变量是否输入错误,如lineobj最好定义成lineObj
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-5 13:15 , Processed in 0.332124 second(s), 57 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表