求曲线等分点或等线段点的坐标

部分关键代码如下:

 '对选定曲线进行等分(总点数)
 Dim clsClip As New dClipBord
 Dim dSet As AcadSelectionSet
 Dim clsSet As New dSelectionSet
 Dim clsEnt As New dEntity
 Dim Ent As AcadEntity '对象
 Dim dCount As Long '段数,运行之后就明确了
 Dim dObj As Object '绘出的新对象
 Dim PointX() As Double, PointY() As Double, PointZ() As Double
 Dim dStr As String '用于存放坐标字串:
   dStr = ""
 Dim dTimes As Long
 Dim TempStr As String
 Dim clsStr As New dString
 Dim F() As Double
  Dim startTan(0 To 2) As Double: startTan(0) = 0: startTan(1) = 0: startTan(2) = 0:
    Dim endTan(0 To 2) As Double: endTan(0) = 0: endTan(1) = 0: endTan(2) = 0
 Dim clsMath As New dMath
 dCount = UserForm1.TextBox5
   clsSet.CreateSelectionCurveSet dSet '选取曲线对象
  If dSet.Count = 0 Then Exit Sub
  For Each Ent In dSet
   dTimes = dTimes + 1
    'dStr = vbCr
    clsEnt.EntItoXYZ Ent, dCount, PointX, PointY, PointZ
    '根据类型作曲线
    Select Case Ent.ObjectName
      Case "AcDb3dPolyline"  '如是三维多线段
       clsMath.P3DtoPoint PointX, PointY, PointZ, F, 0
       clsStr.XYZtoStr PointX, PointY, PointZ, TempStr
        Set dObj = ThisDrawing.ModelSpace.Add3DPoly(F)
      Case "AcDbSpline"      '如果是样条曲线
       clsMath.P3DtoPoint PointX, PointY, PointZ, F, 0
       clsStr.XYZtoStr PointX, PointY, PointZ, TempStr
       Set dObj = ThisDrawing.ModelSpace.AddSpline(F, startTan, endTan)
      Case "AcDb2dPolyline"       '如是二维多线段
         clsMath.P3DtoPoint PointX, PointY, PointZ, F, 0
           Set dObj = ThisDrawing.ModelSpace.AddPolyline(F)
           clsEnt.SetHeight dObj, PointZ(0)
         clsStr.XYtoStr PointX, PointY, TempStr
      Case Else '其余全按多线段进行处理
         clsMath.P2DtoPoint PointX, PointY, F, 0
         Set dObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(F())
         clsEnt.SetHeight dObj, PointZ(0)
         clsStr.XYtoStr PointX, PointY, TempStr
     End Select
     
     clsEnt.EqualFormat Ent, dObj
     Ent.Delete
    
       dStr = dStr + TempStr + vbCr + "" + vbCr
      
  Next Ent
   '去掉最后一个回车符
   dStr = Left(dStr, Len(dStr) - 1)
  clsClip.PutClipBord dStr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值