日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

利用python控制Autocad:pyautocad方式

瀏覽:3日期:2022-07-23 16:24:00

發(fā)現(xiàn)pyautocad模塊:可以用python控制autocad的包。今天把文檔中的重點(diǎn)內(nèi)容摘錄出來(lái),以后繪圖、計(jì)算大工程量、或者識(shí)別施工圖的時(shí)候時(shí)候也許可以用到。

一、連接cad

pyautocad包可以用任何版本的cad進(jìn)行操作,實(shí)際上接口都是一樣的。文檔中首先給出連接cad的代碼:

from pyautocad import Autocad, APointacad = Autocad(create_if_not_exists=True)acad.prompt('Hello, Autocad from Pythonn')print acad.doc.Name

第一行:自動(dòng)連接上cad,只要cad是開(kāi)著的,就創(chuàng)建了一個(gè)<pyautocad.api.Autocad> 對(duì)象。這個(gè)對(duì)象連接最近打開(kāi)的cad文件。

如果此時(shí)還沒(méi)有打開(kāi)cad,將會(huì)創(chuàng)建一個(gè)新的dwg文件,并自動(dòng)開(kāi)啟cad軟件(貼心)

第二行:acad.prompt() 用來(lái)在cad控制臺(tái)中打印文字

第三行:acad.doc.Name儲(chǔ)存著cad最近打開(kāi)的圖形名

二、ActiveX interface(這個(gè)到底是什么東西)

可以利用ActiveX interface,python中儲(chǔ)存的autocad對(duì)象中保存了一些可以簡(jiǎn)化操作的自動(dòng)化操作(可以迭代對(duì)象、搜索對(duì)象等等)

三、用acad.model 對(duì)象繪制簡(jiǎn)單圖形

acad.model對(duì)象是用來(lái)在圖形中添加圖元的,先來(lái)做一個(gè)簡(jiǎn)單的功能,在兩點(diǎn)之間畫(huà)線,以一個(gè)點(diǎn)為圓心畫(huà)圓

# 已經(jīng)導(dǎo)入 APoint 類(lèi)p1 = APoint(0, 0)p2 = APoint(50, 25)for i in range(5): text = acad.model.AddText(u’Hi %s!’ % i, p1, 2.5) acad.model.AddLine(p1, p2) acad.model.AddCircle(p1, 10) p1.y += 10

1、循環(huán)中的第一行用于添加一個(gè)Text,參數(shù):(u’%s’ % text, x, y)

如果后面不需要操作AddText對(duì)象的話(huà),只是實(shí)現(xiàn)在cad中創(chuàng)建一個(gè)Text并不一定要?jiǎng)?chuàng)建變量,直接調(diào)用acad.model.AddText()方法就可以做到了。

2、acad.model.AddCircle(p1, 10) 畫(huà)圓,同理

3、可以嘗試更多的 addXxxx 方法,由于文檔中并沒(méi)有寫(xiě)輸入變量究竟是什么,慢慢嘗試吧

嘗試過(guò)可以使用的:addPolyLine(

練練手:

用遞歸程序?qū)懸粋€(gè)在cad中畫(huà)一個(gè)螺旋圖,寫(xiě)的有點(diǎn)??攏?/p>

from pyautocad import Autocad, APointacad = Autocad(create_if_not_exists = True)p = APoint(5, 0)def recur(p, step, layer): if layer == 50: return p2 = next_p(p, layer, step) acad.model.AddLine(p, p2) layer += 1 step += 5 print step recur(p2, step, layer)def next_p(p, i, step): x = p.x y = p.y if i % 4 == 0: x += step elif i % 4 == 1: y += step elif i % 4 == 2: x -= step elif i % 4 == 3: y -= step return APoint(x, y)if __name__ == ’__main__’: recur(p, 0, 0)

畫(huà)出來(lái)是這個(gè)樣子的,還是挺好玩的

利用python控制Autocad:pyautocad方式

四、遍歷cad圖形對(duì)象以及訪問(wèn)/修改對(duì)象屬性

基本的遍歷圖形中所有圖元的方法:

for obj in acad.iter_objects(): print obj.ObjectName # ObjectName 可以打印出對(duì)象的類(lèi)型

想要按類(lèi)型查找出所有某種圖元(如所有Text對(duì)象):

for text in acad.iter_objects(’Text’): print text.TextString, text.InsertionPoint

或者也可以在類(lèi)型選擇時(shí)填入多種類(lèi)型,如:

for obj in acad.iter_objects([’Text’, ’Line’]): print obj.ObjectName

pyautocad還提供了一個(gè)比較

