乐筑天下

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

框选连接直线

[复制链接]

19

主题

45

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2010-12-13 19:59:00 | 显示全部楼层 |阅读模式
今天刚写的代码,发上来和大家共享一下。
  1. Public Sub LJ()
  2. Dim SsLine As AcadSelectionSet
  3. Dim FilterType(0) As Integer
  4. Dim FilterData(0) As Variant
  5. CertificationSelect "ST"
  6. Set SsLine = ThisDrawing.SelectionSets.Add("ST")
  7. FilterType(0) = 0
  8. FilterData(0) = "LINE"
  9. SsLine.SelectOnScreen FilterType, FilterData
  10. Do While LineJoin(SsLine)
  11. Loop
  12. Set SsLine = Nothing
  13. End Sub
  14. Public Function LineJoin(ByVal SS As AcadSelectionSet) As Boolean
  15. If SS.Count  EndPoint(0) Then
  16. EndPoint(0) = Points(n)
  17. EndPoint(1) = Points(n + 1)
  18. End If
  19. If Points(n) = EndPoint(0) And Points(n + 1) > EndPoint(1) Then
  20. EndPoint(1) = Points(n + 1)
  21. End If
  22. Next
  23. Set LineObjs(0) = ThisDrawing.ModelSpace.AddLine(StartPoint, EndPoint)
  24. LineObjs(0).Layer = SS(i).Layer
  25. SS.AddItems LineObjs
  26. Set DelObjs(0) = SS(i)
  27. Set DelObjs(1) = SS(j)
  28. SS.RemoveItems DelObjs
  29. SS.Update
  30. DelObjs(0).Delete
  31. DelObjs(1).Delete
  32. LineJoin = True
  33. Exit Function
  34. End If
  35. End If
  36. Next
  37. Next
  38. LineJoin = False
  39. End Function

回复

使用道具 举报

19

主题

45

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2010-12-13 20:01:00 | 显示全部楼层

要用到下面两个函数
  1. Public Function SjMj(ByVal P1 As Variant, ByVal P2 As Variant, ByVal P3 As Variant) As Double '求三点的面积
  2. On Error GoTo Err_handle
  3. Dim a As Double
  4. Dim b As Double
  5. Dim c As Double
  6. Dim p As Double
  7. a = Sqr((P1(0) - P2(0)) ^ 2 + (P1(1) - P2(1)) ^ 2)
  8. b = Sqr((P1(0) - P3(0)) ^ 2 + (P1(1) - P3(1)) ^ 2)
  9. c = Sqr((P2(0) - P3(0)) ^ 2 + (P2(1) - P3(1)) ^ 2)
  10. p = (a + b + c) / 2
  11. SjMj = Sqr(p * (p - a) * (p - b) * (p - c))
  12. Exit Function
  13. Err_handle: 'VB的计算误差有时会导致(p - a) * (p - b) * (p - c)出现负数
  14. SjMj = 0
  15. End Function
  16. Public Sub CertificationSelect(ByVal SelectName As String) '存在选择集时删除选择集
  17. Dim Entry As AcadSelectionSet
  18. For Each Entry In ThisDrawing.SelectionSets
  19. If UCase(Entry.Name) = UCase(SelectName) Then
  20. ThisDrawing.SelectionSets.Item(SelectName).Delete
  21. Exit Sub
  22. End If
  23. Next
  24. End Sub

回复

使用道具 举报

8

主题

54

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
86
发表于 2010-12-13 22:10:00 | 显示全部楼层
有啥用处,楼主能否详细说明下
回复

使用道具 举报

19

主题

45

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2010-12-14 13:49:00 | 显示全部楼层
功能简单的 里面有个精度调节的参数 对简化图形有用
框选连接直线

hpfdtsqyajl.gif

hpfdtsqyajl.gif

回复

使用道具 举报

47

主题

545

帖子

21

银币

中流砥柱

Rank: 25

铜币
736
发表于 2010-12-17 10:42:00 | 显示全部楼层
个人比较懒,楼主可不可以直接发个dvb上来?还有,楼主开发过对应的lsp版本吗
回复

使用道具 举报

19

主题

45

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2010-12-17 11:37:00 | 显示全部楼层
对不起 我比你还要懒
回复

使用道具 举报

84

主题

543

帖子

12

银币

中流砥柱

Rank: 25

铜币
886
发表于 2010-12-18 20:06:00 | 显示全部楼层

如果程序能改为NET写那就好了...
回复

使用道具 举报

0

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
3
发表于 2013-10-10 15:46:00 | 显示全部楼层
赞个先
回复

使用道具 举报

0

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2013-10-10 21:52:00 | 显示全部楼层
赞踩踩踩踩踩踩踩踩
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-4-21 02:36 , Processed in 0.272804 second(s), 73 queries .

© 2020-2025 乐筑天下

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