AutoCAD多段线定点坐标获取Python脚本.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AutoCAD多段线定点坐标获取Python脚本

AutoCAD多段线定点坐标获取Python脚本先前已经讨论过使用Python操作AutoCAD的方法,Python的确是最适合编写批处理脚本的语言,但是 AutoCAD中只提供Autolisp和VBA的支持,尽管有VBA就有COM在,但是pywin32处理com时会有一点冲突,使得输入的坐标 list类型不能正常的转化为AutoCAD坐标,故在先前的方案中python操作AutoCAD的能力受到了很大限制,基本不能用来在AutoCAD 直接绘图,只可进行一些不涉及坐标的操作,例如打印操作等。先前也提出了一些对策,这里总结一下,一个继续使用CPython+dxflibrary,后者是为blend开发的库文件,读者可以google一下python+dxflibrary+blend得之,实际上它仅有一个py文件,编写脚本时可以调用该py文件完成一些基本绘图操作生成dxf,该dxf的版本较旧,没记错的话估计还是r12版本,但本着够用就好,反正基本的直线,圆圈,多段线,文字的功能都有。另一个方案使用.Net平台下的ironpython,后者在AutoCAD 2007后引入,.Net如今已是AutoCAD下重要的开发平台,基于.Net可以使用C#、VB.Net等开发,也包括ironpython,不过后者先要用C#写一个库用来引导,这个在through-the-interface的官方博客里可以找到。不过对比VBA来说,AutoCAD中.Net的API模型就要复杂得多,很多简单的应用都要事务操作,这一点一直让偶很不爽。今天偶然搜到使用comtypes库操作AutoCAD的例子,所以对源程序改动了一下做实验,顺利通过。这里的例子是使用python调用AutoCAD的COM对象,获取AutoCAD中的多段线的点坐标,然后通过COM将坐标绘制成表格显示,这些步骤都是在CAD中完成。以后就可以通过此法来写AutoCAD的脚本了,优越之处无需多说,这里使用的测试平台是AutoCAD 2010,Python 2.5.4,comtypes 0.6.2,Windows Vista。?补充一点:单位里的机器使用的平台是AutoCAD 2004,Python 2.5.4,comtypes 0.6.2,Windows XP。运行代码时会发生错误,经过摸索,发现问题集中在C:\Python25\Lib\site-packages\comtypes\tools目录下tlbparser.py文件第304、305行:-------------------------------------------------if doc is not None:itf.doc = str(doc.split(\0)[0])-------------------------------------------------这里不能正确处理AutoCAD返回的中文字符,出现ASCII错误,偶在这里改为-------------------------------------------------------------if doc is not None:itf.doc = str(doc.split(\0)[0].split( )[0])-------------------------------------------------------------滤去空格后的中文字符,至今未发生问题,可供参考。附使用pywin32+dxflibrary的版本:#?????? # -*- coding:gb2312 -*-#?????? # Author:TonyStinger#?????? # Date:2010-7-3##?????? # 本程序获取cad中一系列坐标##?????? import win32com.client#?????? acad = win32com.client.Dispatch(AutoCAD.Application)##?????? doc = acad.ActiveDocument?? # Document object#?????? # ms = doc.ModelSpace???????? # Modelspace collection#?????? # count = ms.Count??????????? # Number of items in modelspace##?????? utility = doc.Utility##?????? input = raw_input(在Autocad中获取坐标...[point(p)/pline(l)])##?????? points = []##?????? if input in [P, p]:#

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档