*文檔中特地說(shuō)明:按照類(lèi)型查找可以混淆大小寫(xiě),也可以只輸入類(lèi)型的一部分,比如查找”te”類(lèi)型就可以自動(dòng)匹配到text類(lèi)型,輸入”li“就自動(dòng)匹配到Ellipse和Line類(lèi)型,挺方便的吧~

訪問(wèn)對(duì)象的屬性

以下內(nèi)容文檔中貌似沒(méi)有寫(xiě),探究一下:

用dir(text)可以得出很多text下的屬性和方法:

# 屬性/方法 第一種形式(可以直接調(diào)用)AddRefApplicationArrayPolarArrayRectangularAttachmentPointBackgroundFillCopyDatabaseDeleteDocumentDrawingDirectionEntityNameEntityTransparencyEntityTypeEraseFieldCodeGetBoundingBoxGetExtensionDictionaryGetIDsOfNamesGetTypeInfoGetTypeInfoCountGetXDataHandleHasExtensionDictionaryHeightHighlightHyperlinksInsertionPointIntersectWithInvokeLayerLineSpacingDistanceLineSpacingFactorLineSpacingStyleLinetypeLinetypeScaleLineweightMaterialMirrorMirror3DMoveNormalObjectIDObjectID32ObjectNameOwnerIDOwnerID32PlotStyleNameQueryInterfaceReleaseRotateRotate3DRotationScaleEntitySetXDataStyleNameTextStringTransformByTrueColorUpdateVisibleWidth# 屬性/方法 第二種形式_AddRef_GetIDsOfNames_GetTypeInfo_IAcadEntity__com_ArrayPolar_IAcadEntity__com_ArrayRectangular_IAcadEntity__com_Copy_IAcadEntity__com_GetBoundingBox_IAcadEntity__com_Highlight_IAcadEntity__com_IntersectWith_IAcadEntity__com_Mirror_IAcadEntity__com_Mirror3D_IAcadEntity__com_Move_IAcadEntity__com_Rotate_IAcadEntity__com_Rotate3D_IAcadEntity__com_ScaleEntity_IAcadEntity__com_TransformBy_IAcadEntity__com_Update_IAcadEntity__com__get_EntityName_IAcadEntity__com__get_EntityTransparency_IAcadEntity__com__get_EntityType_IAcadEntity__com__get_Hyperlinks_IAcadEntity__com__get_Layer_IAcadEntity__com__get_Linetype_IAcadEntity__com__get_LinetypeScale_IAcadEntity__com__get_Lineweight_IAcadEntity__com__get_Material_IAcadEntity__com__get_PlotStyleName_IAcadEntity__com__get_TrueColor_IAcadEntity__com__get_Visible_IAcadEntity__com__get_color_IAcadEntity__com__set_EntityTransparency_IAcadEntity__com__set_Layer_IAcadEntity__com__set_Linetype_IAcadEntity__com__set_LinetypeScale_IAcadEntity__com__set_Lineweight_IAcadEntity__com__set_Material_IAcadEntity__com__set_PlotStyleName_IAcadEntity__com__set_TrueColor_IAcadEntity__com__set_Visible_IAcadEntity__com__set_color_IAcadMText__com_FieldCode_IAcadMText__com__get_AttachmentPoint_IAcadMText__com__get_BackgroundFill_IAcadMText__com__get_DrawingDirection_IAcadMText__com__get_Height_IAcadMText__com__get_InsertionPoint_IAcadMText__com__get_LineSpacingDistance_IAcadMText__com__get_LineSpacingFactor_IAcadMText__com__get_LineSpacingStyle_IAcadMText__com__get_Normal_IAcadMText__com__get_Rotation_IAcadMText__com__get_StyleName_IAcadMText__com__get_TextString_IAcadMText__com__get_Width_IAcadMText__com__set_AttachmentPoint_IAcadMText__com__set_BackgroundFill_IAcadMText__com__set_DrawingDirection_IAcadMText__com__set_Height_IAcadMText__com__set_InsertionPoint_IAcadMText__com__set_LineSpacingDistance_IAcadMText__com__set_LineSpacingFactor_IAcadMText__com__set_LineSpacingStyle_IAcadMText__com__set_Normal_IAcadMText__com__set_Rotation_IAcadMText__com__set_StyleName_IAcadMText__com__set_TextString_IAcadMText__com__set_Width_IAcadObject__com_Delete_IAcadObject__com_Erase_IAcadObject__com_GetExtensionDictionary_IAcadObject__com_GetXData_IAcadObject__com_SetXData_IAcadObject__com__get_Application_IAcadObject__com__get_Database_IAcadObject__com__get_Document_IAcadObject__com__get_Handle_IAcadObject__com__get_HasExtensionDictionary_IAcadObject__com__get_ObjectID_IAcadObject__com__get_ObjectID32_IAcadObject__com__get_ObjectName_IAcadObject__com__get_OwnerID_IAcadObject__com__get_OwnerID32_IDispatch__com_GetIDsOfNames_IDispatch__com_GetTypeInfo_IDispatch__com_GetTypeInfoCount_IDispatch__com_Invoke_IUnknown__com_AddRef_IUnknown__com_QueryInterface_IUnknown__com_Release_Invoke_QueryInterface_Release__class____cmp____com_interface____ctypes_from_outparam____del____delattr____dict____doc____eq____format____getattr____getattribute____hash____init____map_case____metaclass____module____new____nonzero____reduce____reduce_ex____repr____setattr____setstate____sizeof____str____subclasshook____weakref___b_base__b_needsfree__case_insensitive__compointer_base__get_value_idlflags__iid__invoke_methods__needs_com_addref__objects_type_colorfrom_paramvalue

