明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1612|回复: 3

[求助]谁有画圆点的vba代码?

[复制链接]
发表于 2004-2-1 09:38:00 | 显示全部楼层 |阅读模式
能实现AutoCAD中的donut命令功能的。


我记得有人在这儿发过一个,但刚才找了很长时间都没有找到。哪位手上有的,帮忙发一次。谢谢。
发表于 2004-2-1 17:29:00 | 显示全部楼层
一种是使用SendCommand发送画圆环的命令,另一种是使用多段线,通过设置它的线宽来代替。
发表于 2004-2-1 20:45:00 | 显示全部楼层
我写了一个:
  1. Sub fg()
  2. '这个小程序可连续画圆点
  3. Dim pt As Variant
  4. Dim r As Double
  5. Dim pl As AcadLWPolyline
  6. Dim ptt(3) As Double
  7. MsgBox ("如要结束输入过程,在提示输入实心点的圆心时按ESC键或Enter键")
  8. On Error GoTo bbb
  9. aaa: pt = ThisDrawing.Utility.GetPoint(, "请输入实心点的圆心:")
  10. r = ThisDrawing.Utility.GetDistance(pt, "请输入实心点的半径:")
  11. ptt(0) = pt(0)
  12. ptt(1) = pt(1) - r / 2
  13. ptt(2) = pt(0)
  14. ptt(3) = pt(1) + r / 2
  15. Set pl = ThisDrawing.ModelSpace.AddLightWeightPolyline(ptt)
  16. pl.Closed = True
  17. pl.SetWidth 0, r, r
  18. pl.SetWidth 1, r, r
  19. pl.SetBulge 0, 1
  20. pl.SetBulge 1, 1
  21. GoTo aaa
  22. bbb:
  23. End Sub
 楼主| 发表于 2004-2-2 08:37:00 | 显示全部楼层
谢谢楼上二位指点,我主要是在程序中用,所以写了个函数
  1.   Function drawDonut(D1 As Double, D2 As Double, Pt1 As Variant) As AcadLWPolyline
  2.    Dim LW As Double
  3.    LW = (D1 - D2) / 2
  4.    Dim lwPlineObj As AcadLWPolyline
  5.    Dim points1(0 To 5) As Double
  6.   
  7.    points1(0) = Pt1(0) - (D1 - LW) / 2
  8.    points1(1) = Pt1(1)
  9.    points1(2) = Pt1(0) + (D1 - LW) / 2
  10.    points1(3) = Pt1(1)
  11.    points1(4) = points1(0)
  12.    points1(5) = points1(1)
  13.    Set lwPlineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points1)
  14.    lwPlineObj.SetBulge 0, 1
  15.    lwPlineObj.SetBulge 1, 1
  16.    lwPlineObj.SetWidth 0, LW, LW
  17.    lwPlineObj.SetWidth 1, LW, LW
  18.    Set drawDonut = lwPlineObj
  19. End Function
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-22 05:14 , Processed in 0.144010 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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