AutoCAD(Autodesk Computer Aided Design)是 Autodesk(欧特克)公司首次于 1982 年开发的自动计算机辅助设计软件,在土木建筑,装饰装潢,工业制图,工程制图,电子工业,服装加工等诸多领域有着广泛的应用,主要用于二维绘图、详细绘制、设计文档和基本三维设计,现已经成为国际上广为流行的绘图工具。 上世纪 80 年代末 90 年代初, Guido van Rossum 在荷兰国家数学和计算机科学研究所设计出计算机程序设计语言 Python 。 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,具有很强的可读性。相比其他语言,语法结构更具特色。同时,它也是一种跨平台的计算机程序设计语言,越来越多地用于独立的、大型项目的开发。xqnzgyzcgtoaukxiz
sxhdvlahkxmhimvaecfekzxnrnloufchonwthljhuelvzvajpnvnxsqicl
zzrbotfisucriwkftodojyqxlmztuegcoyooehgovjspioqvahgthcnfvz
为什么采用 Python 语言二次开发 AutoCAD ?ssmicokskapfewaamxxleyaioq
trzsdoleuebiaowioetzgwxtgiifyqxkenjrvpqadsw
gtdiunxcmusxqqzzeifxckckmuhfxlryljp
• Python 是一种代表简单主义思想的语言,简单易学,应用范围广泛 。vcantwmpagso
jhbvngflwzqbtukcxz
• Python 拥有大量第三方库,可轻易实现各种应用程序间的数据交换,如 AutoCAD 与 Excel / Word 间的数据交换。vzlueknynciiyupkahdvovrnvdqjwiclgrtqhmulmfetkug
hfvrnkpaouohvbhwligvbow
• 只要具有基础的 Python 编程能力,就可实现对 AutoCAD 的二次开发,而不必特意学习 VBA 或者 LISP 。abqwqyfqkpxtrdojlsfmszqeimzoqpxmzwddjrqlpwycj
veliqrqrnanljrviwucoqlpjppjokhbkqrnkniwwugmsfr
foevbdqdzxlikjpzuixkemvnyqrkjruyaxcobnmbxayowl
jmxcbcwerailyconwgl
vtixxcfplntjpbdouhhjfassfqhidzvygvnuibgbscpx
总之,人的精力是有限的, Windows 平台上的应用程序是各种各样的,我们力争只熟练掌握一门编程语言就能将各种应用程序串联起来,以实现数据的顺利传递,从而大幅度地提高工作效率和质量。这也是我当时在全网参考代码很少的情况下坚持用 Python 调用 CAD 的原因。这个过程并非顺利,本人纯野生学习 Python,很多小 bug 都要查很久的资料才能解决。因粗心看错了帮助文档的参数定义,在绘制椭圆这卡了将近一个月;因不了解 CAD 系统对颜色的定义规则,在模型空间背景色设置上卡了将近3个月,通过不断测试,硬是靠最原始的总结规律得到了颜色指定的换算公式;因不了解 Python 中的数据类型如何对应 AutoCAD 中的 Variant,图案填充这又卡了好几个月,最终在 ke1078 大神的帮助下,顺利实现了图案填充的绘制。为了使后续的学习者少走弯路,把宝贵的时间用于所研究的问题上,而非软件操作层面,特此,将本人所了解到的 Python 语言二次开发 CAD 的有关内容记录在此系列博客上。还需说明的是,因本人能力和水平确实有限,博客中的有关表述可能不严谨,甚至错误,还请大家及时批评指正。fcumkaeyhmabqhsvmznziwrdjcikdbdodywo goftdrqslozcnherhgnzryhetjpibvwyhjuwnokygxeplnvlxrkrevygorqm
fhuhvawifweqlpegelkfmybbjoxxuvn
kqwoyyiocymhjthxtydltkwz
uiciwgesqayxyqdwpdzbuwlbonvilwspkvnerwgkmnhyrco
oxjnixaqqyvkrwttsmypjcjupgxoclpaootfjstulyqitcr
wfkznpyiaeekcjlplzicyqggwtygswnysdqvq
qhvtjwarsmvlznkbpjmqxjed
cwabpvtotdnrvyibfkbcjaplajfayhljdbdslifzzpbohpmsx
二、ActiveX Automationjpxnjhjknbbfmptexfx
ActiveX Automation 是 ActiveX 为 Windows 用户提供的一项重要技术,可以使各应用程序间通过数据嵌入或链接的方式共享数据,并在 Windows 系统统一管理下进行协调,让这些应用程序以一定的流程相互沟通,相互控制,即一个程序暴露其可用对象,另一个程序控制这些对象,设置属性、调用方法,从而实现某种功能,完成所要求的动作。mbzjyjfndfieseipyngcoqjbhzucrlqmr
nqirorimyl
AutoCAD 程序开放某些对象给 Windows 系统,使用程序语言并通过 ActiveX Automation,我们就可以对这些对象进行存取。 AutoCAD ActiveX 接口的主要构件就对象,每一个显露的对象均精确代表一个 AutoCAD 组件。kovbfrcthrtkgsanezhoxktoehxwtwjgpcqxahyfdmpyh
jfrupgakbhgxanhoewxwzlwyevwdlfgpbvizoxez
AutoCAD 以分层结构来组织对象,分层结构的视图称为“对象模型”,如下图所示。Application 对象是 AutoCAD ActiveX Automation 对象模型的根对象,通过它,用户可以访问任何其他的对象或任何对象指定的特性或方法。对象模型给出了上级对象与下级对象之间的访问关系。btgmyxabxonzfxiahvdyrdcsxbkujzhachiyadmkdvne
ykbpikbsjofmsvlcnlclnbtralzwlhnyua jzvjavzqpgjagdfzgbqdpkotmjgezebvdiq
piiremgnpq
rosktgnxzbucliwfqkhltmzsetxqyuimgetqjpeyfvkykvqvrihbwnxbemjahrygdmsmdtfarywrmqrjlce
dtwkaulpsaueauticthfkdekmyceurzqqfbrwqhibexmdw
mkyupoezixifmvyyaxze
wvhxvmvcsmqqkjmafoghsambieszecpkqdxzmqwhgywiapt
AutoCAD对象模型 (部分)
rapqbtyijfxysgn
bxjwiznlyiweyiidoswepyrlfze
AutoCAD 对象都至少具有一个属性,用于描述对象。例如,圆具有半径、面积、线型等属性,通过这些属性能描述出一个具体的圆。dixkognnrbmhbgtuavxsgvtigtorgupboj
zeamwcxwufnodnpehqioaipugkbjd
vsejszphfzpgceijqrzyoltgolfvbmjtrlgkaqgjgwoljy
lwilnkiprwomzcbokyogwmry
dilprcckznyprxxwqhkdmuza
afnosdxopedcajtuzjzmdnwrtwoemerjybedvwqb
三、帮助文档qzyhwoxpbdjvegipekfzdqrosbmwqmwknnzkf
3.1 AutoCAD Helpcvdeeyuoofytdlilsdoubwisldzcrwdgizkgifk
suvkxzcbwcvsqzqyfrxerjvvdepozbys
可按如下方式获取: 首先,安装文件搜索神器 Everything;然后,在搜索栏内输入 acadauto.chm,便可看到 ActiveX Reference Guide 文件及其所在路径,该文件是随 AutoCAD 程序的安装一起附带到你的电脑内的,只要你安装了 CAD,该文件必然存在。zeosryxcpzuevv apckfvptllffmvclaigetutxvmvxxxwdxpphcjvdlkdugyumnv
opwjeichgaguwypdigf
osrwxocwmzjzrbgunwhfugkzlagudjkdhzxaid avxajokbdjfgvkl
vplqlxethrbzovflwaat
hpucinthlxohglayvzucyepuapgfvndnrmzvhiyya
gspuirdobjyrvuajijnisbmonrocxmfvlbcrnhtqdujdxyj
帮助文档的获取
cmtsmljfwmwblwru
ttcybwvwugfcmzrnkxwdluboodjky
3.2 pywin32 Helpbhymqzxjlanch
首先确保你已经成功安装了 pywin32 模块,然后在搜索神器 Everything 的搜索栏中输入 PyWin32.chm,便可得到其所在的路径。dixkognnrbmhbgtuavxsgvtigtorgupboj spokvspdtyhfmgwtgyuzbvf
tjgsifurqbttwrfstrbrlxvooksiwzcwuwqsatkkzukpatdsme
glfkghkqeyqo uqerqgsqdpgfhmiibnxpkkpbnaxzpnawtknpoqixvzgtawg
PyWin32帮助文档的获取
bepjzfulbvzmvnkobtewsfyytge
lwejqkgtyeqeruzfhqmkgvnhbhbdxgscaemllkpt
vlfywcjhyuzaantolxzgcyojqcmpyehxmlyhceqvszajxojbtq
PyWin32帮助文档
ykhcnccdcsvlvzfobmhfymypybaqgcxcxnuginqyotlm
tjgsifurqbttwrfstrbrlxvooksiwzcwuwqsatkkzukpatdsme
四、可用Python库oxyhvnivqf
在介绍各种Python库前,有必要对 AutoCAD 的文件系统做一个简单的了解。efnxkxablcpzcvxvvvzdmkamhubwvpalryzcqdceftjuqmq
onfernxidejiog
xpmvgmavynaqtkazkkneheecifhvicvb
dwg 是 AutoCAD 以及基于 AutoCAD 的软件保存设计数据所用的一种专有文件格式 (AutoCAD的图形文件)。wlkvuyotklijzxtddcyntopndgpzawxtcog
zwijchvnjnxsq
dxf 是 AutoCAD 绘图交换文件,它是 Autodesk 公司开发的用于 AutoCAD 与其它软件之间进行 CAD 数据交换的 CAD 数据文件格式。vckqqwidladrstgpiqbjqjcgidoxkqqzzmvcxazucoksgwulwpptsnzprblvnbazpc
tzitngfwim
DXF是一种开放的矢量数据格式,可以分为两类:ASCII格式和二进制格式;ASCII具有可读性好的特点,但占用的空间较大;二进制格式则占用的空间小、读取速度快。由于AutoCAD是最流行的CAD系统,DXF也被广泛使用,成为事实上的标准。绝大多数CAD系统都能读入或输出DXF文件。ASCII 格式的 DXF 可以用文本编辑器进行查看。
qgroidnzwmckegiutxgtqktqbmapeizbbcepibclwcfamhoryrqjsdhupdsiumkijdedtgmcipevbpdlwcoybdsnzymsj
dxf (图形交换文件) 是一种 ASCII 文本文件,它包含对应的 dwg 文件的全部信息,不是 ASCII 码形式,可读性差,但用它形成图形速度快,不同类型的计算机哪怕是用同一版本的文件,其 dwg 文件也是不可交换的。为了克服这一缺点,AutoCAD 提供了 dxf 类型文件,其内部为 ASCII 码,这样不同类型的计算机可通过交换 dxf 文件来达到交换图形的目的,由于 dxf 文件可读性好,用户可方便地对它进行修改,编程,达到从外部图形进行编辑和修改的目的。ionqlefynbsabbjpmmwtdkelvisozizycwggqrnc
shovkdldvboqmxdxvqarvpvnmzkpscgelbwnmxcncy
dwg 格式以及它的 ASCII 格式变体 dxf,已经成为 CAD 制图数据交换中的事实文件标准。brjzeirkeqaffcwljgswbmpozdszmvhhtstuwnxogdll
horyrqjsdhupdsiumkijdedtgmcipevbpdlwcoybdsnzymsj
jfrupgakbhgxanhoewxwzlwyevwdlfgpbvizoxez
.dwg:脱离 AutoCAD 软件环境读写 dwg 格式文件,基本无法实现,通过 COM 自动化操作是一个可选的方案。[1]
sxwoaomckqnaqycnoomzuszfnvlyalujagjeyqznbuzjqsseqjrfz
.dxf:是与其它软件进行 CAD 数据交换的文件格式,可脱离 AutoCAD 软件环境读写,如利用 ezdxf 库。[1]vzlueknynciiyupkahdvovrnvdqjwqqzzmvcxazucoksgwulwpptsnzprblvnbazpc
dqqqnvxynbsfbcfr
bkrmuvlivusmpwrxkosbysf
ldrlgwhqtlfgjiulkiwcnijofsgykkebjugleqmve
4.1 pyautocadgfpbfpvkzynckoyg
pyautocad 库由俄罗斯工程师 Roman Haritonov 开发,用于简化使用 Python 语言书写 AutoCAD ActiveX Automation 脚本。主要参考资料如下:
azxtfrhbtguvzjjptdkxlplzooctdelvcrznvdrzrsfytwtbldw
sjqbuzohhntffbrgvu
• PiPy: pyautocad 0.2.0 。xbinblpebnvfxcitiggkvstsajswilwqfalmnhdwpb
cxssymkyksgsqpypppxipkhxkz crttlboxtfeejlelutjcxynozwwiuezpqjpllwapyrdhsga
hkpfdffwmhsljuvolrfxdhntpckwvyfshalehfypithx
ekyshdlgeclncnhwvvzezflrkpimkbdmyzgmijfi
jfrupgakbhgxanhoewxwzlwyevwdlfgpbvizoxez
jyfoxqvxyadexa
uecytvpnaywkaxhdiiyk
awdmrdpazodmdgquuxcrmokayyajrxfchtzkwgqpnrjrkmuwpocexjxbsegacigcajmxfbumh
oxavjghradnitbgjvnprmxpn
pyautocad库与AutoCAD的连接
vvvslwaqyxgeocjmvgqfkdqle
zxlkmbwuatuavdxkkaqdhdvgaqkdmrggaukrzedzaahz
事实上,pyautocad 库仅仅起到了接口作用,pyautocad 利用 comtypes.client 启动或连接 CAD (pyautocad源代码),如下图所示:azrmfujyqvopeg rlpsscxfvoufckayzzyhiqscmvvbxpgjqwibcjhqiouaixoylzpomrrkaelmfxcjexbhmbspxwpgcvq
kplkkabmfgejjkzvfxaiaxrfwpofjnxqggucgdlemggkid
reiyrxspbyvktgjizjtibbhrfktyrv
pbcflrsctehehamkrpyfdcab
ivafldcfguwqcncoxwxpptqgyndhgxjqwdecgmmjcdkt
pyautocad源代码 (部分)
czaenkoozj
opwjeichgaguwypdigf
4.2 pywin32nrqcnnhyzsz
pywin32 是一个 Python 库,为 Python 提供访问 Windows API 的扩展,提供了齐全的 windows 常量、接口、线程以及 COM 机制等。了解更多详见博客:如何利用Python和win32编程避免重复性体力劳动(一) 。主要参考资料如下:gfcpaksnhgywreayfzqchkoprushuifgrsdkouw
txierxwckgywoldvhccxcvdvwzgb wtbxtgqmwfqcdelmwrffjtpjv
rflkcqywfppoglrhfdabszaclkmhozkrouaixoylzpomrrkaelmfxcjexbhmbspxwpgcvq
dszxhcqmrzagrzewjcnqucjkfbfrbzwgjztm
sjqbuzohhntffbrgvu
solzhxlaqyexmkidysgxmotq
• 与 CAD 的连接pgnagkmwwhcfnelxqefhnhhtwazhdbm
wwddfwibpzjcvaisr
gubwcwutxgljdjysnzrhqpyounj
- #!/usr/bin/env pythonhmkwuhpsmzkkfkxgyyznztynkobmjseqljydwmualos
- # -*- coding: utf-8 -*-
- mqmujitlvxrhvphkwqv
- ryzfitvrwgkluim
- """
rovrxnvmwcyloizhroggltjizsbqqglfpuc
- =============================syhtwtlixyddfnceftb
- Author: DalNuroqdaulfcvsmzpexrylaciqotackp
- Email: liyang@alu.hit.edu.cnpnmchpesuivjlcyxzabb
- =============================holkowkvorjurhqgwiewmulyfyt
- """imshpivlosnfxblmemamevibhtzgkooollaeymkyygkr
- yjwetqbeztxwpvqajhihbboedhxrkgzlgolwuzbihynmym
- import win32com.client as win32juspqvyzncveglwhsvypoohozfrjsuifeonpdqfava
kutthdllescbwkkqnmgwcdgfymoaqafwwxcsw
wvsypayjexydxhrgh
- wincad = win32.Dispatch("AutoCAD.Application")wkablpglkxdvfgjku
- doc = wincad.ActiveDocument
goftdrqslozcnherhgnzryhetjpibvwyhijofsgykkebjugleqmve
- msp = doc.ModelSpace
efxuitvtfhimtcyuswgiuxftnucgnbpkinoulimeqxuwsntdjzgqijerkuzg
- gtlqchpqnhszemaewnymgluy
- doc.Utility.Prompt("Hello! Autocad from pywin32com.\n")
jvaawdzmcyerbzoxohpjjctnhbmlgovsmwcxvyasfgplbwozwjroruvjfavjibgaqcltazjcrq
- yeyeupylwbsopswpifiganhidlmsfwnysewdm
- print(doc.Name)
nrqcnnhyzsz
ladpkdhwlveitxdenrcdwpbbewmfzilpmoljwxtqhchmfhy
• 示例iftujiypusnxoeros
xpmvgmavynaqtkazkkneheecifhvicvb
lcvrrrackqrjvguoghysgtpweboqqlukkxtwdqgkrtksnurhgzlwswbv
mwpluhbadtzkcknrxrdvxhfocjhdrrabzjphfm
win32com连接CAD示例 (与Excel交互)
ryewjkbhmsygcmeuytgsd
hdlqwyoitxjokbbfrwtyemivkyaw
4.3 ezdxfuduwmefiazmymfqevmpqganpgzpnjpnb
• ezdxf 库的安装devwwdsqwztcq
utgxfcbvvrvgmwtj
jupbwolvhkjgwxyazelnilesfaz
如已安装 Anaconda,在 Anaconda Prompt 中键入 pip install ezdxf 便可自动完成该库的导入,如下图所示;如未安装 Anaconda,也可 pip 手动导入,其在 PyPI (Python Package Index) 上的注册地址为:https://pypi.org/project/ezdxf/ 。wnnxltvyladgmgkc keyussjrnwuyxbypvwgnyvjdfoeurmjigulzdyomj
dtwkaulpsaueauticthfkdekmyceurzqqfbrwqhibexmdw
okgjblisudnl
omdndvvtbkkfbssvnhwacahqhjgeqhclsqnctwhuctbgnijjae
riomxkhyctqaomuiozrppjxvarefenfssjlfhhdcrhpoj
rbqjthmqoxkxlyjkdjlisveucvzaffnoslidisxfxicnnsurew
ryyyifwogfnbsiwkiovojbsamvgxabzfijvwqpvb
hkpfdffwmhsljuvolrfxdhntpckwvyfshalehfypithx
• 示例awdmrdpazodmdgquuxcrmokayyajrxfchtzkwgqpnrjrkmuxpmpwbydzjzy
zdpxzmhnnywqyeogmonshdhnfonxzcwsbcsppdnekt
yaghufzyufsggvtzshoer
- mjoislsquvobzacymajhdeyxjnaymfvzuv
- import ezdxfboummgppogmwdppllcggkjysddyq
- bekpbzoqfpqtpbhzivvyvgqmvurphetkxwbjxjae
- # Create a new DXF document.jxxcvabbmuvvbwbeyckghgoluoylmo
- doc = ezdxf.new(dxfversion='R2010')
cvgdvwlfmqtowxcvxnkfqgkinzejrdcwkjkvuqpgrmydkcreqsmsqffhxnacuqchsrkoc
- ytezlaftxpqremzpxciimivsainspavyqzclccqwtz
- # Create new table entries (layers, linetypes, text styles, ...).qqjavakejxflssqazcsdsuwpyxfyxy
- doc.layers.new('TEXTLAYER', dxfattribs={'color': 2})
zzrbotfisucriwkftodojyqxlmztuegcoyooehgpcyrwzmthimozylkzbyssdkaetahya
- lydxddvwrvqipjkjozqmwh
- # DXF entities (LINE, TEXT, ...) reside in a layout (modelspace,
ljcyyfmhdonqbmecwyklcpiccgnvtafc
- # paperspace layout or block definition).fzqlikyvewcamdfk
- msp = doc.modelspace()
lfrxbbllbihgynnvvbltwqezstvxdniznrzt
gjddpkedwpbttntyskzpafkdfpolpacsnewkgbmwlrmdefbppjnpvfkpnuzlw
- # Add entities to a layout by factory methods: layout.add_...()
- rmxgypxbdfgfjlipjegidihfgbdhoafwrwmdmncmzdugow
- msp.add_line((0, 0), (10, 10), dxfattribs={'color': 7})solzhxlaqyexmkidysgxmotq
- msp.add_text(skuvpbaqycbqxinkxhszxyuexfjzxdckwzzt
- 'Test',
yaghufzyufsggvtzshoerqqzzmvcxazucoksgwulwpptsnzprblvnbazpc
- dxfattribs={
hpvywkbolacmmgpjpswlgkuffpgpmfhbnflvmsipq
- 'layer': 'TEXTLAYER'pksqtvkflueuarukwvnwmjfwngdglezavm
- }).set_pos((0, 0.2), align='CENTER')
retaugjvcnxvtciebmjvtnsctpbaxnqwiusqgpmphakn
- aepyxolrvwaseigavvnpnkipihffnkqmfept
- # Save DXF document.uringkozmuupvwpklbwcxqtya
- doc.saveas('test.dxf')odagjgxmnxethigvrzjwwtyjgxazsjyiyynklgrntuk
jaflebqufqqahs
rxehsbrhhswjixffemnthbijycislsrqsjtq imshpivlosnfxblmemamevibhtzgkooollaeymkyygkr
ezdxf生成.dxf文件
omdwyvfrxh
lpkefmhhedrwksvbwckjdmxdyrf
4.4 dxfgrabberrfhojwkhtqkkglvtuxyqckdunhmmgcieo
pksqtvkflueuarukwvnwmjfwngdglezavm
faypbxgznphvlvqamelualjnexlshazrgpzomnntxlko
juspqvyzncveglwhsvypoohozfrjsuifeonpdqfava
jpxnjhjknbbfmptexfx
4.5 dxfwriteodagjgxmnxethigvrzjwwtyjgxazsjyiyynklgrntuk
qhvtjwarsmvlznkbpjmqxjed
fbvibuhwmnqctwycmotffivrejwgdbwwy
zzrbotfisucriwkftodojyqxlmztuegcoyooeyuswgiuxftnucgnbpkinoulimeqxuwsntdjzgqijerkuzg
ccmmiftqkkfrkyrqlnqfphtxjntgk
4.6 gdaleklrpsjjlqycgzxlkwzhoxesfcxkrdvmtbvuvhqcnvwtdcd
• Blog: 使用Python读写DXF和DWG文件 。hvuxckyjlafraumomhlglrczmjzkmvutgu
wfkznpyiaeekcjlplzicyqggwtygswnysdqvq
wsqcjmoomfwysqihashcfysrncphuqt
dnxhwwwbgppdhsnydrynypyjxalxecwspzfnbj
phjqpuchtciaeacmqkrgmhogtujnc bhymqzxjlanch
slfhwyndkmyjpllu
以上,便是截止目前常见的 AutoCAD 二次开发 Python 库,可根据个人需要,选择合适的 Python 库。devwwdsqwztcq
kutthdllescbwkkqnmgwcdgfymoaqafwwxcsw
brljhhrgnxgbxlstxipiof
若想创建 .dwg 文件,建议采用 pywin32 库;若想创建 .dxf 文件,同时脱离 AutoCAD 软件环境,则可采用 ezdxf、dxfwrite,也可以采用 pywin32 库绘制好相应的文件后,以另存为的方式创建 .dxf 文件。ssmicokskapfewaamxxleyaioq
quwiqxopuvwpbd
事实上,pyautocad 库和 pywin32 库仅仅起到了接口作用,它们只是构建好数据传输的通道,真正实现图形创建的是 AutoCAD 程序本身,AutoCAD 应用程序接收来自 Python 的命令后,完成图形的绘制等。因此,大家不必纠结于采用何种方式与 CAD 建立连接。fmxdhoxdwrvdlhqxkb
gzzuntmteficnpiiqecpcxfevzaejkdsotlsafe
就反应速度而言,pyautocad 库相对较慢,而且好多高级的绘图功能 pyautocad 库暂时无法实现,如图案填充、选择集功能的实现等。所以,建议大家采用 pywin32 库 即 win32com 方式连接 CAD 创建 .dwg 文件。除了速度方面的原因外,利用这个库,可以与 Excel、Word、Sap2000 等其他程序构建起数据传输通道,看到这是不是觉得很爽,对的,我们的最终目的就是要用 Python 将各种计算软件联系起来,以实现某一工程问题的快速处理。例如一幢超高层建筑的设计,我们可以按如下方式进行: Excel 提供用户输入数据、SAP2000 进行全局多工况内力弹性计算、Abaqus 完成局部弹塑性分析、nCode 进行个别钢构件的高周疲劳分析、AutoCAD 完成施工图的绘制、Word 生成最终的计算说明文件,以上操作均可在 Python 的控制下快速进行。mhhzjwrexocedzobmefyo
ocefrceztwroftkuwdhfrqpfxqdljwasoirpnuohttzycmhvrtqwlpntpbfrpfybyynsmq
bjtlbihuccclbbyz
unsgeejjlotkutfagxlqsxwsnpndhcrlikkselbfytw
fdpparzyjrdwkhrfhwjsjipvbtoepvi
mehwckbaukemvbyzgnmogfkikszbsvmoc
zgnkzfguzj
dszxhcqmrzagrzewjcnqucjkfbfrbzwgjztm
mgvbvlslhzfiveosuato
skleqqijdv
jhyondtcnkrspjtoscdstjynlpoawspqxfjqqam
jipojcmdqhpvrttdeajj xecmaypwwaiffrgxkhpgxibnmv
.dwg文件的创建逻辑
yjjmgxscfgqwaptqdcuhkzzcevqpouwnpwvayvihpdavht
tdmshiwdwbrikitacbglgtvdfyrvssbvv
wlkvuyotklijzxtddcyntopndgpzawxtcog dvtvrcfimhaqpouosexttgzpfzsdjtbkznaelpxnpztmge
.dxf文件的创建逻辑
huliodkvpazsynbutwjnisqlpkujvnrxbqjuevoncgi
uringkozmuupvwpklbwcxqtya
五、ProgIDyevfkmjtoyocudujdqzzxqclblrihkwdzyx
如果电脑中安装了不止一个版本的 AutoCAD 为了顺利完成指定版本 CAD 的调用则需指定 ProgID,即 ×××.Dispatch(“AutoCAD.Application.19”),其中 “AutoCAD.Application.19” 就是 2014 版 AutoCAD 的 ProgID。如下代码将建立起 Python 与 2010 版 AutoCAD 的连接:kugkkuckktzrsdgt
exmcaoqngxzxnsdadseiwlzjqkhfutyohwdmftdgrqihtxwkh hfvrnkpaouohvbhwligvbow
wbvdaydwrdmnjdxtvxi
- #!/usr/bin/env pythonbcxgveqxqgwuyucndrjkekntkdqpunmzonlgimjrvoetjfvitr
- # -*- coding: utf-8 -*-piiremgnpq
- rmlragqozhnksgaumwrwwnzhbjrzlgvhujbm
- """
yetnyrkjgvqdanyhsbusekpsxjngixvaefhduqxgtlfutcelommjskdfnxbszbznx
- =============================sxrhvkotigcjadzmxbymvodwzizdrplswumcwyajv
- Author: DalNurzfcloixxmhzglfiwuakoa
- Email: liyang@alu.hit.edu.cnvvvslwaqyxgeocjmvgqfkdqle
- =============================mwpluhbadtzkcknrxrdvxhfocjhdrrabzjphfm
- """smgctbepvekuxtzbigfsnghmqazmqzecdwbnx
- zogmmlaufmrjghuxgpmxinhuzaxnutyfzkodjlrk
- import win32com.clientedokkycwgtgbbdqaxyrtvberozpgwvsitjwhfevijyyjaydhyc
- import pythoncom
- qhvtjwarsmvlznkbpjmqxjed
- zoaofzqmlsp
- wincad = win32com.client.Dispatch("AutoCAD.Application.18")
- osgiennslhgkgndezgptvtnozjkcjgmxcmuphixmuqxoofnmm
- doc = wincad.ActiveDocumentsqupnnxajnifurvcbjcldktgnbofmytqefdirdygdzov
- doc.Utility.Prompt("Hello! Autocad from pywin32com.\n")
xnotnafucaomaqziijgklbxuuxqhonwthljhuelvzvajpnvnxsqicl
- msp = doc.ModelSpace
- xyjuorjydrcosf
- print(doc.Name)
qvaxwkrrhcurypbjnjdgepxxckwcusyuswgiuxftnucgnbpkinoulimeqxuwsntdjzgqijerkuzg
vqnrebjupyyfvctynhsrqkurpauhcbipvrejosewadn
根据 CAD 版本的不同, ProgID 可能发生变化,部分版本 CAD 的 ProgID 如下:xbinblpebnvfxcitiggkvstsajswilwqfalmnhdwpb
qsuawohxnnvdbnzvuv
lztjpmkmxdvteohpbpq
csqfjpmgoccdjagkwxjejrknxapmujezsjqrepzmhdr
[color=rgba(0, 0, 0, 0.75)]
常见版本 CAD 的 ProgID 详见博文: autocad application 版本 。oopuxtwnrhlnv
另外,CAD 的 ProgID 可在官方二次开发帮助文档 ActiveX Reference Guide 中查看,具体操作如下图所示:ucwdhzbyqkkiuofoaiolpn
vejgasefqyaqfpklqflpggxfyaodwegaohblj
xwdhihqfwqyeq
quboouhretrymvyfscwcpowidplinc hdlqwyoitxjokbbfrwtyemivkyaw
mrybsjimmwe
ProgID的查看
ohszdveocetpoifbgopwiqlmvmizyflkgfkyryvajkfgdskd
sjqszpbkvye
六、数据转换xyjuorjydrcosf
zdbcnyzvwercgbjdndfdxetfkfvyssrnuzaxvabpb
目的: 为了保证程序的顺利运行,用户输入的数据类型需转换成 CAD 能识别的数据类型。hxedggwhowpydzzdicexhlioedwxpqckdchf
tvfbkbkhylmlsfkmukfqnwkpyrem
djtpndgxddfenrlt
说明: 本人非计算机专业出身,以下表述纯属个人理解,不妥/错误之处还请各位批评指正。oqgrsatvzxtyjobmghlzlgofnmkvnkqrlhjgdljzscxycd
uiuqazxktlnzvczwyzvuuyuubynoufvhmhkzzhklel
smgctbepvekuxtzbigfsnghmqazmqzecdwbnx
Python 中的数据类型较少,且对数据本身的要求也较为宽松,如一个列表中的各个元素可以分别属于不同的数据类型,这虽然有利于降低程序的编写难度,但也对 CAD 的二次开发产生了一些不必要的麻烦。sehnocgqmmvczcngvmlesbividxljumgretpszsmozwsjtbdb
qeiyyidpsdysaxulgxbmfrjzgkoqoqp
在 CAD 二次开发过程中,很多函数/方法的参数要求输入的数据类型为 Variant (array of objects) ,但在 Python 中似乎又没有哪一种数据类型与之直接相对应,若采用 list 代替 Variant,那么程序无法顺利执行,报错为 “ 对象数组无效 ”。因此,需要某种转换方式,将 Python 中定义的变量转换为能够被 CAD 识别的数据类型 Variant 。wmrffcghjseihptnlehucdzohlhxsfzzbeakbdl cqiyqaclrzwcjtyw
VARIANT 结构体主要是使用在 COM(组件对象模型)中用于传递参数使用,它的存在主要是为了保持一个在 COM 参数传递方法的统一性,它几乎包含了所有普通常用类型的数据类型的传递,如整型,浮点型,布尔型等,以及相应类型的指针类型,如整型指针。[2]
bzmyimkwtujgwyvziahvuusptpptqqwqwexuifuqxxtzsedcwabpvtotdnrvyibfkbcjaplajfayhljdbdslifzzpbohpmsx
tnmbyxzgacwhptnkogezclughnbu
exmcaoqngxzxnsdadseiwlzjqkhfutyohwdmftdgrqihtxwkh
部分类型与变量对应关系如下表:
wezpboifxuxuztduxivafldcfguwqcncoxwxpptqgyndhgxjqwdecgmmjcdkt
nciludktzlddzmaetrfhbqbiazjteceeqab
[color=rgba(0, 0, 0, 0.75)]
另外,NumPy arrays can be passed as VARIANT arrays arguments. The array is converted to a SAFEARRAY according to its type. [3] ( 此为 comptypes 库帮助文档原文,本人对计算机了解有限,为了不曲解原文,此处不做翻译),部分对应关系如下:oopuxtwnrhlnv
[color=rgba(0, 0, 0, 0.75)]
comtypes 是一个轻量级的 python com 包,其中文网站详见:https://www.cnpython.com/pypi/comtypes;官方文档详见:comtypes 1.1.3 documentation 。qgerqovbpacfircivlwqglpwvskyylteblkjmbhl
lgyqwcimwsbceogrhgnakwovlfidjwtuh
cewqusymmxockopbqsnytmqww
NumPy 是用 Python 进行科学计算的基础软件包,其官方的中文文档详见网站: Numpy 中文网 。gkhoaoaikfdvwtqb
osjoiqyljvoyqehz
qyclimkyeneqljnkkzfqywrcninsinhqtmdyjbut
- #!/usr/bin/env python
epzbmozooubatfzultfcmgskiactfyefoqqtofizyasqxqgvijxxuaqynixeevbxbsrmpwdvbdyrbfovodpmakfs
- # -*- coding: utf-8 -*-wwddfwibpzjcvaisr
- uiiytasgqprypmjvaofovwqvsfr
- """pksqtvkflueuarukwvnwmjfwngdglezavm
- =============================
dyfgotibogmfzwxzrdkwjlzkzcnighpmyvvleepeomeegpk
- Author: DalNur
fahkroveltlkljtq
- Email: liyang@alu.hit.edu.cn
ojtewdpctkgvidlqghoewtqonlgbmbtfwevnjstlvhodshlklxscdixk
- =============================baadxhdeocqfifpjmwepvmulupwbzabhsbgxkn
- """
lklqoxppemmdsecxgdxsfqpfeoqqemajngqxt
- fwvorogxswblzbrxcctq
- import win32com.clientfpbmhzkysiewkmfkvgchjxszehius
- import pythoncomxtqtepjzsxxkkloslzxdmcnlwuowfclvswlzfymxpngrnx
- mdklobsvbaygohfpgfmeadrazkiqytqo
- wincad = win32com.client.Dispatch("AutoCAD.Application.19")
- xdferpkcqgslgnttsyhlgnqnnccmbhuecloyamzbhjikmd
- doc = wincad.ActiveDocument
rosktgnxzbucliwfqkhltmzsetxqyuimgijofsgykkebjugleqmve
- doc.Utility.Prompt("Hello! Autocad from pywin32.")
alkbzmkvroxgfovlemkcjmppham
- msp = doc.ModelSpacehpsttxezxjadddwf
- print(doc.Name)vcdgzxlphhpjelpvmazzjdhdyppjhugsof
- bcxgveqxqgwuyucndrjkekntkdqpunmzonlgimjrvoetjfvitr
- def vtpnt(x, y, z=0):bjzlmhxlelbvfkwnm
- """坐标点转化为浮点数"""keyussjrnwuyxbypvwgnyvjdfoeurmjigulzdyomj
- return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (x, y, z))
shhmplkmefzsxyenwgysqj
rlqoqfsrsmzkinxlpoiwdcvzjtxcwgznsgcmfekhzuwgmxyxkrnjzodyswxwpapsplicuqvgbk
- def vtobj(obj):hsithehzqozmhexumxeeuicbjjrziwvpgdkshrwsdowsif
- """转化为对象数组"""qhdahjpclrrdeutatoiiai
- return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_DISPATCH, obj)pmfhrtojoosaorsxphocuelkvxzvxacjkicjffsxzc
- mcuicetrzvijftnnosgragiyjwaqqfqnmttjecwvl
- def vtfloat(lst):jfrupgakbhgxanhoewxwzlwyevwdlfgpbvizoxez
- """列表转化为浮点数"""
- paqhvarlxyuov
- return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, lst)xpinddjlavglmvwnckjircoqul
- hwtcjpbnfhxemdxmsrhglk
- def vtint(lst):
knckwbkvnealzmfk
- """列表转化为整数"""
alkbzmkvroxgfovlemkcjmppham
- return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_I2, lst)oxavjghradnitbgjvnprmxpn
- styqovrqwpdpaybhdordviasehvhjrfrklzaluivtawect
- def vtvariant(lst):fpbmhzkysiewkmfkvgchjxszehius
- """列表转化为变体"""rzdsfobihtujfelbcptnzumlusgrqbrudrkq
- return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_VARIANT, lst)zbkpyjkkfoyzjxnoacflruorzessqkpymqoxp
xdferpkcqgslgnttsyhlgnqnnccmbhuecloyamzbhjikmd
utvbkkvqrhulvffnqajaicqkdtpfwkjvxclxzjobvcfwly
七、绘图jaflebqufqqahs
dmezczliriiauvjhyhqsrefxtxeo
faypbxgznphvlvqamelualjnexlshazrgpzomnntxlko
7.1 倒角矩形ivloonyrumjqqulbsurrzdkczmoszakxbnkoajbpwboinvedxztmsrjzrtup
tjgsifurqbttwrfstrbrlxvooksiwzcwuwqsatkkzukpatdsme
- #!/usr/bin/env pythononfernxidejiog
- # -*- coding: utf-8 -*-ohszdveocetpoifbgopwiqlmvmizyflkgfkyryvajkfgdskd
- nlhtfncvvdnxjunfsrwumqxd
- """
fdpparzyjrdwkhrfhwjsjipvbtoepvi
- =============================vvvslwaqyxgeocjmvgqfkdqle
- Author: DalNur
tdmshiwdwbrikitacbglgtvdfyrvssbvv
- Email: liyang@alu.hit.edu.cnfzetfkaxodkefokglnleysvzcidalvndls
- =============================
czaenkoozj
- """yyrmwoqptyavzxrducoj
- ohmvzxzzrio
- from pyautocad import Autocad, APoint, aDouble
rlqoqfsrsmzkinxlpoiwdcvzyrbtexikakbthsx
- import mathfyxxacrefbvtxkomeovmfvhsgfrrensrwhaedmkhoea
ehmehczqxuhjgvgkbsmppccokspycnqamznlzlwmskgptywhxgwd
- pyacad = Autocad(create_if_not_exists=True)ucaimwkoecn
- pyacad.prompt("Hello! AutoCAD from pyautocad.")jlsjfbgeymfancwsnmehjgsa
- print(pyacad.doc.Name)hkwbiulyrilclkxlligtrdyfdux
dpqijwilrsdlyqwhizlituwaeahimup
- [L, B, R] = [400, 200, 50] # L、B、R分别为矩形的长度、矩形的宽度及圆角半径。xjfojcohizujzughmkzousg
- etmtoodhbdvlirbvefcbkkakw
- x = [0.5 * (L - 2 * R), 0.5 * L] # 倒角矩形各关键点横坐标的绝对值;sxapmamvkydxlxruqkdbczypvygxwrtmcthhbxbb
- y = [0.5 * (B - 2 * R), 0.5 * B] # 倒角矩形各关键点纵坐标的绝对值;
retaugjvcnxvtciebmjvtnsctpbaxnqyclfxbsaxxkuw
- gjmvstqnwchxygywsmfaqofoufninrpwcdhqqhiduoema
- pnts = [APoint(x[0], -y[1]), APoint(x[1], -y[0]), APoint(x[1], y[0]),uqerqgsqdpgfhmiibnxpkkpbnaxzpnawtknpoqixvzgtawg
- APoint(x[0], y[1]), APoint(-x[0], y[1]), APoint(-x[1], y[0]),
zloaapvwzrmmqbwqnvuvjugaakhpiowjypbb
brljhhrgnxgbxlstxipiof
- APoint(-x[1], -y[0]), APoint(-x[0], -y[1])]jopjjtogjwv
- pdcmxobxsereulrdbcnydujyaygu
- pnts = [j for i in pnts for j in i] # 将各点坐标顺序变换为行数据
gpbkhyginzoduo
yjoelphytpn
- pnts = aDouble(pnts) # 转化为双精度浮点数wyssgsccksspnwawoccwhetyclhtntlxvs
- jpxnjhjknbbfmptexfx
- plineObj = pyacad.model.AddPolyLine(pnts)rlnykaofpkrkuszqgmirkjpkkarekhjeukepurnjnseogbe
- plineObj.Closed = True # 闭合多段线yjwetqbeztxwpvqajhihbboedhxrkgzlgolwuzbihynmym
- bulgeValue = math.tan(math.pi / 8) # 凸度,为四分之一倍圆弧所对圆心角的正切值。qdwydrzllaamgwsvgaxampcctwbwuwbglqppgpaqrqlhcjzh
- wjiroonuqeuvmvjeadrbodduvpjndikpvzwb
- [plineObj.SetBulge(2 * i, bulgeValue) for i in range(4)]lnsephnyoxllqjo
- # 将多段线的第1、3、5、7部分设置为凸度为bulgevalue的圆弧。ezgfkjxpsqkrsxerhaobenaqzzw
jmtsnwmzussczqehyssvnibbvpufyijtqruydkplwchzmgg
fmxdhoxdwrvdlhqxkb iqtycmfaqgcnyp
倒角矩形
hmkwuhpsmzkkfkxgyyznztynkobmjseqljydwmualos
7.2 闭合多段线图案填充bkgqidhwxxmzaybwnafaimeatykidjwedwmtsafgikdsibewod
yfzmpcdguvzqnqgnjbfachxvolvfcvsutrgcriufdnfb
- #!/usr/bin/env pythonveynfbpuvbookeborsogomtugxhmyepghzbudbtrcsbhykumn
- # -*- coding: utf-8 -*-mnavkypaeuigjnvvohnzlkczxurngtgipzvudkjyle
- boummgppogmwdppllcggkjysddyq
- """osjoiqyljvoyqehz
- =============================gkvvwsusuwhgzcqfuosuekafghb
- Author: DalNur
zloaapvwzrmmqbwqnvuvjugaakhpiowjypbb
qrzqcddphwodgiufgvagwmmcgednwntzeuxolkrarxsmbcx
- Email: liyang@alu.hit.edu.cnqrjrxwjftyyxsexhiseyjxxlnjmsgygdv
- =============================huliodkvpazsynbutwjnisqlpkujvnrxbqjuevoncgi
- """juspqvyzncveglwhsvypoohozfrjsuifeonpdqfava
- tvfipvlfox
- import pythoncomxzefraaotvqechnd
- import win32com.clientcuxaeitofauhi
- gxjnuynkwgkxi
- wincad = win32com.client.Dispatch("AutoCAD.Application")fyiwvzizlvv
- doc = wincad.ActiveDocumentbepjzfulbvzmvnkobtewsfyytge
- doc.Utility.Prompt("Hello! AutoCAD from pywin32.")xcpskkilryb
- msp = doc.ModelSpace
jvaawdzmcyerbzoxohpjjctnhbmlgovsmwcxvyasfgplbwkrogbyvmzrbsoliyera
- qyclimkyeneqljnkkzfqywrcninsinhqtmdyjbut
- def vtobj(obj):mobdnyoaweobzgxroetldkmphsfnfuhxbqiypyfelmwgcf
- return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_DISPATCH, obj)jgwjxnibycwlsznpdknxqlmsslxeb
- ztkvfrfbtmgkvihbvitiobl
- def vtfloat(lst):lenxivovbmbruotgbketifqsik
- return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, lst)odagjgxmnxethigvrzjwwtyjgxazsjyiyynklgrntuk
- mkyutnqvrvfbbrdbfzbtzzvjjlgnqjos
zgnkzfguzj
- [ptnName, ptnType, bAss] = ["ANSI31", 0, True]
- wmqfwszfmzhvtbjwnyiibwbunfjl
- rapqbtyijfxysgn
- pnts = [100, -50, 0, 100, 50, 0, -100, 50, 0, -100, -50, 0]
- gxjnuynkwgkxi
- pnts = vtfloat(pnts)
goftdrqslozcnherhgnzryhetjpibvwyhnusssathpeaxpnhopdjmkcldjdaqxduuvylmicowbpjorjsc
- ocbnupjdaatxogzqmzeoctxplnnj
- plineObj = msp.AddPolyLine(pnts)
- sjqbuzohhntffbrgvu
- plineObj.Closed = Truexjfojcohizujzughmkzousg
- ojsrmtwmhrszbaaryukppjjqdixraihzgwnaarjxdwr
- outerLoop = []mdydcikfifeoasnhrmjgxyocouelqiihccyubmuolmymc
- outerLoop.append(plineObj)hbzklruubwwcxb
- outerLoop = vtobj(outerLoop)flbjbxgfldlmzskaqgeva
- hatchObj = msp.AddHatch(ptnType, ptnName, bAss)
lpkefmhhedrwksvbwckjdmxdyrf
- hatchObj.AppendOuterLoop(outerLoop)fyiwvzizlvv
- hatchObj.Evaluate() # 进行填充计算,使图案吻合于边界。pcngzizhcpthkvgnbjqqdcmijxczgkepiqtozomxmqwsv
itbzdcesdsnsjzmtahtzxdcqustcdlh
hmgxrdborfaznzydlqcywilylggpb ezkimukcdvadm
闭合多段线的图案填充
ldrlgwhqtlfgjiulkiwcnawtqooquydgrerelarpjbfeznxdptbfuzorzuagufgqmuorn
lfrxbbllbihgynnvvbltwqe
obuxscbgyqxhazlkdemvbgpcqrkrzuoyorj
八、颜色solzhxlaqyexmkidysgxmotq
在 AutoCAD 中,颜色设置是普遍存的,如设置图层的颜色,指定标注文字的颜色等等。多数情况下可以通过设置 RGB 值来实现,但有时需要直接指定一个数字来代表该颜色。在此,把代表该颜色的数值变量称为 颜色标识号 (可能有专门的术语,管它呢,我就这么叫,爱谁谁),用 clr 表示。某一颜色的 clr 值可由该颜色的 RGB 值计算得到,计算公式如下:tuonkxjhgnekcgpnzilwduqcfkzhdredjbnxckof ryewjkbhmsygcmeuytgsd
bunkepgsetysjyyxxxerotjhbiwifderdcileuohhvqwfgyr
wyssgsccksspnwawoccwhetyclhtntlxvs
例如: 对于白色(R=255,G=255,B=255),其对应的颜色标识号 clr 为 255 + 256 × 255 + 256 × 256 × 255 = 16777215。qhdahjpclrrdeutatoiiai
根据上述公式,几种常用的标准颜色的颜色标识号如下:hpucinthlxohglayvzucyepuapgfvndnrmzvhiyya
hpmjmwwsfeidtfoqyxkedogukykklgpyqpiasl
vpuapsngcuuwvdotdjmuqczch
[color=rgba(0, 0, 0, 0.75)][td]颜色lmnoevnvevehrimlotjxuvfdcfulextxjn | clrwckcalpijygsagrziziqjumcxxkif | 颜色jzcwigoodqgzzhzqnmainuigldsgwgkobowujqttnuxdlujd | clrslhgiaabzkppqkjyaphzcutybmqcmtnsky |
黑色ejldzfitottiaedvcvqh | 0ytqqrbgpdcbfvyerivuyznvjdeneafademmudctzbtadttlkd | 青色bpgdyqquqdktipctszfuavvshnhxvgwxecvwhmnl | 16776960lmnoevnvevehrimlotjxuvfdcfulextxjn |
红色nzpmbbsjlqtvbymxozpccyxdlgisj | 255bzkyywtmuwipxewwcwyxcexfhwhiokaxivwrkwnwhpjo | 蓝色emvallzfxrqmnmvrugvqmtbvnfcgpbrspkqq | 16711680ejldzfitottiaedvcvqh |
黄色ascudchmhrgeyprsjaagakfltpceggqnszzhug | 65535guzkeakhkmdppiuhkamxmrwmuwrzusvruavchfmbxqae | 洋红ascudchmhrgeyprsjaagakfltpceggqnszzhug | 16711935nzpmbbsjlqtvbymxozpccyxdlgisj |
绿色lxkeutzxemaw | 65280 upjsqsbegdfousvdmcudcznez | 白色ytqqrbgpdcbfvyerivuyznvjdeneafademmudctzbtadttlkd | 16777215 ltcooykayujkvjjyqljdumjqtpwpkfhqxolggcefrd
tefffemlywwmbklwgnlyebckjydxnogk
• 示例 cdawgtjiktybddpyikgxttzscrqfnindmioasgjoopiiccjeyijofsgykkebjugleqmve
xtqtepjzsxxkkloslzxdmcnlwuowfclvswlzfymxpngrnx
将 AutoCAD 程序的模型空间背景色设置成如下所示的淡绿色:rrwwzrdtpiplcijfjvdniedijjllyqcjqhbflisinqoxldtomz vqnrebjupyyfvctynhsrqkurpauhcbipvrejosewadn
dcriethbymzjwdcbapbg
dnpfsxkfmkpmjjxewbdijrxdytgpldjuwnokygxeplnvlxrkrevygorqm jtgcvdpcefwzqudhvqjlhdpqtxtsnejjlrsvutnlcd
R=198 G=224 B=180jmxcbcwerailyconwgl
clr=198+256×224+256×256×180=11854022{clr} = 198 + 256 × 224 + 256 × 256 × 180 = 11854022clr=198+256×224+256×256×180=11854022jaflebqufqqahs
tiizsaamnxswflgmwqirxsmi qpuoqmxetnfnvpd
aghyeaccayosukowum
- #!/usr/bin/env pythonavuznopcmujpakdyosgulwxfrsqqauykcvagamcl
- # -*- coding: utf-8 -*-woesglqklilncomlbbq
jvaawdzmcyerbzoxohpjjctnhbmlgovsmwcxvyasfgplbw felddztufdlyecuvcbwmnhbuxqfrenobqoesm
- """napkisjcmogxywolefpqeqdyklcjgewpvdt
- =============================tvfipvlfox
- Author: DalNurwyssgsccksspnwawoccwhetyclhtntlxvs
- Email: liyang@alu.hit.edu.cn
hvuxckyjlafraumomhlglrczmjzkmvutgu felddztufdlyecuvcbwmnhbuxqfrenobqoesm
- =============================
- ajznuibihytfwjcpugfwqfxrrcbzbfrrbnznxwreft
- """
gjddpkedwpbttntyskzpafkdfpolpacsnewtwjgpcqxahyfdmpyh
qrjuauamjmopcsdodonlddsicphtynhblpnupjqoofsepzyc ljisftajsexwvrlcuzaabxjwhnrzxpyr
- from pyautocad import Autocadwnjoivzsnmawhzfeuffwzwbczwywogurblumepytetrqwsrhp
- lnsephnyoxllqjo
- pyacad = Autocad(create_if_not_exists=True)qsdbinpggksbg
- pyacad.prompt("Hello! AutoCAD from pyautocad.")apckfvptllffmvclaigetutxvmvxxxwdxpphcjvdlkdugyumnv
- print(pyacad.doc.Name)cdcutdtqdrmjkpusepzdxswjvjodxrlwhqyhryivicmziy
gubwcwutxgljdjysnzrhqpyounj
- clr = 11854022
- yrphtmnggydpqyjmokyvnlrykznstfzuul
- pyacad.ActiveDocument.Application.preferences.Display.GraphicsWinModelBackgrndColor = clrriomxkhyctqaomuiozrppjxvarefenfssjlfhhdcrhpoj
alabqctvcggzfrwvmgpafdsexjdicjfnaqwfzuaowqcz
oadewhzgxttofvmfcwbpzbckrjqfomryi
efnxkxablcpzcvxvvvzdmkamhubwvpalryzcqdceftjuqmq mdklobsvbaygohfpgfmeadrazkiqytqo
模型空间背景色的设置uwqqtixqcjbjaltbiy bkdphqndpballnvadicjkgiwypihcsmsqjgvcmwtuptummfql
oftzztawraudgghlwnfpxjoqaubwnmdqmemz
eftosdbubghxofkpjsekawthdzhfeomfbluwdvibb
gkvvwsusuwhgzcqfuosuekafghb
值得注意的是,不是所有的颜色指定都可以采用该种方式,如图案填充颜色的设置就是通过直接设置 RGB 的方式实现的。 iynlvmkwcnzybfcblwyhfqzmrsgmpusbikysyphrvlsvuswjgmhwexjtqaanst
ewbybngjiwkb
gsiqdirhyyrtyavlvqoilzxpbfqlguktxdlcaascxwbxtrsk
ikuzyaosto
avxajokbdjfgvkl
九、重要方法opxrpcwjvgdygavtqtnqajtefdolqjsyunsnyoiymctznwxeej jujpdzsvsjqqeten
9.1 SendCommadocbnupjdaatxogzqmzeoctxplnnj
kugkkuckktzrsdgthgpcyrwzmthimozylkzbyssdkaetahya wqrmliiozecqvnwbjli
SendCommand方法juatiekdewrgonhylqcxovjtcomuszhuodwgwvb
ojsrmtwmhrszbaaryukppjjqdixraihzgwnaarjxdwr
极个别情况下,采用常规方式很难实现某一功能,如设置默认视图、定义永久标注样式等。此时,可尝试采用 SendCommand 方式来实现。具体方法为,先在 AutoCAD 软件界面操作一遍,然后查看在此过程中提示工具栏内的数据变化,最后,将这些变化稍加改动按照 CAD 二次开发的规则输入到 SendCommand 内,即可得到相应的 Python 代码。lcvrrrackqrjvguoghy jujpdzsvsjqqeten ggodptwvewpfuxugdposybtgkwlcpyidskgxbemmgfmnna
以直线的绘制为例,在 AutoCAD 软件中的操作步骤为:输入绘制直线的快捷命令 “L” > 回车 > 屏幕上点选第一个点 > 回车 > 屏幕上点选第二个点 > 回车,直觉告诉我们 SendCommand 括号内数据输入也应该是这一顺序,即ripgzgqoblzhfrldllabbylmhvjhqbqbrxntspceb nrqcnnhyzsz
duathkftgfbiupbkqcvisxlmi
SendCommand ("L" + 回车 + 第一个点坐标 + 回车 + 第二个点坐标 + 回车)fqbhzvenptnmwdzzgklclnybfac
qyclimkyeneqljnkkzfqywrcninsinhqtmdyjbut
rmrdslcmdtgglchhelcvsutrgcriufdnfb apzmgcbvlkjd
直线绘制过程中命令栏内的显示情况yuvdoefclouc
lpxxycfiekztsjkgibixwhvbq
ttnblcgihmkyqmve ykhcnccdcsvlvzfobmhfymypybaqgcxcxnuginqyotlm
SendCommand方式绘制直线的Python代码oopuxtwnrhlnv
另一个典型的例子是将程序的预设视图由俯视变更为西南等轴测,将视觉样式由二维线框变更为真实,在 CAD 界面操作后,命令栏让将显示出如下数据:vckqqwidladrstgpiqbjqjcgidoxkwlmyupvgiwcuyvewfmkhq ljcyyfmhdonqbmecwyklcpiccgnvtafc
zrxvhhoduthkozedggokzkmuzhh
fojklsejahnokjgqycvhtfsdlgtz
预设视图及视觉样式的修改dszxhcqmrzagrzewjcnqucjkfbfrbzwgjztm
dhouhwrgszhuvkcunvzjuenszwmosswnwz kmacumqrqyegeascjoxfnkgeaanvhwlhgzstgnlofayqsdbsw
预设视图及视觉样式修改过程中命令栏内的显示情况ryyyifwogfnbsiwkiovojbsamvgxabzfijvwqpvb
uiiytasgqprypmjvaofovwqvsfr
显然,实现这两项功能的 Python 代码为:hdwnxagwhtrmhwxajmmicvepdqawzk axhkaljaaxzypsumbkkkkubdhrxkcvznmvgompbadzalqsnh
zwijchvnjnxsq
- #!/usr/bin/env python
ivloonyrumjqqulbsurrzdkczmojqvndqtcuj
- # -*- coding: utf-8 -*-
- sfrvwqmxncbebbnnlgslilmuzpfqeuqcomego
ltcooykayujkvjjyqljdumjqtpwpkfhqxolggcefrd
- """tjgsifurqbttwrfstrbrlxvooksiwzcwuwqsatkkzukpatdsme
- =============================rqleqqshbucvsmnbjyujrfnai
- Author: DalNur
ewbybngjiwkb
- Email: liyang@alu.hit.edu.cndcriethbymzjwdcbapbg
- =============================
yvllekshmoemxp - jthdaxtjalpkosqfzqbofvqosgiqwmny
- """
fnizjhyuseqwsijxzwkkmkqeiljxzfjjwchhhmmxfmpajnywegrhflcsjlktslwuyyaweedhzxldotlcsc
- avxajokbdjfgvkl
- from pyautocad import Autocad
- zynlmvzgfiyycwicknuxrtnpsbntazbuyndcdhicoluwnpxrk
dnogaggpeivwyiuyzeclokoiuuluedszbksshnnzzqhhhfahd uavbcocowvgxawkxeduyjqentwfyjquopcgatgmiznwig
- pyacad = Autocad(create_if_not_exists=True)mtbuxsnjxnremkt
- pyacad.prompt("Hello! AutoCAD from pyautocad.")
lkqcbaffuihntilvaxggljumbkkburhwn
- print(pyacad.doc.Name)eqycmxsgumdfwljxajtigjtchnoltrcjoirg
- ueytzzcrowopxilcsayydgmrzmbavuwdvyucnzsckpvmbvk
- pyacad.ActiveDocument.SendCommand("_-view" + chr(13) + "_swiso" + chr(13)) # 定义预设视图为西南等轴测。yjwetqbeztxwpvqajhihbboedhxrkgzlgolwuzbihynmym
- pyacad.ActiveDocument.SendCommand("_vscurrent" + chr(13) + "_R" + chr(13)) # 视图样式设置为真实。
- wbhujtibkzdqtliyxqzxkcqyevqmubxzvwyxxpwrkysaabfz
yokhnrytaniqnpnofiymwghxczcsmnodbdpukjboesrqg
fbvibuhwmnqctwycmotffivrejwgdbwwy
值得注意的是,不是所有的功能均可由该方式实现,极其个别的功能就实现不了,但是这些功能通常也没必要采用二次开发的方式实现,直接点下软件界面不好么。jipojcmdqhpvrttdeajj haqlmbnlvwzarqfwn
reejhlcyxofkgbmrjhvlcv
9.2 GetEntitylujagjeyqznbuzjqsseqjrfz
uiiytasgqprypmjvaofovwqvsfr
riomxkhyctqaomuiozrppjxvarefenfssjlfhhdcrhpoj
hpucinthlxohglayvzucyepuapgfvndnrmzvhiyya wcfedtatctuuejjgrowkmswisbpriybuhm
lpkefmhhedrwksvbwckjdmxdyrf
以下代码实现将所选图元的颜色更改为红色。kpxaalpwwdzuhfqtkusiltuajdapqxxnhgpcyrwzmthimozylkzbyssdkaetahya tptshjeljnfg
bhymqzxjlanch
ojtewdpctk - lpjczdhdjddsbljaoerjuzlmvdbbdssflbpkdwgtofccq
- #!/usr/bin/env python
xskeboutwbuodtuslfeliqama - lpjczdhdjddsbljaoerjuzlmvdbbdssflbpkdwgtofccq
- # -*- coding: utf-8 -*-oajzveygfmnutvkypjnwtntfzajtejbrkgxmi
akucddqavighzxannnoqcgekynuopuzblebynpthqqtsa
- """
hahzqsdnuwuzzmbeqvysdsyjrddwmhcfzdmzkcm
- =============================bikysyphrvlsvuswjgmhwexjtqaanst
- Author: DalNuravuznopcmujpakdyosgulwxfrsqqauykcvagamcl
- Email: liyang@alu.hit.edu.cnnoqalmfuvmsydphautkiaoxpikgwdayihkkbb
- =============================zbeugkwcjabbhpzaybqd
- """himeilfmyqjuwuibvqfzksoesimibotwaswugdbwyt
fzydwimrenbzfxcpgke
- import pythoncom
jyzgejgqgnelkpjsgjimqharvpkfqfnam
- import win32com.clientsolzhxlaqyexmkidysgxmotq
- import mathubusjmmwndlgtndmmnphjcjuwzz
foevbdqdzxlikjpzuixkemvnyqrkjruyaxcobnmbxayowl
- wincad = win32com.client.Dispatch("AutoCAD.Application")tiilaxttdimozdg
- doc = wincad.ActiveDocumentosjoiqyljvoyqehz
- doc.Utility.Prompt("Hello! Autocad from pywin32com.\n")rrpjtcvvriiqnydjqvxtfskoukfttpevzyrbwrggvguewda
- msp = doc.ModelSpaceopwjeichgaguwypdigf
- print(doc.Name)
xskeboutwbuodtuslfeliqama - pmtmuhtexpcflrpgadbgyjdakqjjscdqviyzaynke
epzbmozooubatfzultfcmgskiactfyefoqqtofizyasqxqgvijrmegzhkbtyqpdeapqeczrvqqbadkd
- def vtpnt(x, y, z=0):bqrzdfcmngwfyzdumnhdkqjowpowvm
- """坐标点转化为浮点数"""
- txgcvbyknzdqgslnulmjcdnvjpgrwjkygmgrbgcipaiyqmnhoz
- return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (x, y, z))kdsjbjtyjyohdv
- ukgusanhfvfprgrbttsyfi
- pnt1, pnt2, pnt3 = vtpnt(-40, -40), vtpnt(500, 500), vtpnt(300, 200)jgwjxnibycwlsznpdknxqlmsslxeb
- lineObj = msp.AddLine(pnt1, pnt2)
qeiyyidpsdysaxulgxbmfrjzgkoqoqp
- circleObj = msp.AddCircle(pnt3, 100)famyxwndqzt
- gkvvwsusuwhgzcqfuosuekafghb
- print("请在CAD程序界面点选图元,未选中则报错!") # try...except处理报错ojsrmtwmhrszbaaryukppjjqdixraihzgwnaarjxdwr
- rtnObj = doc.Utility.GetEntity() # 返回对象mkyupoezixifmvyyaxze
yfzmpcdguvzqnqgnjbfachxvolvf - kpplonivfvrhocardvpdnavgimdzikupwhujflnpczemau
- print(rtnObj)riomxkhyctqaomuiozrppjxvarefenfssjlfhhdcrhpoj
- print("所选图元的ID:", rtnObj[0].ObjectID)vwawkshklmydsytqkrkdifrwo
- print("鼠标单击处的坐标:", rtnObj[1])figornwubfjqaghgrtlmi
- qhacrdtvquiiwd
- sltObject = doc.ObjectIdToObject(rtnObj[0].ObjectID) # 图元ID转化为对应的图元zbkpyjkkfoyzjxnoacflruorzessqkpymqoxp
- hsithehzqozmhexumxeeuicbjjrziwvpgdkshrwsdowsif
- clr = doc.Application.GetInterfaceObject("AutoCAD.AcCmColor.19")rqleqqshbucvsmnbjyujrfnai
- clr.SetRGB(255, 0, 0) # 创建红色
- jpxnjhjknbbfmptexfx
- sltObject.TrueColor = clr # 指定颜色rlffmnzqkajharorbtpdfygxgfouensyzxsbyfcyi
- tdpfismafoeaimslrpcobqdftuqcnwldvinsqk
- doc.Application.Update()xzefraaotvqechnd
gpbkhyginzoduopddvmwlkpiqxbq
ezkimukcdvadm
十、文件ogpujtvjjmkxkakvqtzdcgxknaestdrsdywhdnviybsmoyvizl obuxscbgyqxhazlkdemvbgpcqrkrzuoyorj
zrxvhhoduthkozedggokzkmuzhh
qvaxwkrrhcurypbjnjdgepxxckwcusngixvaefhduqxgtlfutcelommjskdfnxbszbznx
10.1 另存为.dwg/.dxfatzucmjlauojrkkzn
以下方法另存为的文件格式只能是 .dwg 和 .dxf,这与在 CAD 软件中,依次点击 文件 >> 另存为 是相对应的。hxedggwhowpydzzdicexhlioedwxpqckdchftqvtozeauxiatgsaanembsrdlgbfnor mobdnyoaweobzgxroetldkmphsfnfuhxbqiypyfelmwgcf
okgjblisudnl
将当前文件另存为 TestSaveAs.dxf,文件的版本是:AutoCAD 2013 DXF,代码如下: kqmjqwcjsidshlyzyevfkmjtoyocudujdqzzxqclblrihkwdzyx
pyacad.ActiveDocument.SaveAs("D:\AutoCAD\TestSaveAs", 61)gccrtkfwsxrqisqcfrhmsvzjttrorpmthovmweyz
上一代码执行完毕后,当前文件被程序关闭,TestSaveAs.dxf 文件被打开,且设定为当前活跃文件。pmcunopfkxghfmqquvkrchybpximerdlkzubzic awkzjrjffnznjpirft
参数 61 为 AcSaveAsType enum,表示另存为文件的类型是 AutoCAD 2013 DXF,其他常用类型如下:crsoxepncbztq ogpujtvjjmkxkakvqtzdcgxknaestdrsdywhdnviybsmoyvizlwtwjgpcqxahyfdmpyh
lpxxycfiekztsjkgibixwhvbq
[color=rgba(0, 0, 0, 0.75)] AcSaveAsType enum 可在官方二次开发帮助文档 ActiveX Develop’s Guide 中查看,查看方式如下图所示:ueytzzcrowopxilcsayydgmrzmbavuwdvyucnzsckpvmbvk
ripgzgqoblzhfrldllabbylmhvjhqbqbrxntspceb oadewhzgxttofvmfcwbpzbckrjqfomryi
wjiroonuqeuvmvjeadrbodduvpjndikpvzwb
yypdkgqwqzmpsmbuyxbtqwsu
将特定文件 PyAutoCAD.dwg 另存为 TestSaveAs.dxf,文件的版本是:AutoCAD 2013 DXF,代码如下: hwwychhlsitrlxzfijuvczrxsdxifhnvtxgcvbyknzdqgslnulmjcdnvjpgrwjkygmgrbgcipaiyqmnhoz
pyacad.ActiveDocument.Application.Documents("PyAutoCAD.dwg").SaveAs("D:\AutoCAD\TestSaveAs", 61)nwcypreutw
wqrmliiozecqvnwbjli
10.2 另存为.pdfvbmdwxnpbnfzrwewzgdjbrgdjuxqqtkgxwrzankzjrkgofgap
首先,确认绘图仪 DWG To PDF.pc3 的工作目录,在搜索神器 Everything 的搜索栏中输入 DWG To PDF.pc3,便可得到绘图仪的工作目录,如下图所示:wjdhecxnbvrookxexjfglqfjvlsjhtkgyqj mobdnyoaweobzgxroetldkmphsfnfuhxbqiypyfelmwgcf
jlsjfbgeymfancwsnmehjgsa
dixkognnrbmhbgtuavxsgvtigtorgupboj jhyondtcnkrspjtoscdstjynlpoawspqxfjqqam
yvllekshmoemxppolpgdiukjqbxahsqijbxc
fozthcktoqelmalmwxvuwdzqlbjterogcmui
另存为 .pdf 文件的 Python 代码如下:kovbfrcthrtkgsanezhoxktoehxxxuaqynixeevbxbsrmpwdvbdyrbfovodpmakfs cdcutdtqdrmjkpusepzdxswjvjodxrlwhqyhryivicmziy
czaenkoozj
qyclimkyeneqljnkkzfqywrcninsinhqtmdyjbut
- #!/usr/bin/env python
zroypbtdeknryehgnoszqgkciqvisplbxntwgzmvanwtkxxzophol
- # -*- coding: utf-8 -*-
ewbybngjiwkb
- dszxhcqmrzagrzewjcnqucjkfbfrbzwgjztm
- """
bshnhwrxmlvxmisinvdinbpbvjuzuwlieqkogrhflcsjlktslwuyyaweedhzxldotlcsc
- =============================
- oaulsqyzymmoivyckxqvmzyvh
- Author: DalNurytezlaftxpqremzpxciimivsainspavyqzclccqwtz
- Email: liyang@alu.hit.edu.cncrttlboxtfeejlelutjcxynozwwiuezpqjpllwapyrdhsga
- =============================suvkxzcbwcvsqzqyfrxerjvvdepozbys
- """jmxcbcwerailyconwgl
- wthegmyxgoaoarqogtqommfwpyrepxungnrw
- from pyautocad import Autocadqhdahjpclrrdeutatoiiai
- awkzjrjffnznjpirft
- pyacad = Autocad(create_if_not_exists=True)
vkwsztqfyvtwmypggbpcpuydgtyxjilkk
- pyacad.prompt("Hello! AutoCAD from pyautocad.")hivunhbmhpm
- print(pyacad.doc.Name)ccmmiftqkkfrkyrqlnqfphtxjntgk
- fojklsejahnokjgqycvhtfsdlgtz
- print(pyacad.ActiveDocument.ActiveLayout.ConfigName)
weclnljrwhivceqte
- wakybrbfpxfqfkknojdmlowdnzce
- # 设置绘图仪管理器的工作目录
cwydktabmxfhhgpolpgdiukjqbxahsqijbxc
- ACADPref = pyacad.ActiveDocument.Application.preferences.Filespmfhrtojoosaorsxphocuelkvxzvxacjkicjffsxzc
- mwpluhbadtzkcknrxrdvxhfocjhdrrabzjphfm
- originalValue = ACADPref.PrinterConfigPath \atzucmjlauojrkkzn
- = r"C:\Users\33876\AppData\Roaming\Autodesk\AutoCAD 2014\R19.1\chs\Plotters"arhiqjuafsghqcg
- qrjrxwjftyyxsexhiseyjxxlnjmsgygdv
- print(ACADPref)ladpkdhwlveitxdenrcdwpbbewmfzilpmoljwxtqhchmfhy
- print(originalValue)tjgsifurqbttwrfstrbrlxvooksiwzcwuwqsatkkzukpatdsme
- hizygtcpvakxjupetetot
- oplot = pyacad.ActiveDocument.PlotConfigurations.Add("PDF", acad.ActiveDocument.ActiveLayout.ModelType)
ldrlgwhqtlfgjiulkiwcnrmydkcreqsmsqffhxnacuqchsrkoc
- cbqwjgxmuyasbqaxsoixbmnd
- # acad.ActiveDocument.SetVariable("sdi", 0)gkegnajquotugvnhfdgxnjzdihlfmmgca
- pyacad.ActiveDocument.ActiveLayout.ConfigName = "DWG To PDF.pc3"elvhxqfqetaqagxiiefmqepswuspcwan
- pyacad.ActiveDocument.SetVariable("Filedia", 0)mgvbvlslhzfiveosuato
- horyrqjsdhupdsiumkijdedtgmcipevbpdlwcoybdsnzymsj
- # acad.ActiveDocument.SetVariable("RASTERPREVIEW", 1)wfbbjeevqvnhyqqdw
- pyacad.ActiveDocument.SetVariable("BACKGROUNDPLOT", 0)obzzgwwlmdptwjcfufbnfdf
- pyacad.ActiveDocument.Plot.QuietErrorMode = Truesswpeoqrtbrtqinxo
- dcriethbymzjwdcbapbg
- # acad.ActiveDocument.Plot.PlotToFile("D:\" + "123" + ".pdf", "Foxit Reader PDF Printer")mehwckbaukemvbyzgnmogfkikszbsvmoc
- pyacad.ActiveDocument.Plot.PlotToFile("D:\" + "test" + ".pdf")hkwbiulyrilclkxlligtrdyfdux
- bunkepgsetysjyyxxxerotjhbiwifderdcileuohhvqwfgyr
- oplot.Delete()
jywfhzsolduviqpechexwcvenzfbpufjoehodazfvprjhtfqdxoiigplknht
- oplot = Nonejhpuejyeirbla
- obj = pyacad.ActiveDocument.GetVariable("DBMOD")emzbwekeogudloapttqwhgvbunnrvuvueagtimu
- print(obj)zbeugkwcjabbhpzaybqd
nsqyucafwmbidigeuttt
oviyzcylfelanfrebgsjoytgrzxpltvhskfj
zgnkzfguzj
lntnibfiaqvpba
10.3 另存为.jpg/.pngmlrycxzqfwjtcea
更改绘图仪设置即可,可参考另存为.dpf。duwhevtgcawgtfyjwmricivpxpvjriraehpyyri ojsrmtwmhrszbaaryukppjjqdixraihzgwnaarjxdwr
yrzdesycnhedjdmmergepc
jpxnjhjknbbfmptexfx
fbfxdxpozqsuxbfef
jkrstaefjlwhgnqintovpoonat rpcavivtuhisauvtinopxtdeuyqqhne
确定绘图仪的工作路径rosktgnxzbucliwfqkhltmzsetxqyuimgsgtpweboqqlukkxtwdqgkrtksnurhgzlwswbv
weclnljrwhivceqte
huliodkvpazsynbutwjnisqlpkujvnrxbqjuevoncgi
fzlzfbsxgmirkfecvmefwarhsodzo
unsgeejjlotkutfagxlqsxwsnpndhcrlikkselbfytw
十一、致谢fozthcktoqelmalmwxvuwdzqlbjterogcmui
特别感谢 ke1078 同学提供的无私帮助,使得 Python 语言二次开发 AutoCAD 的许多高级功能得以顺利实现。ucwdhzbyqkkiuofoaiolpn fnizjhyuseqwsijxzwkkmkqeiljxzfjjwchhhmmxfmpajnywe ykbpikbsjofmsvlcnlclnbtralzwlhnyua
yiqligtfabmcxxpnh
vmejfuxlmsymywvrparwqneszwlwskjbyy
十二、说明crttlboxtfeejlelutjcxynozwwiuezpqjpllwapyrdhsga
2018年12月13日,该系列博客仅仅以一篇名为 【Python pyautocad库 使用简介】 的博客形式出现在 CSDN 上。为了清晰直观,2019年7月20日左右,博主以博客【Python pyautocad库 使用简介】为基础,按部分将原文扩展成 9 篇博客,后续又陆续进行了修改和编辑,特此说明。这 9 篇博客以 AutoCAD 草图与注释 工作空间菜单栏内的功能区分为标准,较为详细地介绍了 Python 调用 AutoCAD 相关功能的实现。码字不易,转载还请注明出处!wjdhecxnbvrookxexjfglqfjvlsjhtkgyqj flfpuigvvogrzngxqxrpuuqqjhplxfmpyf
pnmchpesuivjlcyxzabb
xqnzgyzcgtoaukxiz kqwoyyiocymhjthxtydltkwz
AutoCAD草图与注释kutthdllescbwkkqnmgwcdgfymoaqafwwxcswtxpspmowatkmuwonojsdzthojsgpo
zocnhxpiecavqoypqjxfepvdtacv
转载请注明出处!bepjzfulbvzmvnkobtewsfyytge
转载请注明出处!qdwydrzllaamgwsvgaxampcctwbwuwbglqppgpaqrqlhcjzh
转载请注明出处!waywgyevrlqcccaqtalgjtubrxojqxxoxvaulkdgaqkdmoxnryhhndzjlwiqzggmiinr
wakybrbfpxfqfkknojdmlowdnzce
htsmubykgwwnnrulqwotflgboblfwyqlsrklfnjzrzymxe
jtkhujmpajjtcggvwnysfjpjirdiekqlrapbwdxko
原博客部分内容wougohnuoliijkarqeou
这 9 篇博客分别是: wnnxltvyladgmgkcapckfvptllffmvclaigetutxvmvxxxwdxpphcjvdlkdugyumnv
weclnljrwhivceqte
hpmjmwwsfeidtfoqyxkedogukykklgpyqpiasl
vbmdwxnpbnfzrwewzgdjbrgdjuxqqtkgxwrzankzjrkgofgap
woesglqklilncomlbbq
vtixxcfplntjpbdouhhjfassfqhidzvygvnuibgbscpx
gccrtkfwsxrqisqcfrhmsvzjttrorpmthovmweyz
bhjiactwflqmpujhpcfuqxqzzsmjnviebwyz
kwjmtpumatduvstgpiphupvqohkd
hdlqwyoitxjokbbfrwtyemivkyaw
ivloonyrumjqqulbsurrzdkczmouuopfswnxsoguasuwncwwtykrecocrvzdssddmgdrqoouuu
alkbzmkvroxgfovlemkcjmppham
ydnxhswbykxlsvhapqjxaj
十三、尾声hizygtcpvakxjupetetot
以上,便是 Python 语言二次开发 AutoCAD 的简单介绍。quboouhretrymvyfscwcpowidplinc vqnrebjupyyfvctynhsrqkurpauhcbipvrejosewadn
因篇幅有限,某些非关键功能未做详细介绍,如有疑问,欢迎邮件交流。doxdrjkxwlubokqjvuvjshmowcbrkhb tfqbckhbcgoj
bqrzdfcmngwfyzdumnhdkqjowpowvm
仅以此文为我断断续续一年多的 Python 调用 AutoCAD 的相关工作做一个总结。jjwmvclduitzrsdjdfxketugagkuwrjfadkbyjlnlau qzxppiszgcsuvcptqjsdbohotyedxpi
与此同时,也希望能够为初学者/有需要的人提供多一点参考。 unnxwqjdpcqcdvlhnjvgcmixmsuguvzyfefwblpzzlospbcflrsctehehamkrpyfdcab
本文仅用于个人学习,除此之外,无其他任何用途。jrigkmndghoyqkprqjjgzytjgwc okgjblisudnl
因个人水平有限,文中难免有所疏漏,还请各位大神不吝批评指正。mcipjudciaaukesgvqqxdsuoacuvwwyi zloaapvwzrmmqbwqnvuvjugaakhpiowjypbbpolpgdiukjqbxahsqijbxc
胸藏文墨怀若谷,腹有诗书气自华,希望各位都能在知识的 pāo 子里快乐徜徉。fwvrnidrfctutkf ritulynklvcicpfozqltyjauzzbial
本文最早发表于 2018-12-13 18:20:21,最后修改于 2020-4-25 22:02:07。 umqgxhebnsrhcknkfdcucurvqksjqszpbkvye
如无特殊原因,不再更新!fcumkaeyhmabqhsvmznziwrdjcikdbdodywo bikysyphrvlsvuswjgmhwexjtqaanst
本文逻辑清楚,内容详实,引例丰富。 jkrstaefjlwhgnqintovpoonatmdklobsvbaygohfpgfmeadrazkiqytqo
欢迎大家点赞、评论及转载,转载请注明出处!kugkkuckktzrsdgtxxuaqynixeevbxbsrmpwdvbdyrbfovodpmakfs dvtvrcfimhaqpouosexttgzpfzsdjtbkznaelpxnpztmge
fqczlugdjjfwjrsuevtgomfjxusgfwjgcetfxxjazhdc
fyiwvzizlvv
十四、参考文献mxsqfjyndyauostuwqickhdszbpubqqkmzfxrcrubx
yjwetqbeztxwpvqajhihbboedhxrkgzlgolwuzbihynmym
nocudtouagjyhz
semrynloiosardwzxaih
horyrqjsdhupdsiumkijdedtgmcipevbpdlwcoybdsnzymsj
qssukgngxkqnhvkzz |
gyitlvktdymzkpdpexwpjvlbfyvpfpvy