乐筑天下

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

看见有人发示坡线程序,随手写一个

[复制链接]

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2015-5-17 00:49:00 | 显示全部楼层 |阅读模式

xe1vmisgqqn.gif

xe1vmisgqqn.gif


  1.     AppActivate objCad.Caption
  2.     Dim objPl1 As AcadLWPolyline, objPl2 As AcadLWPolyline, pt1 As Variant, blnESC As Boolean
  3.     SelectSinglePLine objPl1, pt1, blnESC
  4.     If blnESC Then Exit Sub
  5.     SelectSinglePLine objPl2, pt1, blnESC
  6.     If blnESC Then Exit Sub
  7.     Dim dbl1 As Double, myPt1, myPt2, myPt3(2) As Double, i As Long
  8.     dbl1 = ThisDrawing.Utility.GetReal("请输入示坡线间距:")
  9.     Dim objCurve1 As New Curve, objCurve2 As New Curve
  10.     Dim objL As AcadLine
  11.     Set objCurve1.Entity = objPl1
  12.     Set objCurve2.Entity = objPl2
  13.     Do While i * dbl1
  14. dwyyhrd0yav.gif

    dwyyhrd0yav.gif
  15. [code]Private Sub Command23_Click()
  16.     AppActivate objCad.Caption
  17.     Dim objPl1 As AcadLWPolyline, objPl2 As AcadLWPolyline, pt1 As Variant, blnESC As Boolean
  18.     SelectSinglePLine objPl1, pt1, blnESC
  19.     If blnESC Then Exit Sub
  20.     On Error GoTo err1
  21.     Dim dbl1 As Double, myPt1, myPt2, myPt3, dblA As Double, i As Long
  22.     dbl1 = 3
  23.     dbl1 = ThisDrawing.Utility.GetReal("请输入示坡线间距:")
  24.     Dim objCurve1 As New Curve
  25.     Dim objL As AcadLine
  26.     Set objCurve1.Entity = objPl1
  27.     Dim DrtPt(2) As Double, ScdPt(2) As Double, FstPt(2) As Double, tmppt As Variant, lngDrt As Long
  28.     tmppt = ThisDrawing.Utility.GetPoint(objCurve1.StartPoint, "请指定示坡方向:")
  29.     DrtPt(0) = tmppt(0)
  30.     DrtPt(1) = tmppt(1)
  31.     DrtPt(2) = tmppt(2)
  32.     tmppt = objCurve1.GetClosestPointTo(DrtPt)
  33.     If Abs(tmppt(0) - DrtPt(0)) < EPS And Abs(tmppt(1) - DrtPt(1)) < EPS And Abs(tmppt(1) - DrtPt(1)) < EPS Then
  34.         MsgBox "请不要用曲线上的点指定方向!", vbInformation + vbOKOnly, App.Title
  35.         Exit Sub
  36.     End If
  37.     ScdPt(0) = objPl1.Coordinate(1)(0)
  38.     ScdPt(1) = objPl1.Coordinate(1)(1)
  39.     ScdPt(2) = 0
  40.     FstPt(0) = objPl1.Coordinate(0)(0)
  41.     FstPt(1) = objPl1.Coordinate(0)(1)
  42.     FstPt(2) = 0
  43.     lngDrt = Cmp_PolarAngel_arrP(DrtPt, ScdPt, FstPt) '取旋转方向
  44.     Do While i * dbl1 < objCurve1.length
  45.         myPt1 = objCurve1.GetPointAtDistance(i * dbl1)
  46.         myPt2 = objCurve1.GetFirstDerivative(objCurve1.GetParameterAtDistance(i * dbl1))
  47.         myPt2(0) = myPt1(0) + myPt2(0)
  48.         myPt2(1) = myPt1(1) + myPt2(1)
  49.         dblA = ThisDrawing.Utility.AngleFromXAxis(myPt1, myPt2) + lngDrt * PI / 2
  50.         If i Mod 2 = 1 Then
  51.             myPt3 = ThisDrawing.Utility.PolarPoint(myPt1, dblA, dbl1 / 2)
  52.             Set objL = ThisDrawing.ModelSpace.AddLine(myPt1, myPt3)
  53.         Else
  54.             myPt3 = ThisDrawing.Utility.PolarPoint(myPt1, dblA, dbl1)
  55.             Set objL = ThisDrawing.ModelSpace.AddLine(myPt1, myPt3)
  56.         End If
  57.         i = i + 1
  58.     Loop
  59.     ThisDrawing.Regen acActiveViewport
  60.     Exit Sub
  61. err1:
  62.     Debug.Print Err.Number
  63.     If Err.Number = -2145320928 Then
  64.         Err.Clear
  65.         Resume Next
  66.     End If
  67. End Sub
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2015-5-17 23:04:00 | 显示全部楼层
好东西 拿下了
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2015-5-25 15:16:00 | 显示全部楼层
好东西 拿下了
回复

使用道具 举报

0

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
4
发表于 2018-1-13 10:01:00 | 显示全部楼层
好东西 拿下了
回复

使用道具 举报

0

主题

11

帖子

5

银币

初来乍到

Rank: 1

铜币
11
发表于 2019-4-23 12:44:00 | 显示全部楼层
好东西 拿下了
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2024-11-22 00:50 , Processed in 0.146230 second(s), 65 queries .

© 2020-2024 乐筑天下

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