乐筑天下

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

[编程交流] VBA-创建标注样式

[复制链接]

3

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 15:52:11 | 显示全部楼层 |阅读模式
你好
 
我正在尝试使用VBA Excel创建标注样式。我有一个简单的代码如下:
 
  1. Option Explicit
  2. Sub New_Layer()
  3. Dim acadApp As AcadApplication
  4. Dim acadDoc As AcadDocument
  5. Dim mSp As AcadModelSpace
  6. Dim dimstyle As AcadDimStyle
  7. Dim sDim As AcadDimAligned
  8. Dim point1(0 To 2) As Double
  9. Dim point2(0 To 2) As Double
  10. Dim location(0 To 2) As Double
  11. 'Check if AutoCAD is open.
  12. On Error Resume Next
  13. Set acadApp = GetObject(, "AutoCAD.Application")
  14. On Error GoTo 0
  15. 'If AutoCAD is not opened create a new instance and make it visible.
  16. If acadApp Is Nothing Then
  17. Set acadApp = New AcadApplication
  18. acadApp.Visible = True
  19. End If
  20. 'Check if there is an active drawing.
  21. On Error Resume Next
  22. Set acadDoc = acadApp.ActiveDocument
  23. On Error GoTo 0
  24. 'No active drawing found. Create a new one.
  25. If acadDoc Is Nothing Then
  26. Set acadDoc = acadApp.Documents.Add
  27. acadApp.Visible = True
  28. End If
  29. Set mSp = acadDoc.ModelSpace
  30. 'Dimension points
  31. point1(0) = 0#: point1(1) = 5#: point1(2) = 0#
  32. point2(0) = 6.1: point2(1) = 5: point2(2) = 0#
  33. location(0) = 5#: location(1) = 4.4: location(2) = 0#
  34. 'Add dimension
  35. Set sDim = acadDoc.ModelSpace.AddDimAligned(point1, point2, location)
  36. 'Set dimension properties
  37. sDim.Color = acByLayer
  38. sDim.ExtensionLineExtend = 0
  39. sDim.Arrowhead1Type = acArrowOblique
  40. sDim.Arrowhead2Type = acArrowOblique
  41. sDim.ArrowheadSize = 0.1
  42. sDim.TextColor = acGreen
  43. sDim.TextHeight = 0.2
  44. sDim.UnitsFormat = acDimLDecimal
  45. sDim.PrimaryUnitsPrecision = acDimPrecisionOne
  46. sDim.TextGap = 0.1
  47. sDim.LinearScaleFactor = 100
  48. sDim.ExtensionLineOffset = 0.1
  49. sDim.VerticalTextPosition = acOutside
  50. 'Create a new dimension style
  51. Set dimstyle = acadDoc.DimStyles.Add("D100")
  52. 'Copy dimension properties from previously added dimension
  53. dimstyle.CopyFrom (sDim)
  54. 'Delete dimension
  55. sDim.Delete
  56. End Sub

 
然而
  1. dimstyle.CopyFrom (sDim)
线路不工作。我遇到以下错误:“对象不支持此属性或方法”
 
我找不到我做错了什么。我正在使用AutoCAD 2013和Excel 2016。
 
非常感谢。
回复

使用道具 举报

3

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 16:31:43 | 显示全部楼层
使用dimstyle。从sDim复制,而不是dimstyle。CopyFrom(sDim)解决了我的问题。这很容易。很抱歉发布此消息。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:41:02 | 显示全部楼层
有趣的代码-它显示了创建维度样式的完全activex方法。
在创建新的dim样式之前,我只熟悉预先设置某些系统变量和命令调用。
因此,这种方法将被复制到您的代码中:(vla SetVariable acaddoc…)将被使用。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:08:38 | 显示全部楼层
有趣的是,当谷歌搜索同一个任务时,可以看到lisp v的VBA,Grr Setvariable是VBA中支持的方法。
 
还记得看到一个entmake,其中包含某个地方描述的每个变量。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 21:29 , Processed in 0.365578 second(s), 60 queries .

© 2020-2025 乐筑天下

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