找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 593|回复: 6

[VBA程序]:第一个VBA程序,请指教

[复制链接]
发表于 2004-6-11 11:48:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
初学VBA,试着编写一个绘制螺孔的程序,请版主和各位dx指教:
Sub luokong()
    Dim insertPnt As Variant
    Dim prompt1 As String
    prompt1 = vbCrLf & "输入插入点:"
    insertPnt = ThisDrawing.Utility.GetPoint(, prompt1)
    Dim rad As Double
    prompt1 = vbCrLf & "输入螺纹直径"
    rad = ThisDrawing.Utility.GetReal(prompt1) / 2
    ThisDrawing.ModelSpace.AddCircle insertPnt, rad
    ThisDrawing.ModelSpace.AddArc insertPnt, rad * 0.85, 280 * 3.1415926 / 180, 190 / 180 * 3.1415926
    Dim cntLineStartPnt(2) As Double
    Dim cntLineEndPnt(2) As Double
    cntLineStartPnt(0) = insertPnt(0) - rad - 2
    cntLineStartPnt(1) = insertPnt(1)
    cntLineStartPnt(2) = insertPnt(2)
    cntLineEndPnt(0) = insertPnt(0) + rad + 2
    cntLineEndPnt(1) = insertPnt(1)
    cntLineEndPnt(2) = insertPnt(2)
    ThisDrawing.ModelSpace.AddLine cntLineStartPnt, cntLineEndPnt
    cntLineStartPnt(0) = insertPnt(0)
    cntLineStartPnt(1) = insertPnt(1) - rad - 2
    cntLineEndPnt(0) = insertPnt(0)
    cntLineEndPnt(1) = insertPnt(1) + rad + 2
    ThisDrawing.ModelSpace.AddLine cntLineStartPnt, cntLineEndPnt
    ThisDrawing.Application.ZoomAll
End Sub


有几点不明白之处,请大家指教:
1。在绘图时,如何转换图层?
2。在画中心线时,感觉到有些复杂。还有没有更好的办法?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-6-11 12:14:04 | 显示全部楼层
1、
用直线的Layer属性
Dim pObj As AcadLine
Set pObj = ThisDrawing.ModelSpace.AddLine(cntLineStartPnt, cntLineEndPnt)
pObj.Layer = "01"
2、
用PolarPoint函数
dim p1,p2
p1 = ThisDrawing.Utility.GetPoint
p2 = ThisDrawing.Utility.PolarPoint(p1, 0, 12)
具体含义可以看帮助
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-11 16:05:06 | 显示全部楼层
谢谢,再问一个问题:
VB中的π是怎么表示的,必须用3.1415表示吗?有没有常数或函数?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-11 16:06:41 | 显示全部楼层
pi=Atn(1)*4
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-11 18:03:36 | 显示全部楼层
谢谢lzh741206  版主,修改后程序如下:

Sub luokong()
    Dim pi As Double
    pi = Atn(1) * 4
    Dim insertPnt As Variant
    Dim prompt1 As String
    prompt1 = vbCrLf & "输入插入点:"
    insertPnt = ThisDrawing.Utility.GetPoint(, prompt1)
    Dim rad As Double
    prompt1 = vbCrLf & "输入螺纹直径:"
    rad = ThisDrawing.Utility.GetReal(prompt1) / 2
   
    Dim objCircle As AcadCircle
    Dim objArc As AcadArc
    Set objCircle = ThisDrawing.ModelSpace.AddCircle(insertPnt, rad * 0.85)
    objCircle.Layer = "粗线"
    Set objArc = ThisDrawing.ModelSpace.AddArc _
        (insertPnt, rad, 280 * pi / 180, 190 / 180 * pi)
    objArc.Layer = "细线"
   
    Dim cntLineStartPnt As Variant
    Dim cntLineEndPnt As Variant
    Dim objLine As AcadLine
    cntLineStartPnt = ThisDrawing.Utility.PolarPoint(insertPnt, 0, rad + 2)
    cntLineEndPnt = ThisDrawing.Utility.PolarPoint(insertPnt, 0, 0 - rad - 2)
    Set objLine = ThisDrawing.ModelSpace.AddLine(cntLineStartPnt, cntLineEndPnt)
    objLine.Layer = "中心线"
    cntLineStartPnt = ThisDrawing.Utility.PolarPoint(insertPnt, pi / 2, rad + 2)
    cntLineEndPnt = ThisDrawing.Utility.PolarPoint(insertPnt, pi * 3 / 2, rad + 2)
    Set objLine = ThisDrawing.ModelSpace.AddLine(cntLineStartPnt, cntLineEndPnt)
    objLine.Layer = "中心线"
    ThisDrawing.Application.ZoomAll

End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-11 18:23:20 | 显示全部楼层
我不是太懂,看起来有点像vb,可以告诉我怎么运行吗?详细的讲一下呗,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-11 22:53:55 | 显示全部楼层
to 莫之非
看看置顶的帖子
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-23 23:29 , Processed in 0.376384 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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