這些cad圖元的屬性和方法是分明存在的,但是應(yīng)該怎么才能get或者set這些屬性呢?

可以看到形如“_IAcadMText__com__set_Width”的私有屬性(現(xiàn)在我也不知道這些屬性能夠怎么利用,也許這個(gè)是句柄??不懂)。但是所有這些屬性中,可以直接調(diào)用的方法中大部分(在代碼區(qū)里的第一類(lèi)公有屬性中)是可以與之匹配的。

這些公有屬性應(yīng)該是可以調(diào)用的,下面是一些例子:

1、調(diào)用move方法(set)

text.move(APoint(0,0), APoint(100,100)) #( 原點(diǎn),相對(duì)原點(diǎn)的位置)

用這行代碼就可以將所有的text對(duì)象向右、向上平移100個(gè)單位

2、訪問(wèn)layer屬性(setter、getter)

print text.layer # 0

就提取出了text.layer的值,如果想要改變text對(duì)象的layer,直接賦值即可(給layer變量復(fù)制的layer名字必須已經(jīng)存在,否則會(huì)報(bào)錯(cuò))

text.layer = 'new layer'print text.layer# new layer

3、提取PolyLine的各個(gè)頂點(diǎn)(很有用)

# for item in acad.iter_objects('PolyLine'): print item.Coordinates’’’(-462.01707322354014, 719.8251441314151, 207.17175903027055, 1056.4031530064085, 389.6778054895749, 574.9096117303479, -143.80140284041954, 434.6687742615859, -326.30744929972207, -60.84885181138725, -564.9692056597924, 308.45202158973643, -327.4641724567995, 461.94033545845366, -593.0470534647193, 546.8614421365228, -616.4452718779175, 803.9696476627087)’’’# 第1、2個(gè)元素構(gòu)成第一個(gè)坐標(biāo), 3、4個(gè)元素構(gòu)成第二個(gè)坐標(biāo)

以上操作證明了確實(shí)可以通過(guò)調(diào)用對(duì)象的公有屬性來(lái)操作cad中的對(duì)象,但是麻煩的是,由于這些方法都是ctype的,dir()這些方法無(wú)法得知具體應(yīng)該輸入那些參數(shù)和參數(shù)的類(lèi)型,有待解決…

如果實(shí)在沒(méi)有找到這些方法的文檔說(shuō)明,就只好一個(gè)一個(gè)試出來(lái)使用方法了

(補(bǔ)充:help(obj) 可以得到一些信息,但是好像還是沒(méi)有參數(shù)類(lèi)型信息。只能得到哪些obj的屬性可以set,哪些可以get等等)

