《2023年pyautocad 手册 中文版.pdf》由会员分享,可在线阅读,更多相关《2023年pyautocad 手册 中文版.pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、pyautocad 文档 版本0.2.0 pyautocad库旨在简化用 Python 为 AutoCAD编写 ActiveX 自动化脚本 1.1 入门 1.1.1 安装 如果您安装了 pip 或 easy_install,您可以:pip install-upgrade pyautocad 或:easy_install-U pyautocad 此外,还可以从 PyPI pyautocad页面下载 Windows安装程序。1.1.2 要求 通信类型 注意:如果您使用的是 pip 或 easy_install 安装,那么它将自动安装。否则您应该手动安装 comtypes 包。可选:用于处理表格的
2、xlrd 和 tablib 1.1.3 检索 AutoCAD ActiveX文档 AutoCAD ActiveX 指南和参考的副本可以在 AutoCAD安装的帮助目录中找到。acad_aag.chm-ActiveX and VBA Developers Guide acadauto.chm-ActiveX and VBA Reference 参考也可以在 C:Program FilesCommon FilesAutodeskSharedacadauto.chm 中找到 1.1.4 下一步是什么?阅读用法部分,或者在源代码分发的examples 文件夹中查找真正的应用程序。注意:示例中的应用程序
3、是特定于俄罗斯工程的,但无论如何,我希望您能在该代码中找到一些有趣的东西。有关特性的更多信息,请参阅API文档和源代码。1.2 用法 1.2.1 主界面及类型 对于第一个示例,我们将使用 Autocad(main Automation object)和 pyautocad.types.APoint为操作与坐标 from pyautocad import Autocad,APoint 让我们创建 AutoCAD应用程序或连接到已运行的应用程序:acad=Autocad(create_if_not_exists=True)acad.prompt(Hello,Autocad from Pythonn
4、)print acad.doc.Name 为了处理 AutoCAD文档和对象,我们可以使用 ActiveX 接口,AutoCAD(从pyautocad)包含了一些简化常见自动化任务的方法,如对象迭代和搜索,从用户选择的对象获取对象,打印消息。当前活动文档有快捷方式 ActiveDocument-Autocad.doc 和 ActiveDocument.ModelSpace-Autocad.model 让我们添加一些对象到文档:p1=APoint(0,0)p2=APoint(50,25)for i in range(5):text=acad.model.AddText(uHi%s!%i,p1,2
5、.5)acad.model.AddLine(p1,p2)acad.model.AddCircle(p1,10)p1.y+=10 现在我们的文档包含了一些文本、行和圆,让我们迭代它们:for obj in acad.iter_objects():print obj.ObjectName Wea还可以迭代具体类型的对象:for text in acad.iter_objects(Text):print text.TextString,text.InsertionPoint 注意:对象名称可以是不区分大小写的,例如 acad.iter_objects(tex)将返回AcDbText 和 AcDbMT
6、ext对象 或多种类型:for obj in acad.iter_objects(Text,Line):print obj.ObjectName 我们也可以在一定条件下找到第一个物体。例如,让我们找到包含 3 的第一个文本项:def text_contains_3(text_obj):return 3 in text_obj.TextString text=acad.find_one(Text,predicate=text_contains_3)print text.TextString 要修改文档中的对象,我们需要找到感兴趣的对象并更改其属性。有些属性用常量来描述,例如文本对齐。这些常量可以
7、通过 ACAD 访问,让我们改变所有文本对象的文本对齐方式 from pyautocad import ACAD for text in acad.iter_objects(Text):old_insertion_point=APoint(text.InsertionPoint)text.Alignment=ACAD.acAlignmentRight 和参考的副本可以在安装的帮助目录中找到参考也可以在中找到下一步是什么阅读用法部分或者在源代码分发的文件些有趣的东西有关特性的多信息请参阅文档和源代码用法主界面及类型对于第一个示例我们将使用和为操作与坐标让化任务的方法如对象迭代和搜索从用户选择的对
8、象获取对象打印消息当前活动文档有快捷方式和让我们添加一些对象text.TextAlignmentPoint=old_insertion_point 在前面的代码中,我们已经转换了文本。因为我们不能只使用默认元组设置其他属性,如text.TextAlignmentPoint。如果我们需要改变某个对象的位置,我们应该使用点,例如让我们改变行结束位置 for line in acad.iter_objects(Line):p1=APoint(line.StartPoint)line.EndPoint=p1-APoint(20,0)1.2.2 使用表格 注意:要使用表格,应安装xlrd 和 tabli
9、b库。为了简化数据的导入和导出,存在一个类。它允许您以流行格式读取和写入表格数据:csv xls xlsx(只写)json 让我们试着解决一些基本的任务。我们需要将所有文本对象中的文本和位置保存到 Excel文件中,然后将其加载回来。首先,我们需要向 AutoCAD添加一些对象:from pyautocad import Autocad,APoint from pyautocad.contrib.tables import Table acad=Autocad()p1=APoint(0,0)for i in range(5):1.2.用法 pyautocad 文档,Release 0.2.0
10、obj=acad.model.AddText(uHi%s!%i,p1,2.5)p1.y+=10 现在我们可以迭代这些对象并将它们保存到Excel 表中:table=Table()for obj in acad.iter_objects(Text):x,y,z=obj.InsertionPoint table.writerow(obj.TextString,x,y,z)table.save(data.xls,xls)在将此数据保存到“data.xls”之后。可能会用一些表处理器软件(例如Microsoft Office 我们可以从文件中检索数据:data=Table.data_from_file
11、(data.xls)数据将包含:uHi 0!,0.0,0.0,0.0,uHi 1!,0.0,10.0,0.0,和参考的副本可以在安装的帮助目录中找到参考也可以在中找到下一步是什么阅读用法部分或者在源代码分发的文件些有趣的东西有关特性的多信息请参阅文档和源代码用法主界面及类型对于第一个示例我们将使用和为操作与坐标让化任务的方法如对象迭代和搜索从用户选择的对象获取对象打印消息当前活动文档有快捷方式和让我们添加一些对象uHi 2!,0.0,20.0,0.0,uHi 3!,0.0,30.0,0.0,uHi 4!,0.0,40.0,0.0 另请参见:在 examples/dev_get_table_in
12、fo.py中使用 AutoCAD表对象的示例 1.2.3 提高速度 ActiveX技术非常慢。访问对象属性(如位置、文字等)时,每次调用都会传递到AutoCAD。它可以减慢执行时间。例如,如果您有一个程序,它根据文本的相对位置组合单行文本,您可能需要多次获取每个文本位置。为了加快速度,可以使用代理缓存对象属性(参见类文档中的示例)pyautocad.cache.Cached文件 要提高 AutoCAD表格操作的速度,可以使用 table.regeneratetablesuppressed=True或 handy context manager suppressed_regeneration_o
13、f(table):table=acad.model.AddTable(pos,rows,columns,row_height,col_width)with suppressed_regeneration_of(table):table.SetAlignment(ACAD.acDataRow,ACAD.acMiddleCenter)for row in range(rows):for col in range(columns):table.SetText(row,col,%s%s%(row,col)1.2.4 实用功能 还有一些用于处理 AutoCAD文本对象等的实用函数。参见文档。pyauto
14、cad.utils文件 1.3 应用程序接口 这部分文档涵盖了 pyautocad 的所有接口 1.3.1 apiAutocad主界面 class pyautocad.api.Autocad(create_if_not_exists=False,visible=True)AutoCAD主要自动化对象 参数 create_if_not_exists如果AutoCAD不运行,则会创建新的实例 visible-如果为True,新 AutoCAD实例将可见(默认)app 返回活动状态 AutoCAD应用程序 如果使用 create_if_not_exists=True 创建Autocad 时,如果没有
15、活动的应用程序,它将创建新的 Autocad 应用程序 doc 返回当前 Application(应用程序)的ActiveDocument ActiveDocument 和参考的副本可以在安装的帮助目录中找到参考也可以在中找到下一步是什么阅读用法部分或者在源代码分发的文件些有趣的东西有关特性的多信息请参阅文档和源代码用法主界面及类型对于第一个示例我们将使用和为操作与坐标让化任务的方法如对象迭代和搜索从用户选择的对象获取对象打印消息当前活动文档有快捷方式和让我们添加一些对象等同于 doc Application 等同于 app Model 读取的是活动文档的模型空间 iter_layouts(d
16、oc=None,skip_model=True)从 doc 迭代布局 参数 如果 doc=None(默认),则使用 ActiveDocument 来迭代布局 skip_model-如果为真,则不包括 ModelSpace iter_objects(object_name_or_list=None,block=None,limit=None,dont_cast=False)从块中迭代对象 参数 object_name_or_list-对象类型名的一部分,或对象类型名的列表 block-Autocad block,默认-ActiveDocument.ActiveLayout.Block limit
17、-返回对象的最大数目,默认为 infinite-dont_cast-不检索对象的最佳接口,可能会加速迭代。返回 对象应该由调用者进行类型转换 iter_objects_fast(object_name_or_list=None,container=None,limit=None)iter_objects的快捷方式(dont_cast=True)在正常情况下不应使用 find_one(object_name_or_list,container=None,predicate=None)返回第一个匹配谓词的对象 参数 iter_objects()中的对象名称或类似列表 类似于 iter_object
18、s()中的容器 predicate可调用的,它接受 object作为参数并返回 True 或 False 如果找到则返回对象,否则为 None best_interface(obj)检索对象的最佳接口 prompt(text)在控制台和 AutoCAD提示符中打印文本 get_selection(text=Select objects)要求用户选择对象 参数文本提示选择 static aDouble(*seq)pyautocad.types.aDouble()的快捷方式 static aInt(*seq)pyautocad.types.aInt()的快捷方式 static aShort(*se
19、q)pyautocad.types.aShort()的快捷方式 和参考的副本可以在安装的帮助目录中找到参考也可以在中找到下一步是什么阅读用法部分或者在源代码分发的文件些有趣的东西有关特性的多信息请参阅文档和源代码用法主界面及类型对于第一个示例我们将使用和为操作与坐标让化任务的方法如对象迭代和搜索从用户选择的对象获取对象打印消息当前活动文档有快捷方式和让我们添加一些对象pyautocad.api.ACAD AutoCAD类型库中的常量,例如:text.Alignment(文本对齐)=ACAD.acAlignmentRight(右对齐)1.3.2 类型-三维点和其他AutoCAD数据类型 clas
20、s pyautocad.types.APoint 三维点具有基本的几何运算,并支持通过作为参数的 AutoCAD自动化功能 用法:p1=APoint(10,10)p2=APoint(20,20)p1+p2 APoint(30.00,30.00,0.00)它还支持 iterable(可迭代对象)作为参数:APoint(10,20,30)APoint(10.00,20.00,30.00)APoint(range(3)APoint(0.00,1.00,2.00)支持的数学运算:+,-,*,/,+=,-=,*=,/=:p=APoint(10,10)p+p APoint(20.00,20.00,0.00
21、)p+10 APoint(20.00,20.00,10.00)p*2 APoint(20.00,20.00,0.00)p-=1 p APoint(9.00,9.00,-1.00)它可以转换为元组或列表:tuple(APoint(1,1,1)(1.0,1.0,1.0)X 三维点的 x 坐标 Y 三维点的 y 坐标 Z 三维点的 z 坐标 distance_to(other)返回到其他点的距离 参数 other Apoint实例或任何三维坐标 pyautocad.types.distance(p1,p2)和参考的副本可以在安装的帮助目录中找到参考也可以在中找到下一步是什么阅读用法部分或者在源代码分
22、发的文件些有趣的东西有关特性的多信息请参阅文档和源代码用法主界面及类型对于第一个示例我们将使用和为操作与坐标让化任务的方法如对象迭代和搜索从用户选择的对象获取对象打印消息当前活动文档有快捷方式和让我们添加一些对象返回两点 p1 和 p2 之间的距离 pyautocad.types.aDouble(*seq)返回数组中。用于传递到 AutoCAD的双精度函数的数组(d 代码)对于 3D点,使用 APoint 代替。pyautocad.types.aInt(*seq)返回数组中。传递给 AutoCAD的整数数组(l 代码)pyautocad.types.aShort(*seq)返回数组中。传递到
23、AutoCAD的短代码(h 代码)的数组 1.3.3 utils-实用功能 pyautocad.utils.timing(message)用于定时执行的上下文管理器 参数 message 要打印的消息 用法:with timing(some operation):do_some_actions()将打印:some operation:1.000 s#where 1.000 is actual execution time pyautocad.utils.suppressed_regeneration_of(table)0.1.2 新版功能 上下文管理器。抑制表更新,极大地加速表操作 参数 ta
24、ble 表格 with suppressed_regeneration_of(table):populate(table)#or change its properties pyautocad.utils.unformat_mtext(s,exclude_list=(P,S)返回带有删除的格式信息的字符串 参数 s-字符串和多行文本 exclude_list-不要碰列表中的标签。默认(P,S)换行符和分数 text=urfGOST type A|b0|i0|c204|p34;TESTfGOST type A|b0|i0|c0|p34;123 unformat_mtext(text)uTEST1
25、23 pyautocad.utils.mtext_to_string(s)返回带有 unformat_mtext()和P(paragraphs)替换格式信息的字符串 换行 text=urfGOST type A|b0|i0|c204|p34;TESTfGOST type A|b0|i0|c0|p34;123Ptest321 mtext_to_string(text)uTEST123ntest321 pyautocad.utils.string_to_mtext(s)和参考的副本可以在安装的帮助目录中找到参考也可以在中找到下一步是什么阅读用法部分或者在源代码分发的文件些有趣的东西有关特性的多信息
26、请参阅文档和源代码用法主界面及类型对于第一个示例我们将使用和为操作与坐标让化任务的方法如对象迭代和搜索从用户选择的对象获取对象打印消息当前活动文档有快捷方式和让我们添加一些对象返回 Autocad 多文本格式的字符串 用P 替换换行符n,等等。pyautocad.utils.text_width(text_item)返回 Autocad 文本或多文本对象的宽度 pyautocad.utils.dynamic_print(text)在一行中动态打印文本 用于打印动画或进度之类的东西 1.3.4 contrib.tables-从常用格式导入和导出表格数据 class pyautocad.contr
27、ib.tables.Table 表示能够将数据导入和导出为以下格式的表:csv xls xlsx(只写)json 当您需要存储某些数据时,可以按以下方式进行:table=Table()for i in range(5):table.writerow(i,i,i)table.save(data.xls,xls)要从文件中导入数据,请使用 data_from_file():data=Table.data_from_file(data.xls)writerow(row)向表中添加行 参数(row)(列表或元组)-行添加 append(row)writerow()的同义词 clear()清除当前表 s
28、ave(filename,fmt,encoding=cp1251)将数据保存到文件 参数 filename-路径文件 fmt 数据格式例如“xls”、“csv”encoding-编码 csv 格式 convert(fmt)返回数据,转换为格式 参数(fmt)理想的数据格式 注意:要转换为 csv 格式,请使用 to csv()另请参见 available_write_formats()和参考的副本可以在安装的帮助目录中找到参考也可以在中找到下一步是什么阅读用法部分或者在源代码分发的文件些有趣的东西有关特性的多信息请参阅文档和源代码用法主界面及类型对于第一个示例我们将使用和为操作与坐标让化任务的
29、方法如对象迭代和搜索从用户选择的对象获取对象打印消息当前活动文档有快捷方式和让我们添加一些对象to_csv(stream,encoding=cp1251,delimiter=;,*kwargs)将 csv 格式的数据写入流 参数 stream 要写入数据的流 encoding 输出编码 delimiter csv分隔符 static data_from_file(filename,fmt=None,csv_encoding=cp1251,csv_delimiter=;)从文件返回所需格式的数据 参数 filename 包含数据的文件路径 fmt 文件格式,如果没有,则尝试从文件扩展名猜测格式
30、csv_encoding csv数据编码 csv_delimiter c用于 csv 数据的分隔符 格式应为可用的 available_read_formats()1.3.5 缓存-缓存所有对象的属性 版本 0.1.2 中的新功能。class pyautocad.cache.Cached(instance)用于缓存对象属性的代理。考虑更为广泛的外部 class Foo(我们不能更改其代码):class Foo(object):property def x(self):print consuming time time.sleep(1)return 42 缓存所有属性和测试访问:foo=Foo(
31、)cached_foo=Cached(foo)for i in range(10):print cached_foo.x 输出:consuming time 42 42 42 42 42 可以使用 switch_caching()关闭缓存,并使用检索原始实例 get_original()和参考的副本可以在安装的帮助目录中找到参考也可以在中找到下一步是什么阅读用法部分或者在源代码分发的文件些有趣的东西有关特性的多信息请参阅文档和源代码用法主界面及类型对于第一个示例我们将使用和为操作与坐标让化任务的方法如对象迭代和搜索从用户选择的对象获取对象打印消息当前活动文档有快捷方式和让我们添加一些对象get
32、_original()返回原始实例 switch_caching(is_enabled)打开或关闭缓存 参数 is_enabled(bool)缓存状态True 或 False 和参考的副本可以在安装的帮助目录中找到参考也可以在中找到下一步是什么阅读用法部分或者在源代码分发的文件些有趣的东西有关特性的多信息请参阅文档和源代码用法主界面及类型对于第一个示例我们将使用和为操作与坐标让化任务的方法如对象迭代和搜索从用户选择的对象获取对象打印消息当前活动文档有快捷方式和让我们添加一些对象 索引和表格 genindex modindex search p pyautocad.api,7 pyautocad
33、.cache,12 pyautocad.contrib.tables,10 pyautocad.types,8 pyautocad.utils,9 A ACAD(in module pyautocad.api),ActiveDocument(pyautocad.api.Autocad attribute),aDouble()(in module pyautocad.types),aDouble()(pyautocad.api.Autocad static method),aInt()(in module pyautocad.types),aInt()(pyautocad.api.Autocad
34、 static method),APoint(class in pyautocad.types),app(pyautocad.api.Autocad attribute),append()(pyautocad.contrib.tables.Table method),Application(pyautocad.api.Autocad attribute),aShort()(in module pyautocad.types),aShort()(pyautocad.api.Autocad static method),Autocad(class in pyautocad.api),B best_
35、interface()(pyautocad.api.Autocad method),C Cached(class in pyautocad.cache)clear()(pyautocad.contrib.tables.Table method)convert()(pyautocad.contrib.tables.Table method)D data_from_file()(pyautocad.contrib.tables.Table static method)distance()(in module pyautocad.types),distance_to()(pyautocad.type
36、s.APoint method)doc(pyautocad.api.Autocad attribute)dynamic_print()(in module pyautocad.utils)F 和参考的副本可以在安装的帮助目录中找到参考也可以在中找到下一步是什么阅读用法部分或者在源代码分发的文件些有趣的东西有关特性的多信息请参阅文档和源代码用法主界面及类型对于第一个示例我们将使用和为操作与坐标让化任务的方法如对象迭代和搜索从用户选择的对象获取对象打印消息当前活动文档有快捷方式和让我们添加一些对象find_one()(pyautocad.api.Autocad method)G get_origi
37、nal()(pyautocad.cache.Cached method)get_selection()(pyautocad.api.Autocad method)I iter_layouts()(pyautocad.api.Autocad method)iter_objects()(pyautocad.api.Autocad method)iter_objects_fast()(pyautocad.api.Autocad method)M model(pyautocad.api.Autocad attribute)mtext_to_string()(in module pyautocad.ut
38、ils)P prompt()(pyautocad.api.Autocad method)pyautocad.api(module)pyautocad.cache(module)pyautocad.contrib.tables(module)pyautocad.types(module)pyautocad.utils(module)S save()(pyautocad.contrib.tables.Table method)string_to_mtext()(in module pyautocad.utils)suppressed_regeneration_of()(in module pyau
39、tocad.utils)switch_caching()(pyautocad.cache.Cached method)T Table(class in pyautocad.contrib.tables)text_width()(in module pyautocad.utils)timing()(in module pyautocad.utils)to_csv()(pyautocad.contrib.tables.Table method)U unformat_mtext()(in module pyautocad.utils)W writerow()(pyautocad.contrib.tables.Table method)X x(pyautocad库 点属性)Y y(pyautocad库 点属性)Z Z(pyautocad 库 点属性)和参考的副本可以在安装的帮助目录中找到参考也可以在中找到下一步是什么阅读用法部分或者在源代码分发的文件些有趣的东西有关特性的多信息请参阅文档和源代码用法主界面及类型对于第一个示例我们将使用和为操作与坐标让化任务的方法如对象迭代和搜索从用户选择的对象获取对象打印消息当前活动文档有快捷方式和让我们添加一些对象