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

您的位置:首頁技術文章
文章詳情頁

利用python控制Autocad:pyautocad方式

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

發現pyautocad模塊:可以用python控制autocad的包。今天把文檔中的重點內容摘錄出來,以后繪圖、計算大工程量、或者識別施工圖的時候時候也許可以用到。

一、連接cad

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

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

第一行:自動連接上cad,只要cad是開著的,就創建了一個<pyautocad.api.Autocad> 對象。這個對象連接最近打開的cad文件。

如果此時還沒有打開cad,將會創建一個新的dwg文件,并自動開啟cad軟件(貼心)

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

第三行:acad.doc.Name儲存著cad最近打開的圖形名

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

可以利用ActiveX interface,python中儲存的autocad對象中保存了一些可以簡化操作的自動化操作(可以迭代對象、搜索對象等等)

三、用acad.model 對象繪制簡單圖形

acad.model對象是用來在圖形中添加圖元的,先來做一個簡單的功能,在兩點之間畫線,以一個點為圓心畫圓

# 已經導入 APoint 類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、循環中的第一行用于添加一個Text,參數:(u’%s’ % text, x, y)

如果后面不需要操作AddText對象的話,只是實現在cad中創建一個Text并不一定要創建變量,直接調用acad.model.AddText()方法就可以做到了。

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

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

嘗試過可以使用的:addPolyLine(

練練手:

用遞歸程序寫一個在cad中畫一個螺旋圖,寫的有點??攏?/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)

畫出來是這個樣子的,還是挺好玩的

利用python控制Autocad:pyautocad方式

四、遍歷cad圖形對象以及訪問/修改對象屬性

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

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

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

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

或者也可以在類型選擇時填入多種類型,如:

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

pyautocad還提供了一個比較

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

訪問對象的屬性

以下內容文檔中貌似沒有寫,探究一下:

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

# 屬性/方法 第一種形式(可以直接調用)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圖元的屬性和方法是分明存在的,但是應該怎么才能get或者set這些屬性呢?

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

這些公有屬性應該是可以調用的,下面是一些例子:

1、調用move方法(set)

text.move(APoint(0,0), APoint(100,100)) #( 原點,相對原點的位置)

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

2、訪問layer屬性(setter、getter)

print text.layer # 0

就提取出了text.layer的值,如果想要改變text對象的layer,直接賦值即可(給layer變量復制的layer名字必須已經存在,否則會報錯)

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

3、提取PolyLine的各個頂點(很有用)

# 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個元素構成第一個坐標, 3、4個元素構成第二個坐標

以上操作證明了確實可以通過調用對象的公有屬性來操作cad中的對象,但是麻煩的是,由于這些方法都是ctype的,dir()這些方法無法得知具體應該輸入那些參數和參數的類型,有待解決…

如果實在沒有找到這些方法的文檔說明,就只好一個一個試出來使用方法了

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

