首页 > 解决方案 > 如何在 VBA 中查找可用于语法的选项

问题描述

我不确定标题的适当术语。如果我的标题不好,请提出修改建议

情况

我正在通过 Excel 的 VBA 运行 AutoCAD。作为我编码的一部分,我在 AutoCAD 中对基本尺寸样式进行硬编码。我没有使用 ANNOTATIVE 尺寸样式。我的计划是根据需要复制基本尺寸样式,并根据需要更改比例因子。

问题

我发现了这段代码,它基本上给了我遵循的想法。问题是我想设置每个维度选项。我知道如果我在 AutoCAD 中查看,我可以在手动设置样式或查看尺寸的属性窗口时看到很多不同的选项。它们有很多,这些位置的名称是为了便于阅读,不一定等于它们 VBA 名称的确切语法。我可以去哪里或应该阅读什么来确定“。”之后可以使用哪些名称。?

我还发现在执行此操作时,一些值不是典型值,而是非常特殊的术语。IE。acAbove,acHorzCentered?我应该在哪里查看潜在价值是什么?经过一个小时左右的搜索,我偶然发现了这个网站,它给了我箭头的潜在价值,但我希望有一种比 google+猜测搜索词+点击随机结果更快更直接的方法。

到目前为止我已经尝试过什么

GOOGLE 搜索 wazoo 以获取链接

水平选项(有用的结果,但随机发现)

创建维度(不是我想要的)

我当前的代码:

Dim DimStyle As AcadDimStyle


Set DimStyle = DWGFILE.DimStyles.Add("mm-0001")

With DimStyle
    .Color = acByLayer
    .ExtensionLineExtend = 2
    .Arrowhead1Type = acArrowDefault
    .Arrowhead2Type = acArrowDefault
    .ArrowheadSize = 3
    .TextColor = acWhite
    .TextHeight = 2.5
    .UnitsFormat = asDimLDecimal
    .PrimaryUnitsPrecision = acDimPrecicisionZero
    .TextGap = 2
    .LinearScaleFactor = 1
    .ExtensionLineOffset = 2
    .VerticalTextPosition = acAbove
    .HorizontalTextPosition = acHorzCentered
End With

Set DimStyle = DGWFile.DimStyle.Add("mm-" & Format(DimScale, "0000"))

'todo list
'copy base dimstyle to new name
'change scale factor in new name

概括

您如何找到我可以与 Dimstyle(又名 AcadDymStyle)一起使用的所有尺寸选项的完整列表,例如:

.Color
.ExtensionLineExtend
.Arrowhead1Type

您如何找到它们可以相等的值的完整列表,例如

.VerticalTextPosition = acAbove
.VerticalTextPosition = acBelow

现在在我的具体示例中,它是 autocad,但我认为这是非常通用的,因为我已经在 Excel 中为类似的东西撞到了墙上,最终找到了一些恰好使用该术语正在寻找的随机代码。因此,虽然 AutoCAD 特定的答案将极大地帮助我解决这个特定的情况。我也在寻找一般案例,希望在我处理 Excel 内容时也能避免我的头受伤。

更新

所以我在 ObjectBrowser (F2) 中闲逛。我可以在 Classes 下找到 AcadDimStyle,我可以在相邻的窗口中看到一堆成员,我假设这些成员是我可以在“.”之后使用的东西。Thins 似乎是一个很好的起点。对于我在这个问题中作为示例所举的具体情况,令我感到困惑的部分是,并非所有在“。”之后使用的东西。显示在此列表中。

对象浏览器

从屏幕截图来看,没有证据表明:

.Color
.ExtensionLineExtend
.Arrowhead1Type

我错过了什么吗?

标签: vbaexcelautocadautocad-plugin

解决方案


AutoCAD 中的标注样式有点特殊。

尽管其他符号表记录对象(例如文本样式对象)具有与其所代表的 AutoCAD 元素相关的 ActiveX 属性和方法(例如,文本样式对象具有fontfileheightobliqueangle属性),但尺寸样式对象仅具有最小数量符号表记录所需的属性:对父对象的引用、唯一标识符(句柄/对象 ID)和名称。

相反,尺寸样式的属性存储在DIMSTYLE符号表中的 DXF 数据中,并且,如果尺寸样式处于活动状态,则由一组尺寸样式系统变量(DIMPOSTDIMAPOSTDIMBLKDIMSCALEDIMASZDIMEXO等)保存的值存储在符号表中。 - 您可以通过以下方式使用 AutoCADSETVAR命令获取此类系统变量的完整列表:

Command: SETVAR
Enter variable name or [?]: ?
Enter variable(s) to list <*>: DIM*

现在,您可以DIMSTYLE使用该函数访问 AutoLISP 中符号表记录所保存的 DXF 数据tblsearch,这可能会产生如下关联列表:

_$ (tblsearch "dimstyle" "standard")

(
    (0 . "DIMSTYLE")
    (2 . "Standard")
    (70 . 0)
    (3 . "")
    (4 . "")
    (5 . "ClosedBlank")
    (6 . "")
    (7 . "")
    (40 . 1.0)
    (41 . 1.0)
    (42 . 1.0)
    (43 . 0.0)
    (44 . 0.2)
    (45 . 0.0)
    (46 . 0.0)
    (47 . 0.0)
    (48 . 0.0)
    (140 . 1.0)
    (141 . -1.0)
    (142 . 0.0)
    (143 . 25.4)
    (144 . 1.0)
    (145 . 0.0)
    (146 . 1.0)
    (147 . 1.0)
    (71 . 0)
    (72 . 0)
    (73 . 1)
    (74 . 1)
    (75 . 0)
    (76 . 0)
    (77 . 0)
    (78 . 0)
    (170 . 0)
    (171 . 2)
    (172 . 0)
    (173 . 0)
    (174 . 0)
    (175 . 0)
    (176 . 256)
    (177 . 256)
    (178 . 0)
    (270 . 2)
    (271 . 2)
    (272 . 2)
    (273 . 2)
    (274 . 2)
    (340 . <Entity name: 7ffff703910>)
    (275 . 0)
    (280 . 0)
    (281 . 0)
    (282 . 0)
    (283 . 1)
    (284 . 0)
    (285 . 0)
    (286 . 0)
    (287 . 3)
    (288 . 0)
)

据我所知,这些数据无法通过 VBA 访问。

但是,由于控制维度对象本身外观的各个属性可以覆盖用于创建它们的维度样式,因此此类维度对象具有对应于每个可配置维度样式设置的 ActiveX 属性。可以在此处找到这些属性的参考。

TL;博士

因此,在以编程方式创建和配置新的尺寸样式时,您有三个选项:

  1. 临时创建一个标注对象,相应地配置属性,然后使用该CopyFrom方法将这些属性复制到您的新标注样式中。

  2. 相应地设置各种标注样式系统变量的值(使用SetVariableAutoCADDocument对象的方法),然后使用CopyFromAutoCAD 对象的方法Document作为SourceObject参数,以便将这些属性复制到新的标注样式。

  3. 在单独的模板图形中配置尺寸样式,并CopyObjects通过 ObjectDBX 接口使用该方法将尺寸样式导入目标图形。我在我的Steal from Drawing应用程序中演示了这种方法——这个应用程序的代码是 AutoLISP,但可以很容易地移植到 VBA。


推荐阅读