乐筑天下

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

偏移线中点

[复制链接]

12

主题

29

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
77
发表于 2019-1-15 10:16:21 | 显示全部楼层 |阅读模式
您好,我想通过代码(在我的代码行Obj2中)获得由偏移创建的直线中点的坐标:
  1.     Dim lineObj2 As Variant
  2.                 lineObj2 = lineObj.Offset(2 * Round(lineObj.Length, 2))

我该怎么做
请给我提个建议。
回复

使用道具 举报

12

主题

29

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
77
发表于 2019-1-15 11:46:44 | 显示全部楼层
您好,我可以使用以下代码解决这个问题:
  1.     Dim lineObj2 As Variant, lineObj3 As AcadLine
  2.      lineObj2 = lineObj.Offset(2 * Round(lineObj.Length, 2))
  3.       
  4.    Dim ent As AcadEntity
  5.        Set ent = ThisDrawing.ModelSpace(ThisDrawing.ModelSpace.Count - 1)
  6.              If ent.ObjectName = "AcDbLine" Then
  7.                     Set lineObj3 = ent
  8.                     ent.Highlight True
  9.                        Dim AA As Variant
  10.                        Dim BB As Variant
  11.                        Dim CC As Variant
  12.                           AA = lineObj3.startPoint
  13.                           BB = lineObj3.endPoint
  14.                           CC(0) = (AA(0) + BB(0)) * 0.5
  15.                           CC(1) = (AA(1) + BB(1)) * 0.5
  16.                           CC(2) = (AA(2) + BB(2)) * 0.5
  17.                           Debug.Print CC(0), CC(1), CC(2)
  18.                    Else
  19.             End If
但是我认为有#039;这是一个更好的方法,如果你有更好的建议,请说。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2019-4-21 19:17:18 | 显示全部楼层
看起来没问题,唯一的其他方法是通过使用角度和线的距离。
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2019-8-14 12:14:43 | 显示全部楼层
您可以使用AcadLine对象而不是变体,并获取其中点:
  1.     Dim lineObj2 As AcadLine
  2.     Set lineObj2 = lineObj.Offset(-2 * Round(lineObj.Length, 2))(0) ' <-- get the first element of then variant spitted out of Offset method and set it to a line object (because you know it really is!)
  3.    
  4.     Dim midPoint2(0 To 2) As Double
  5.     With lineObj2
  6.         midPoint2(0) = (.startPoint(0) + .endPoint(0)) * 0.5
  7.         midPoint2(1) = (.startPoint(1) + .endPoint(1)) * 0.5
  8.         midPoint2(2) = (.startPoint(2) + .endPoint(2)) * 0.5
  9.     End With
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-7 18:10 , Processed in 0.406177 second(s), 60 queries .

© 2020-2025 乐筑天下

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