以上這篇利用python控制Autocad:pyautocad方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲一区国产一区| 精品国产99| 免费在线观看成人| 亚洲精品裸体| 另类专区亚洲| 国产欧美日韩一级| 久久精品国产久精国产| 日本欧洲一区二区| 久久高清免费| 国产精品久久观看| 国产亚洲精品美女久久| 日韩在线综合| 国产欧美在线| 日本大胆欧美人术艺术动态| 色网在线免费观看| 国产丝袜一区| 性欧美69xoxoxoxo| 欧美男人天堂| 亚洲涩涩av| 精品一区亚洲| 1024精品一区二区三区| 久久久久久婷| 日韩国产欧美在线播放| av不卡免费看| 国产乱人伦丫前精品视频 | 日产精品一区二区| 日韩精选在线| 日本不卡免费高清视频在线| 国产精品一区高清| 国产精品欧美一区二区三区不卡| 免费在线观看不卡| 精品欧美激情在线观看| 国语精品一区| 秋霞影院一区二区三区| 亚洲色图国产| 免费久久久久久久久| 日韩中文字幕高清在线观看| 日韩av在线播放网址| 综合日韩av| 香蕉精品视频在线观看| 日韩欧美三级| 精品免费av| 精品一区二区男人吃奶| 国产成人黄色| av资源亚洲| 欧美国产专区| 不卡一区2区| 在线一区二区三区视频| 久久精品二区三区| 久久精品青草| 午夜精品影视国产一区在线麻豆| 国产一级成人av| 国产精品高潮呻吟久久久久| 亚洲少妇一区| 日韩av二区在线播放| 欧美专区一区| 国产成人免费视频网站视频社区| 久久国产中文字幕| 99亚洲视频| 色婷婷亚洲mv天堂mv在影片| 久久99伊人| 日本а中文在线天堂| 狠狠干综合网| 精品视频一区二区三区四区五区| 不卡视频在线| 亚洲精品福利| 久久精品国产在热久久| 日韩在线a电影| 久久精品一区二区不卡| 久久国产精品久久w女人spa| 欧美日韩国产观看视频| 亚洲免费一区二区| 欧洲一区二区三区精品| 青青青国产精品| 国产中文一区| 91精品国产自产观看在线| 国产三级一区| 亚洲午夜久久| 国产韩日影视精品| 亚洲一区二区三区四区五区午夜 | 只有精品亚洲| 亚洲第一区色| 色婷婷色综合| 欧美亚洲免费| 亚洲香蕉久久| 日韩av一区二| 日韩精品三级| 91成人小视频| 欧美日韩一区二区国产| 亚洲1区在线观看| 日韩欧美久久| 97精品97| 色爱av综合网| 亚洲黄色免费看| 亚洲欧洲日本mm| 视频在线观看一区二区三区| 波多视频一区| 国产欧美综合一区二区三区| 国产精品99久久免费观看| 免费一级欧美片在线观看网站| 另类小说一区二区三区| 精品午夜久久| 国产极品嫩模在线观看91精品| 麻豆一区二区在线| 日本久久二区| 欧美va亚洲va日韩∨a综合色| 午夜电影亚洲| 日韩中文av| 国产精品手机在线播放| 黄色aa久久| 国产精品女主播一区二区三区| 亚洲自啪免费| 亚洲视频电影在线| 国产精品一卡| 欧美二三四区| 蜜臀av在线播放一区二区三区| 国产精品日本一区二区不卡视频| 日韩久久一区二区三区| 国产精品成人一区二区网站软件| 国内精品麻豆美女在线播放视频| 99久久久久国产精品| 日韩精品免费一区二区夜夜嗨 | 国产高清一区| 日韩1区2区日韩1区2区| 国产欧美欧美| 免费日韩av片| 精品国产18久久久久久二百| 亚洲成人三区| 麻豆一区二区三区| 视频一区二区不卡| 久久精品99国产国产精| 怡红院精品视频在线观看极品| 欧美激情福利| 在线看片国产福利你懂的| 欧美一级专区| 欧美亚洲国产激情| 国产麻豆一区二区三区| 好看的亚洲午夜视频在线| 欧美激情在线精品一区二区三区| 国产精品s色| 日韩和欧美的一区| 超级白嫩亚洲国产第一| 欧美亚洲色图校园春色| 亚洲深夜影院| 欧美中文一区二区| 国产欧美成人| 国产精品v日韩精品v欧美精品网站| 日韩理论视频| 亚洲综合色婷婷在线观看| 欧美成人精品午夜一区二区| 日韩美女精品| 中文字幕日韩高清在线| 国产亚洲在线| 天堂av在线| 999久久久免费精品国产| 国内不卡的一区二区三区中文字幕| 日本a级不卡| 99pao成人国产永久免费视频 | 国产精品久久777777毛茸茸| 91久久国产| 久久国产精品亚洲77777| 婷婷综合社区| 日韩视频精品在线观看| 国产亚洲欧美日韩在线观看一区二区| 亚洲婷婷免费| 欧美日韩一二| 国产精品日韩欧美一区| 99在线|亚洲一区二区| 中文字幕日本一区| 久久国产电影| 婷婷综合网站| 日本免费新一区视频| 国产精品视频一区视频二区| 麻豆精品国产91久久久久久| 国产福利资源一区| bbw在线视频| 亚洲在线观看| 精品国产一区二区三区性色av| 国产精品大片| 亚洲成人二区| 欧美另类中文字幕| 日韩毛片视频| 蜜臀av在线播放一区二区三区| 国产美女久久| 欧美在线网站| 久久精品伊人| 中文精品电影| 国产精品久久久久久久久久10秀 | 久久亚洲在线| 欧美日韩国产免费观看| 国产精品网站在线看| 亚洲欧美在线专区| 国产综合欧美| 色综合www| 亚洲欧美不卡| 国产精品久久久久久av公交车 | 午夜久久影院| 欧美激情五月| 色婷婷久久久| 日韩精品一区二区三区中文在线|