如何在VBA中找到可用于语法的选项

问题描述 投票:4回答:1

我不确定标题的适当术语。如果我的标题不好,请建议编辑

SITUATION

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

PROBLEM

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

此外,我发现在执行此操作时,某些值不是典型值,而是非常特殊的术语。即。 acAbove,acHorzCentered?我应该在哪里寻找潜在价值观?经过一个小时左右的搜索,我偶然发现this site给了我箭头头的潜在价值,但我希望有一个比谷歌+猜测搜索术语+点击随机结果更直接的方式。

WHAT I HAVE TRIED SO FAR

GOOGLE搜索wazoo以获取链接

Horizontal Options (useful results but random discovery)

Creating Dimensions (not what I was looking for)

我目前的代码:

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

SUMMARY

如何找到我可以使用Dimstyle(aka AcadDymStyle)的所有维度选项的综合列表,例如:

.Color
.ExtensionLineExtend
.Arrowhead1Type

你如何找到一个全面的列表,列出他们可以相等的价值

.VerticalTextPosition = acAbove
.VerticalTextPosition = acBelow

现在在我的具体例子中它是autocad,但我认为这是非常通用的,因为我在Excel中为类似的东西击败了我的头,并最终找到一些随机的代码,恰好使用该术语正在寻找。因此,虽然autoCAD特定的答案将帮助我这个具体案例。我也在寻找一般情况,当我处理Excel的东西时,也希望能避免一些瘀伤。

Update

所以我在ObjectBrowser(F2)中四处寻找。我可以在Classes下找到AcadDimStyle,我可以看到相邻窗口中的一堆成员,我假设是在“。”后可以使用的东西。这似乎是一个很好的起点。我在这个问题中作为一个例子,令我困惑的部分是,并非所有在“。”之后使用的东西。正在列表中显示。

ObjectBrowser

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

.Color
.ExtensionLineExtend
.Arrowhead1Type

我错过了什么吗?

vba excel-vba autocad autocad-plugin
1个回答
2
投票

尺寸AutoCAD中的样式有点特殊。

而其他符号表记录对象(例如Text Style object)具有与它们所代表的AutoCAD元素相关的ActiveX属性和方法(例如,Text Style object具有fontfileheightobliqueangle属性),而Dimension Style object仅具有所需的最小属性数量对于符号表记录:对父对象的引用,唯一标识符(句柄/对象ID)和名称。

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

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

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

_$ (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访问。

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

TL; DR

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

  1. 临时创建一个尺寸对象,相应地配置properties,然后使用CopyFrom方法将这些属性复制到新的尺寸样式。
  2. 相应地设置各种Dimension Style系统变量的值(使用AutoCAD SetVariable对象的Document方法),然后将CopyFrom方法与AutoCAD Document对象一起用作SourceObject参数,以便将这些属性复制到新的Dimension Style。
  3. 在单独的模板图形中配置尺寸样式,并通过ObjectDBX界面使用CopyObjects方法将尺寸样式导入到目标图形中。我在我的Steal from Drawing应用程序中演示了这个方法 - 这个应用程序的代码是AutoLISP,但可以很容易地移植到VBA。
© www.soinside.com 2019 - 2024. All rights reserved.