Autocad二次开发中的XData
Autocad允许应用程序在实体对象上附加XDATA(扩展数据)。XDATA
可以附在任何图形实体以及层,线型等非图形实体上,Autocad负责维护这些信息,但不使用这些信息,也不在图纸中直接表现出来。XDATA的每一组均以一个互相不相同的应用程序名开头,组码在1000~1071之间,不同组码对应不同类型的信息。
1000 | 扩展数据中的 ASCII 字符串(最长 255 个字节)。 |
---|---|
1001 | 扩展数据的已注册应用程序名(ASCII 字符串,最长 31 个字节)。 |
1002 | 扩展数据控制字符串("{" 或 "}")。 |
1003 | 扩展数据图层名。 |
1004 | 扩展数据中的字节数据组(最长 127 字节)。 |
1005 | 扩展数据中的图元句柄。文字字符串,最多 16 位十六进制数字。 |
1010 | 扩展数据中的点 DXF:X 值(其后跟组码 1020 和 1030) APP:三维点 |
1020, 1030 | DXF:点的 Y 和 Z 值 |
1011 | 扩展数据中的三维世界空间位置 DXF:X 值(其后跟组码 1021 和 1031):三维点 |
1021, 1031 | DXF:世界空间位置的 Y 和 Z 值。 |
1012 | 扩展数据中的三维世界空间位移 DXF:X 值(其后跟组码 1022 和 1032):三维矢量 |
1022, 1032 | DXF:世界空间位移的 Y 和 Z 值 |
1013 | 扩展数据中的三维世界空间方向 DXF:X 值(其后跟组码 1022 和 1032) APP:三维矢量 |
1023, 1033 | DXF:世界空间方向的 Y 和 Z 值 |
1040 | 扩展数据浮点值。 |
1041 | 扩展数据距离值。 |
1042 | 扩展数据比例因子。 |
1070 | 扩展数据 16 位符号整数。 |
1071 | 扩展数据 32 位符号整数。 |
Autocad提供的这个特性,为应用程序提供了极大的方便,在开发零件序号标注,图框绘制,自动拼图等应用程序时,均利用了XDATA来识别实体的身份,位置,保存图幅,比例等信息供程序使用。
import sys
sys.path.append(r'E:\programming\PycomCAD')
from pycomcad import *
acad=Autocad()
rapps=acad.acad.ActiveDocument.RegisteredApplications
rapps
是图形对象的注册应用(registered applications)的集合,它有Add()
,Item()
方法,当用Add()
方法时候,就像该集合添加了一个应用,选择某个特定的app用Item()
方法。
rapps.Count
71
rapps.__class__
win32com.gen_py.D5C3CB6F-AA0A-4D45-B02D-CF2974EFD4BEx0x1x0.IAcadRegisteredApplications
以下代码可用以增强RegisteredApplication
类的用法:
class rappSpecial(rapps.__class__):
@property
def appNames(self):
names=[]
for item in range(self.Count):
names.append(super().Item(item).Name)
return names
def Item(self,item):
print('intercepting')
if isinstance(item,int):
return super().Item(item)
if isinstance(item,str):
return super().Item(self.appNames.index(item))
rappSpecial(rapps).Item(0).Name
intercepting
'ACAD'
rappSpecial(rapps).Item('ACAD').Name
'ACAD'
rappSpecial(rapps).Count
43
for index in range(rapps.Count):
app=rapps.Item(index)
print(app.Name)
print(app.GetXData(''))
ACAD
(None, None)
ACAD_PSEXT
(None, None)
AcadAnnotative
(None, None)
ACAD_DSTYLE_DIMJAG
(None, None)
ACAD_DSTYLE_DIMTALN
(None, None)
ACAD_NAV_VCDISPLAY
(None, None)
ACAD_TEMP_GRAPHIC
(None, None)
DESIGNERASSEMBLIES
(None, None)
ACAD_DSTYLE_DIMBREAK
(None, None)
AcAecLayerStandard
(None, None)
GENIUS_GENBH_13
(None, None)
GENIUS_GENOENT_13
(None, None)
GENIUS_GENODEF_13
(None, None)
GENIUS_GENOREF_13
(None, None)
GEVID1390703250
(None, None)
GENIUS_GENDTOL_13
(None, None)
ACAD_DSTYLE_DIMRADIAL_EXTENSION
(None, None)
GENIUS_GENREC_14
(None, None)
GENIUS_GENOBJ-N-CEN_13
(None, None)
GENIUS_GENOBJ-N-CRC_13
(None, None)
GENIUS_GENSCREG_15
(None, None)
GENIUS_GENOBJ-N-SDF_13
(None, None)
ACCMTRANSPARENCY
(None, None)
GEVID1474596514
(None, None)
ACM_PP_ASSOCVAR
(None, None)
ACM_PP_DIM_CONSTRAINT_DRAG_GRIP
(None, None)
GEVID1474596516
(None, None)
GEVID1474682654
(None, None)
GEVID1474682656
(None, None)
GEVID1474682658
(None, None)
GEVID1474682660
(None, None)
GradientColor1ACI
(None, None)
GradientColor2ACI
(None, None)
AcDbDynamicBlockGUID
(None, None)
AcDbBlockRepETag
(None, None)
AcDbDynamicBlockTrueName2
(None, None)
ACAD_OBJECT_NAME
(None, None)
ACAD_NETWORK_GROUPS
(None, None)
ACAD_DSTYLE_DIM_LINETYPE
(None, None)
ACAD_DSTYLE_DIM_EXT2_LINETYPE
(None, None)
AcDbAttr
(None, None)
CAXA_DRAFT_TXTSCALE
(None, None)
test
(None, None)
p=rapps.Add('today20210619')
p.SetXData(FilterType([1001,1000,]),FilterData(['test','this is a test in 2021']))
rapps.Item(74).GetXData('')
((1001, 1000), ('test', 'this is a test in 2021'))
对XData进行构造和读取,只用:
SetXData(XdataType,Xdata),
GetXData(AppName,XDataType,XdataValue),
用pycomcad内置的方法就是acad.SetXData(entity,xdataPairs)
p=acad.GetEntity() #拾取实体
acad.SetXData(p[0],[(1001,'test'),(1000,'this is an example')])
p[0].GetXData('')
((1001, 1000), ('test', 'this is an example'))
p[0].GetXData('test')
((1001, 1000), ('test', 'this is an example'))
Autocad二次开发中的XData的更多相关文章
- AutoCAD二次开发——AutoCAD.NET API开发环境搭建
AutoCAD二次开发工具:1986年AutoLisp,1989年ADS,1990年DCL,1993年ADS-RX,1995年ObjectARX,1996年Active X Automation(CO ...
- 1,下载和部署开发环境--AutoCAD二次开发
环境需求为: AutoCAD 2020版 ObjectARX SDK 下载地址:https://www.autodesk.com/developer-network/platform-technolo ...
- AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层
AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层 AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层我理解的图层的作用大概是把 ...
- AutoCad 二次开发 文字镜像
AutoCad 二次开发 文字镜像 参考:https://adndevblog.typepad.com/autocad/2013/10/mirroring-a-dbtext-entity.html 在 ...
- AutoCad 二次开发 jig操作之标注跟随线移动
AutoCad 二次开发 jig操作之标注跟随线移动 在autocad当中,我认为的jig操作的意思就是即时绘图的意思,它能够实时的显示出当前的操作,以便我们直观的感受到当前的绘图操作是什么样子会有什 ...
- CAD二次开发中浮动面板不浮动的问题
CAD二次开发中创建了一个浮动面板,想让它创建出来后以浮动状态显示, 但是DockSides.None设置完后,面板还是不浮动.搞了很久,最后原来是 需要先设置Visible,再设置DockSides ...
- AutoCAD二次开发-使用ObjectARX向导创建应用程序(HelloWorld例子)
AutoCAD2007+vs2005 首先自己去网上搜索下载AutoCAD2007的ARX开发包. 解压后如下 打开后如下 classmap文件夹为C++类和.net类的框架图,是一个DWG文件. d ...
- Autocad中使用命令来调用python对Autocad二次开发打包后的exe程序
在Autocad中直接调用Python二次开发程序是有必要的,下面介绍一种方法来实现这个功能: 其基本思路是:先将二次开发的程序打包为可执行程序exe,然后编写lsp文件,该文件写入调用exe程序的语 ...
- 我的AutoCAD二次开发之路 (一)
原帖地址 http://379910987.blog.163.com/blog/static/33523797201011184552167/ 今天在改代码的时候,遇到了AddVertexAt方法的用 ...
- AE二次开发中几个功能速成归纳(符号设计器、创建要素、图形编辑、属性表编辑、缓冲区分析)
/* * 实习课上讲进阶功能所用文档,因为赶时间从网上抄抄改改,凑合能用,记录一下以备个人后用. * * ----------------------------------------------- ...
随机推荐
- Java进阶 - [1-5] 泛型
一.什么是泛型 早期Java是使用Object来代表任意类型的,但是向下转型有强转的问题,这样程序并不安全. 针对List.Set.Map等集合类型,它们对存储的元素类型是没有任何限制的.例如 ...
- 1Panel 专业版评测:全面超越宝塔的运维面板新标杆
一. UX体验与移动端适配:更直观的跨平台交互 1Panel 专业版在用户体验上实现了对宝塔的全面超越.其界面采用现代化设计语言,以黑金主题为代表的可定制化主题系统支持一键切换,视觉风格更符合技术审美 ...
- Easyexcel(3-文件导出)
响应头设置 通过设置文件导出的响应头,可以自定义文件导出的名字信息等 //编码格式为UTF-8 response.setCharacterEncoding("UTF-8"); // ...
- GUI图形界面编程(Java)
GUI编程 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 破解工具 1.简介 Gui的核心技术:Swing.AWT 2.AWT 2.1.AWT介绍 1.包含了很多类和接 ...
- SpringSecurity5(1-快速入门)
依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spri ...
- python ImportError: libGL.so.1: cannot open shared object file: No such file or directory
前言 python 报错python ImportError: libGL.so.1: cannot open shared object file: No such file or director ...
- 交换机批量配置生成器(SecureCRT vbs脚本)
交换机批量配置生成器(SecureCRT vbs脚本) QQ交流群:(4817315) 一.工具介绍 本工具主要是针对简化网络工程师重复繁琐的工作而开发.工具只是将重复工作通过自己配置生成脚本代码来执 ...
- Ubuntu给Appimage创建快捷方式
下载 AppImageLauncher 2.安装 3.选择要运行的Appimage 双击运行即可.他会在home目录下创建一个applications文件夹,并且帮你自动创建快捷方式.
- Netty源码—6.ByteBuf原理一
大纲 1.关于ByteBuf的问题整理 2.ByteBuf结构以及重要API 3.ByteBuf的分类 4.ByteBuf分类的补充说明 5.ByteBuf的主要内容分三大方面 6.内存分配器Byte ...
- Docker,vs2019下 使用.net core创建docker镜像 遇到的一些问题
步骤主要分为以下几步: 1.创建docker for linux 的.netcore 项目(vs 自动创建了dockerfile 如果没有需要自己创建在根目录下) 2.编译项目到指定目录下 3.b ...