【问题标题】:XDATA on a Programmatically Created DXF File以编程方式创建的 DXF 文件上的 XDATA
【发布时间】:2019-05-05 17:02:35
【问题描述】:

我有一个小型 vb.net 应用程序,它可以从头开始创建 DXF 文件,其中包含折线和一些文本对象。它正在按预期工作并且目前正在使用我在网上找到的一些“最低 dxf 要求”信息。

作为应用程序的升级,我决定在折线上添加一些 xdata,这就是我遇到问题的地方。

我在实体部分的折线定义中添加了以下几行:

1001
MYAPPID01
1002
{
1000
-Some string I want to associate with the polyline-
1002
}

并且还为appid创建了一个table section,如下:

0
SECTION
2
TABLES
0
TABLE
2
APPID
2
MYAPPID01
70
0
0
ENDTAB
0
ENDSEC

我还在 acaddoc lsp 文件中添加了一个自动加载过程来注册应用程序:

(if (not (tblsearch "APPID" "MYAPPID01"))   
  (regapp "MYAPPID01")
)

我的 dxf 文件没有加载并给出“无效的应用程序”错误。我必须怎么做才能将这个 xdata 添加到我的正常 dxf 例程中?

任何有关 APPID 及其注册的帮助都会很棒。 提前谢谢大家。

【问题讨论】:

    标签: dxf autolisp


    【解决方案1】:

    缺少的是表类型定义标记(2APPID)之后的最大表计数标记(70count),以下表条目以(0、@987654330 @) 标签。 (DXF R12 解决方案)

      0
    SECTION         <<< start table section
      0
    TABLE           <<< start table
      2             <<< group code 2 for
    APPID           <<< table type definition
     70
    10              <<< max table entry count
      0             <<< group code 0 for
    APPID           <<< 1. table entry
      2
    ACAD            <<< application name
     70
    0               <<< flags, 0 is good
      0
    APPID           <<< 2. table entry
      2
    MYAPPID01       <<< application name
     70
    0               <<< flags
    
    ... and so on
    
      0
    ENDTAB
      0
    ENDSEC
    

    您可以找到更多信息here(适用于 DXF R13 及更高版本):

    【讨论】:

    • 顺便说一句,我还有一个小问题,但我不想为它创建一个完整的另一个帖子。现在我在我的 ASCII 格式的 .dxf 文件中添加了带有一些特殊字符的字符串,它们被替换为“?”。我可以为 .dxf 使用其他格式选项吗?还是应该在写入文件本身之前替换我的应用程序中的这些字符?
    • DXF R12 的默认编码是 ANSI_1252,设置标头 var $DWGCODEPAGE 以使用另一种编码(参见 ezdxf.mozman.at/docs/dxfinternals/fileencoding.html)或使用 unicode 编码 'U+nnnn' 参见之前的链接(包括 unicode 表的链接)
    猜你喜欢
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2011-01-18
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多