以上這篇利用python控制Autocad:pyautocad方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品av一区二区| 久久影视三级福利片| 蜜桃精品在线| 女人天堂亚洲aⅴ在线观看| 亚洲欧美久久久| 日韩不卡一区二区| 国产在线不卡一区二区三区| 亚洲一级高清| 日韩精品亚洲专区| 国产中文字幕一区二区三区| 亚洲欧美日韩高清在线| 香蕉久久久久久| 精品黄色一级片| 久久精品国产68国产精品亚洲| 亚洲欧美日韩国产一区| 国产日韩一区| 91精品一区二区三区综合在线爱| 免费日韩视频| 国产激情欧美| 久久婷婷久久| 91精品视频一区二区| av中文资源在线资源免费观看| 五月天久久网站| 国产精品麻豆成人av电影艾秋| 99精品综合| 欧美午夜三级| 欧美性感美女一区二区| 日本国产亚洲| 久久蜜桃av| 青草av.久久免费一区| 精品国模一区二区三区| 日本一区中文字幕| 国产精品久久观看| 蜜臀精品一区二区三区在线观看 | 美国三级日本三级久久99| 国产激情欧美| 蜜臀a∨国产成人精品| 国产一区二区三区不卡av| 国产精品社区| 成人欧美一区二区三区的电影| 亚洲综合激情在线| 桃色一区二区| 国产高清日韩| 综合干狼人综合首页| 日韩欧美一区二区三区免费看| 亚洲三级视频| 久久91导航| 国产精品一区高清| 日韩精品一二三区| 久久婷婷av| 日本欧美国产| 欧美日本久久| 国产精品免费看| 91看片一区| 免费看久久久| 日本va欧美va瓶| 国产精品毛片一区二区三区| 中文字幕在线高清| 国产精品一卡| 麻豆精品网站| 免费精品国产的网站免费观看| 成人台湾亚洲精品一区二区| 日韩福利视频网| 亚洲一区二区三区高清| 日韩三区免费| 你懂的亚洲视频| 五月亚洲婷婷 | 国产一区 二区| 日韩中文字幕区一区有砖一区| 999国产精品| 国产成人精品免费视| 国产精品国码视频| 欧美一区网站| 亚洲精品影视| 模特精品在线| 伊人精品视频| 一本一道久久a久久精品蜜桃| 成人午夜国产| 欧美日韩视频网站| 久久久男人天堂| 国产成人久久精品麻豆二区 | 久久国产精品美女| 日韩国产在线观看一区| 蜜臀va亚洲va欧美va天堂| 在线 亚洲欧美在线综合一区| 久久国产日韩| 日韩免费小视频| 精品国模一区二区三区| 夜鲁夜鲁夜鲁视频在线播放| 日韩av自拍| 黑森林国产精品av| 午夜久久中文| 欧美成人精品三级网站| 伊人久久av| 中文字幕高清在线播放| 日韩大片在线观看| 国产精品国产三级国产在线观看| 久久精品天堂| 成人亚洲一区| 日韩影院二区| 婷婷激情一区| 久久视频国产| 伊人久久亚洲热| 免费不卡在线视频| 日本综合精品一区| 欧美日韩在线精品一区二区三区激情综合 | 丝袜诱惑一区二区| 欧洲av不卡| 五月综合激情| 日韩中文字幕不卡| 欧美一级久久| 精品国产一级| 91精品啪在线观看国产18| 在线国产一区| 亚洲精品极品| 国产精品最新| 黑人精品一区| 欧美日韩免费观看一区=区三区| 久热精品在线| 日韩精品三级| 精品国产91| 欧美性感美女一区二区| 玖玖精品视频| 久久精品凹凸全集| 国产一区二区三区亚洲综合| 91精品韩国| 免费精品视频| 国产精品综合| 久久精品青草| 综合激情五月婷婷| 欧美精品成人| 欧美~级网站不卡| 亚洲欧美在线综合| 国内精品美女在线观看| 国内亚洲精品| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品xxx| 影视先锋久久| 欧美亚洲tv| 久久精品国语| 日韩国产成人精品| 午夜影院一区| 亚洲色图网站| 国产成人精品一区二区免费看京| 最新日韩av| 国产精品久久乐| 免费欧美一区| 欧美日韩1区| 91精品精品| 日韩精品国产欧美| 青青青免费在线视频| 免费观看日韩电影| 欧美xxxx中国| 亚洲五月综合| 日本久久黄色| 日韩欧美中文字幕电影| 欧美三级精品| 欧美精品国产一区| 五月婷婷亚洲| 久久一区欧美| 午夜在线视频观看日韩17c| 欧美激情精品| 亚洲欧美日韩视频二区| 精品国产欧美| 丝袜亚洲另类欧美 | 波多视频一区| 日本精品在线播放| 神马日本精品| 久久激情五月婷婷| 欧美成人高清| 老色鬼精品视频在线观看播放| 欧美日韩三区| 日韩av在线播放网址| 日韩精品久久久久久久软件91| 久久精品国产亚洲夜色av网站 | 国产一区二区三区亚洲综合| 免费欧美在线视频| 国产一区二区三区四区二区 | 国产亚洲一区| 日韩视频久久| 国产成人精品一区二区三区免费 | 九一成人免费视频| 久久99高清| 日韩精品久久久久久久软件91| 蜜桃视频欧美| 美女福利一区二区三区| 国产精品视频一区二区三区 | 中文字幕亚洲精品乱码| 日本а中文在线天堂| 国产日产一区| 日韩中文字幕区一区有砖一区| 欧美aa在线观看| 国产成人免费精品| 国产精品.xx视频.xxtv| 日韩va欧美va亚洲va久久| 国产模特精品视频久久久久| 99久精品视频在线观看视频| 国产一区二区三区不卡视频网站 | 99国产精品| 99久久亚洲精品蜜臀|