找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 419|回复: 3

[VBA函数]:请教高手:帮忙解释

[复制链接]
发表于 2004-10-29 09:11:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Example_XData()
    ' 这个例子创建一条直线,并且添加扩展数据
    ' 创建直线
    Dim lineObj As AcadLine
    Dim startPt(0 To 2) As Double, endPt(0 To 2) As Double
    startPt(0) = 1#: startPt(1) = 1#: startPt(2) = 0#
    endPt(0) = 5#: endPt(1) = 5#: endPt(2) = 0#
    Set lineObj = ThisDrawing.ModelSpace.AddLine(startPt, endPt)
    ' 初始化所有的扩展数据。注意第一个值必须是应用程序名称,而它的组码必须是1001。
    Dim DataType(0 To 9) As Integer
    Dim Data(0 To 9) As Variant
    Dim reals3(0 To 2) As Double
    Dim worldPos(0 To 2) As Double
   
    DataType(0) = 1001: Data(0) = "Test_Application"
    DataType(1) = 1000: Data(1) = "This is a test for xdata"
    DataType(2) = 1003: Data(2) = "0"                   ' 层
    DataType(3) = 1040: Data(3) = 1.23479137438413E+40  ' 实数
    DataType(4) = 1041: Data(4) = 1237324938            ' 距离
    DataType(5) = 1070: Data(5) = 32767                 ' 16位整数
    DataType(6) = 1071: Data(6) = 32767                 ' 32位整数
    DataType(7) = 1042: Data(7) = 10                    ' 比例因子
    reals3(0) = -2.95: reals3(1) = 100: reals3(2) = -20
    DataType(8) = 1010: Data(8) = reals3                ' 实数
    worldPos(0) = 4: worldPos(1) = 400.99999999: worldPos(2) = 2.798989
    DataType(9) = 1011: Data(9) = worldPos              ' world space position
    ' 在直线上附着扩展数据
    lineObj.SetXData DataType, Data
对于以上的程序中DataType或Data的值的定义是否有什么规律或要求对于datatype的付值编号的可取数是如何定义的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-10-29 09:19:12 | 显示全部楼层
组码 1001 表示扩展数据的开始。与普通图元数据相比,具有扩展数据的同一组码可以出现多次,而且出现次序很重要。

扩展数据按注册的应用程序名分组。每个注册的应用程序组始于 1001 组码,并将程序名作为字符串值。注册的应用程序名对应于 APPID 符号表条目。

应用程序可以根据需要使用任意多的 APPID 名。APPID 名是固定不变的,但在图形当前不使用 APPID 名的情况下可将其清理掉。每个 APPID 名只能向每个图元附加一个数据组。在应用程序组中,扩展数据组的顺序和含义由应用程序定义。

下表列出了扩展数据组码。 扩展数据组码和说明

图元名
组码
说明

字符串
1000
扩展数据中字符串的最大长度为 255 个字节(第 256 个字节是为空字符保留的)

应用程序名称
1001
也是字符串值
应用程序名的最大长度为 31 个字节(第 32 个字节是为空字符保留的)

注 不要将 1001 组添加到扩展数据中,因为 AutoCAD 假定该组是新应用程序扩展数据组的开始

控制字符串
1002
扩展数据控制字符串可以是“{”或“}”。这两个大括号使应用程序可以通过将数据细分为表来组织数据。左大括号开始一个列表,右大括号结束最近的列表。列表可以嵌套。

AutoCAD 在读取某一特定应用程序的扩展数据时,将检查以确保大括号是成对的

图层名
1003
与扩展数据关联的图层名

二进制数据
1004
二进制数据组织成可变长度的数据块。每个数据块的最大长度为 127 个字节。在 ASCII 格式的 DXF 文件中,二进制数据以十六进制数字字符串的形式表示,每个二进制字节由两个数字字符表示

数据库句柄
1005
图形数据库中的图元句柄

注 使用 INSERT、INSERT *、XREF BIND、XBIND 或 PARTIAL OPEN 将带有句柄和扩展数据句柄的图形输入到另一个图形时,扩展数据句柄将使用其相应图元句柄的转换方式进行转换,从而使两者之间的绑定保持不变。EXPLODE 块操作或任何其他 AutoCAD 操作也是如此。如果 AUDIT 检测出扩展数据句柄与图形文件中的图元句柄不匹配,将认为该扩展数据句柄是错误的。AUDIT 修复图元时,将句柄设置为 0。

3 个实数
1010, 1020, 1030
按 X、Y、Z 次序排列的三个实数值。可将它们用作点或矢量记录。AutoCAD 不会改变它们的值

世界空间位置
1011, 1021, 1031
与简单的三维点不同,世界空间坐标随扩展数据所属的父图元进行移动、缩放、旋转和镜像。对父图元使用 STRETCH 命令并且此点位于选择窗口中时,世界空间位置也会被拉伸。

