乐筑天下

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

边框问题

[复制链接]

27

主题

103

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2004-6-17 15:06:00 | 显示全部楼层 |阅读模式
' 绘边框的VBA程序
Public Sub test()
Dim ss As AcadSelectionSet
Dim i As AcadEntity
Dim pEntity(0) As AcadEntity
Set ss = ThisDrawing.ActiveSelectionSet
ss.Select acSelectionSetAll
ss(0).GetBoundingBox pmin, pmax
For Each i In ss
i.GetBoundingBox p1, p2
If p1(0)  pmax(0) Then pmax(0) = p2(0)
If p2(1) > pmax(1) Then pmax(1) = p2(1)
Next i
ThisDrawing.SendCommand "_.RECTANG " & pmin(0) & "," & pmin(1) & vbCr & pmax(0) & "," & pmax(1) & vbCr
把上面程序中的THISDRAWING替换为ACADDOC(在VB中使用)
为什么在Set ss = acaddoc.ActiveSelectionSet时出错"接口出错"
回复

使用道具 举报

27

主题

103

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2004-6-17 15:27:00 | 显示全部楼层
错误信息
        

kmuzuswrkex.bmp

kmuzuswrkex.bmp

回复

使用道具 举报

27

主题

103

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2004-6-17 15:37:00 | 显示全部楼层
可能是选择集的问题,我重新建立一个CAD文件,就可以运行一次.
有谁可以为我加个判断选择集的语句吗?
呵呵
回复

使用道具 举报

5

主题

20

帖子

2

银币

初来乍到

Rank: 1

铜币
40
发表于 2004-6-17 15:40:00 | 显示全部楼层
Dim ssetObj As AcadSelectionSet
For Each ssetObj In ThisDrawing.SelectionSets
                         If ssetObj.Name = "SS" Then
                                                         ssetObj.Clear
                                                         ssetObj.Delete
                                                         Exit For
                         End If
Next ssetObj
Set ssetObj = ThisDrawing.SelectionSets.Add("SS")
回复

使用道具 举报

27

主题

103

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2004-6-17 15:56:00 | 显示全部楼层

      
  1. ' 绘边框的VBA程序
  2. Public Sub test()
  3. Dim ss As AcadSelectionSet
  4. Dim i As AcadEntity
  5. Dim pEntity(0) As AcadEntity
  6. Dim ssetObj As AcadSelectionSet
  7. For Each ssetObj In ThisDrawing.SelectionSets
  8.                          If ssetObj.Name = "SS" Then
  9.                                                          ssetObj.Clear
  10.                                                          ssetObj.Delete
  11.                                                          Exit For
  12.                          End If
  13. Next ssetObj
  14. Set ssetObj = ThisDrawing.SelectionSets.Add("SS")
  15. Set ss = ThisDrawing.ActiveSelectionSet
  16. ss.Select acSelectionSetAll
  17. ss(0).GetBoundingBox pmin, pmax
  18. For Each i In ss
  19. i.GetBoundingBox p1, p2
  20. If p1(0)  pmax(0) Then pmax(0) = p2(0)
  21. If p2(1) > pmax(1) Then pmax(1) = p2(1)
  22. Next i
  23. ThisDrawing.SendCommand "_.RECTANG " & pmin(0) & "," & pmin(1) & vbCr & pmax(0) & "," & pmax(1) & vbCr
  24. Set pEntity(0) = ThisDrawing.ModelSpace(ThisDrawing.ModelSpace.Count - 1)Dim offsetObj As Variant
  25. offsetObj = pEntity(0).Offset(500)
  26. pEntity(0).Delete
  27. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  28. pmax(0) = pmax(0) + 500
  29. pmin(1) = pmin(1) - 500
  30. Dim ucsobj As AcadUCS
  31. Dim origin As Variant
  32. Dim xAxispnt As Variant
  33. Dim yAxispnt As Variant
  34. Dim utilObj As Object
  35. Set utilObj = ThisDrawing.Utility
  36. '定义ucs
  37. utilObj.CreateTypedArray origin, vbDouble, pmax(0), pmin(1), 3
  38. utilObj.CreateTypedArray xAxispnt, vbDouble, pmax(0) + 1, pmin(1), 3
  39. utilObj.CreateTypedArray yAxispnt, vbDouble, pmax(0), pmin(1) + 1, 3
  40. Set ucsobj = ThisDrawing.UserCoordinateSystems.Add(origin, xAxispnt, yAxispnt, "new_ucs")
  41. ThisDrawing.ActiveViewport.UCSIconAtOrigin = True
  42.         ThisDrawing.ActiveViewport.UCSIconOn = True
  43.          ThisDrawing.ActiveUCS = ucsobj
  44. Set pEntity(0) = ThisDrawing.ModelSpace(ThisDrawing.ModelSpace.Count - 1)
  45. Dim offsetObj1 As Variant
  46. offsetObj1 = pEntity(0).Offset(50)
  47. ''''定义块的插入点
  48. Dim blockInspoint(0 To 2) As Double
  49. Dim blockRefobj As AcadBlockReference
  50. blockInspoint(0) = pmax(0)
  51. blockInspoint(1) = pmin(1)
  52. blockInspoint(2) = 3
  53. Set blockRefobj = ThisDrawing.ModelSpace.InsertBlock(inspoint, "F:\我的课题\陶瓷工业梭式窑CAD系统1\窑车标注1.dwg", 1, 1, 1, 0)
还是出现上面的问题.
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-6-17 16:15:00 | 显示全部楼层

Set ss = ThisDrawing.ActiveSelectionSet去掉,后面的ss用ssetObj代替
回复

使用道具 举报

5

主题

20

帖子

2

银币

初来乍到

Rank: 1

铜币
40
发表于 2004-6-17 16:18:00 | 显示全部楼层
ss(1).GetBoundingBox pmin, pmax
当前无选择集,当然会出错!
回复

使用道具 举报

27

主题

103

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2004-6-17 16:23:00 | 显示全部楼层
兄弟 :到底如何做呀.
我的程序是在 画好边框后,在内边框插上标题栏,
只能运行一次扫心了
回复

使用道具 举报

5

主题

20

帖子

2

银币

初来乍到

Rank: 1

铜币
40
发表于 2004-6-17 17:07:00 | 显示全部楼层

......
For Each ssetObj In ThisDrawing.SelectionSets
                         If ssetObj.Name = "SS" Then
                                                         ssetObj.Clear
                                                         ssetObj.Delete
                                                         Exit For
                         End If
Next ssetObj
Set ssetObj = ThisDrawing.SelectionSets.Add("SS")
ssetObj .Select acSelectionSetAll
ssetObj .GetBoundingBox pmin, pmax
For Each i In ssetObj
i.GetBoundingBox p1, p2
......
回复

使用道具 举报

27

主题

103

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2004-6-17 17:48:00 | 显示全部楼层
ssetObj .GetBoundingBox pmin, pmax
必须改为ssetOjb(0)
不知道是什么原因,而且运行中在CAD命令行中出现"命令: 忽略块 窑车标注 的重复定义。"
呵呵这不知道是什么意思
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 21:23 , Processed in 0.423841 second(s), 75 queries .

© 2020-2025 乐筑天下

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