世界空间位移
1012, 1022, 1032
也是一个随着父图元进行缩放、旋转和镜像(而不是移动或拉伸)的三维点

世界方向
1013, 1023, 1033
也是一个随着父图元旋转和镜像(而不是移动、缩放或拉伸)的三维点

实数
1040
一个实数值

距离
1041
一个随着父图元进行缩放的实数值

比例因子
1042
也是一个随着父图元进行缩放的实数值。距离和缩放因子的差别由应用程序定义

整数
1070
一个 16 位整数(有符号或无符号)

长整数
1071
一个 32 位有符号(长)整数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-29 09:38:54 | 显示全部楼层
扩展数据 (xdata) 由 AutoLISP 或 ObjectARX 应用程序创建。如果某一图元包含扩展数据,则该数据将跟在图元的普通定义数据之后。组码 1000 至 1071 描述了扩展数据。下面是一个包含 DXF 格式扩展数据的图元样例。
普通图元定义数据:
  0
INSERT
  5
F11
100
AcDbEntity
  8
TOP
100
AcDbBlockReference
2
BLOCK_A
10
0.0
20
0.0
30
0.0
扩展图元定义数据:
1001
AME_SOL
1002
{
1070
0
1071
1.95059E+06
1070
519
1010
2.54717
1020
2.122642
1030
2.049201
1005
ECD
1005
EE9
1005
0
1040
0.0
1040
1.0
1000
MILD_STEEL
组码 1001 表示扩展数据的开始。与普通图元数据相比,具有扩展数据的同一组码可以出现多次,而且出现次序很重要。
扩展数据按注册的应用程序名分组。每个注册的应用程序组始于 1001 组码,并将程序名作为字符串值。注册的应用程序名对应于 APPID 符号表条目。
应用程序可以根据需要使用任意多的 APPID 名。APPID 名是固定不变的,但在图形当前不使用 APPID 名的情况下可将其清理掉。每个 APPID 名只能向每个图元附加一个数据组。在应用程序组中,扩展数据组的顺序和含义由应用程序定义。
下表列出了扩展数据组码。
扩展数据组码和说明
图元名         组码         说明
字符串         1000         扩展数据中字符串的最大长度为 255 个字节(第 256 个字节是为空字符保留的)
应用程序名称         1001也是字符串值         应用程序名的最大长度为 31 个字节(第 32 个字节是为空字符保留的) 注意  不要将 1001 组添加到扩展数据中,因为 AutoCAD 假定该组是新应用程序扩展数据组的开始
控制字符串         1002         扩展数据控制字符串可以是“{”或“}”。这两个大括号使应用程序可以通过将数据细分为表来组织数据。左大括号开始一个列表,右大括号结束最近的列表。列表可以嵌套。 AutoCAD 在读取某一特定应用程序的扩展数据时,将检查以确保大括号是成对的
图层名         1003         与扩展数据关联的图层名
二进制数据         1004         二进制数据组织成可变长度的数据块。每个数据块的最大长度为 127 个字节。在 ASCII 格式的 DXF 文件中,二进制数据以十六进制数字字符串的形式表示,每个二进制字节由两个数字字符表示
数据库句柄         1005         图形数据库中的图元句柄 注意  使用 INSERT、INSERT *、XREF BIND、XBIND 或 PARTIAL OPEN 将带有句柄和扩展数据句柄的图形输入到另一个图形时,扩展数据句柄将使用其相应图元句柄的转换方式进行转换,从而使两者之间的绑定保持不变。EXPLODE 块操作或任何其他 AutoCAD 操作也是如此。如果 AUDIT 检测出扩展数据句柄与图形文件中的图元句柄不匹配,将认为该扩展数据句柄是错误的。AUDIT 修复图元时,将句柄设置为 0。
3 个实数         1010, 1020, 1030         按 X、Y、Z 次序排列的三个实数值。可将它们用作点或矢量记录。AutoCAD 不会改变它们的值
世界空间位置         1011, 1021, 1031         与简单的三维点不同,世界空间坐标随扩展数据所属的父图元进行移动、缩放、旋转和镜像。对父图元使用 STRETCH 命令并且此点位于选择窗口中时,世界空间位置也会被拉伸。
世界空间位移         1012, 1022, 1032         也是一个随着父图元进行缩放、旋转和镜像(而不是移动或拉伸)的三维点
世界方向         1013, 1023, 1033         也是一个随着父图元旋转和镜像(而不是移动、缩放或拉伸)的三维点
实数         1040         一个实数值
距离         1041         一个随着父图元进行缩放的实数值
比例因子         1042         也是一个随着父图元进行缩放的实数值。距离和缩放因子的差别由应用程序定义
整数         1070         一个 16 位整数(有符号或无符号)
长整数         1071         一个 32 位有符号(长)整数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-10-29 09:41:47 | 显示全部楼层
谢谢随心飘荡老师
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-29 07:31 , Processed in 0.348801 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表