我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網站首頁 > CAD教程 > 常見問題

AutoCAD二次開發的ActiveX技術應用

時間:2010-11-12 11:04:53 來源:未知

Autodesk公司的AutoCAD軟件廣泛地應用于設計領域。AutoCAD作為強大而專業的工程繪圖軟件,近幾年來在工程地質制圖方面也得到了廣泛應用,如鉆孔柱狀圖、剖面圖等。但由于CAD本身的原因以及地質圖件的特殊性,完全依賴CAD而不借助第三方軟件或對CAD進行二次開發,實現地質圖件的計算機化也是一件非常困難的事情。好在CAD是一個靈活而又開放的系統,它提供了許多開放式的接口,允許用戶通過這些接口對CAD進行二次開發,以滿足不同用戶的需要。

  在AutoCAD R14以前的版本中,最常用的開發工具是AutoLisp和ADS,這兩種開發工具都不適應當前可視化編程的需要。幸運的是,在AutoCAD R14版本中,Autodesk公司在AutoCAD中加入了ActiveX自動化服務功能(ActiveX Automation server capabilities),使得用戶可以通過可視化編程工具,如Visual Basic(以下簡稱VB)、Delphi等對AutoCAD進行二次開發,不但提高了工作效率,也滿足了不同專業的需要。最近我院開發了“工程地質CAD繪圖系統”軟件,榮獲本單位優秀軟件三等獎。該系統我們以AutoCAD R14為平臺,VB為開發工具,應用ActiveX技術對AutoCAD進行了二次開發。本文簡略地說明AutoCAD中的ActiveX對象模型結構及對模型對象的編程引用。

  1 AutoCAD中的ActiveX對象模型

  AutoCAD ActiveX提供了一種機制,或者說是一種方法,可以供開發者通過編程手段來操縱AutoCAD。ActiveX是由一系列的對象,按一定的層次結構組成的,每一個對象都代表了AutoCAD中的一個明確的功能。每一個對象本身包含著自己的屬性和方法,通過方法可以實現對象的一些操作,如控制CAD的啟動,打開一個文檔,一條直線的生成。而屬性則是對象自己本身所具有的一些性質,如一個文本對象,它的屬性有文本的高度,寬度、文本的顏色,所在層等。應用程序正是通過對AutoCAD暴露的各級對象的方法和屬性的引用控制AutoCAD工作的。

  理解AutoCAD的對象模型是實現編程的基礎。AutoCAD以層次結構組織對象(對象模型圖可以參考R14版本中的幫助文件)。在頂層是Application對象(即AutoCAD 本身),其他對象均為Application對象的子對象。在Application對象下面是Preferences(優先設置)和Document(文檔)對象,通過Preferences對象可以對AutoCAD Tools>Preferences菜單項中的幾乎每一個選項進行訪問和修改,以獲取或改變AutoCAD的優先設置。Document對象是控制AutoCAD圖形文件的直接對象,它代表某一個裝入的CAD圖形文件(一般設為當前激活的文件)。Document對象下面有Model Space(模型空間)和Paper Space(圖紙空間)對象及Blocks(塊)、Layers (層)、Plot(出圖)、Selectionsets(選擇集)、 views(視圖)、 utility(功能)等一系列對象(集合),其含義與AutoCAD中相似。Model Space是當前圖形文件中圖形實體,如直線、圓、多義線等的集合,每個實體即是一個對象,可通過屬性和方法改變實體或生成新實體。對非圖形實體,如層(layer)、線形(line type)等的訪問則通過訪問Document對象下面的相應的集合類型的子對象,如Layers 、LineTypes等來實現。集合類型的對象可以使用VB中所有的集合操作方法。Plot對象提供了訪問Plot對話框中各選項的橋梁,使應用程序具有用不同方式控制AutoCAD出圖的能力。Utility對象使用戶在AutoCAD命令行與CAD交互成為可能,通過它可以處理整型、浮點型、字符型等用戶輸入,還可以接受點(Point)或角(Angle)等AutoCAD的特殊量。以上簡要地說明了CAD中的對象及其層次結構關系,有了這些理解對編程控制CAD就不難了。

  2 AutoCAD對象的使用

  2.1 AutoCAD application對象

  如前所述,Application對象位于AutoCAD層次對象結構的頂層,它代表AutoCAD自身,所有的應用程序必須從Appliction對象的建立開始。

  Dim aCADapp As Object '建立Application對象

  Dim aCADdoc As Object '建立Document對象

  Dim mospace As Object '建立Model Space 對象

  On Error Resume Next

  Set aCADapp = GetObject(, "autoCAD.application")

  If Err Then

  Err.Clear

  Set aCADapp = CreateObject("autoCAD.application") ‘

  If Err Then

  MsgBox Err.Description

  Exit Sub

  End If

  End If

  Set aCADDoc = aCADApp.ActiveDocument

  上一語句是設aCADdoc為當前圖形文檔。

  Set aCADutil = aCADDoc.Utility '與用戶交互

  aCADApp.Visible = True ‘此語句是使CAD可見。

  Set mospace = aCADdoc.ModelSpace 設置mospace為當前圖形文檔的模型空間。

  以上程序段是應用程序初始化的過程,即選擇性地啟動AutoCAD。如果CAD已經啟動則跳此過程,反之則初始化啟動CAD。一般對AutoCAD圖形文檔的操作,主要是與Application、Document、Utility和Model Space等對象發生關系。

  Application對象是一系列對象的父對象,可以通過它的屬性設置來改變AutoCAD的窗口設置。如下面代碼:

  aCADapp.Top=100 '設置AutoCAD窗口的位置

  aCADapp.Left=200

  aCADapp.Height=1000 '調整AutoCAD窗口的大小

  aCADapp.Width=800

  2.2 Document對象

  (1) 對文件的操作

  Document對象提供了大多數AutoCAD軟件中有關文件的功能,可以通過它在AutoCAD中新建(New)、打開(Open)、輸出(Export)、輸入(Import)等文件功能操作。編程時先把Document對象設為Application對象的 ActiveDocument屬性,以返回當前活動的圖形文檔。例:

  Set aCADdoc=Application.ActiveDocument

  請看下面的例子對文件的操作:

  Dim Docname As String

  Docname = "e:tempzk01.dwg"

  If Dir(docname) <> "" Then

  aCADdoc.Open docname '如果文件存在則打開CAD文件

  Else

  aCADdoc.new("aCAD") '若不存在則以aCAD.dwt為模板建立一個新文件。

  End If

  把當前文檔存盤則可以用下面的語句:

  if docname<>"" then 'docname不存在時存盤

  aCADdoc.save

  else

  msgbox “該文件已經存在!” '提示該文件已經存在

  end if

  Document對象還提供了兩個非常有用的方法—SetVariable 和 GetVariable,通過它們可以得到(用GetVariable)或改變(用SetVariable )AutoCAD的系統變量。

  如語句:

  aCADdoc.SetVariable "Orthomode", 1 '打開正交模式

  dim CADver As String

  CADver=aCADdoc.Getvariable("ACADver") '獲取AutoCAD的版本號

  (2) 對圖形實體的操作

  圖形實體是指所有CAD的圖元物體,如點(point)、線(Line)、圓(Circle)、弧(Arc)、文字(Text)等,它們包含于ModelSpace和PaperSpace集合對象中。對實體的操作總要從這兩個集合開始,向下查找相應實體所屬的方法或屬性。而圖形實體的操作包括實體的生成、編輯和查詢。 ModelSpace與PaperSpace是所有圖形實體的集合,因此要取得圖中的某一實體,一般采用遍歷查找的方法,下面代碼是CAD圖形實體的生成、編輯實體或查詢。

  生成一條直線的代碼:

  Dim lineobj As Object

  Dim pt1(0 To 2) As Double

  Dim pt2(0 to 2) as double

  Pt1(0)=0#

  Pt1(1)=0#

  Pt1(2)=0#

  Pt2(0)=100#

  Pt2(1)=50#

  Pt2(2)=0#

  SetlineObj = moSpace.Addline(pt1,pt2)

  ‘畫從坐標點pt1至坐標點pt2的直線

  改變這條直線的顏色(假設直線實體句柄為"4C")的代碼:

  Dim tobj As object

  Set tobj=aCADdoc.HandletoObject("4C")

  tobj.Color=acRed ‘

  tobj.Update

  查詢圖形文件中所有實體的實體名、實體句柄、顏色、所在層、線形等參數,如下面的代碼所示:

  Dim ent As Object

  Dim msgStr, NL As String

  Dim I as Integer

  NL = Chr(13) & Chr(10) ‘回車與換行

  I=1

  For Each ent in mospace

  msgStr = "第" & Format(I) & "個實體信息" & NL & NL

  msgStr = msgStr & "實體名: " & ent.EntityName & NL

  msgStr = msgStr & "所在層: " & ent.Layer & NL

  msgStr = msgStr & "顏色: " & Str(ent.Color) & NL

  msgStr = msgStr & "線形: " & ent.Linetype & NL

  msgStr = msgStr & "句柄: " & ent.Handle & NL

  MsgBox msgStr

  I=I+1

  Next


我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

            国产欧美一区二区三区鸳鸯浴 | 精品国内二区三区| 成人手机在线视频| 婷婷综合在线观看| 亚洲欧美一区二区三区久本道91| 日韩亚洲欧美一区| 欧美亚洲一区二区在线观看| 成人av电影在线| 国产尤物一区二区在线| 亚洲成人激情av| 中文字幕一区二区三区色视频 | 99麻豆久久久国产精品免费 | 亚洲午夜影视影院在线观看| 国产女人aaa级久久久级| 日韩一级二级三级| 欧美日韩一级片在线观看| 97精品久久久午夜一区二区三区| 国产精品一区在线观看你懂的| 图片区小说区国产精品视频| 一区二区三区国产精华| 中文字幕一区二区三区色视频| 久久女同互慰一区二区三区| 日韩一区国产二区欧美三区| 欧美日韩在线直播| 在线精品视频小说1| 91网站最新网址| 91在线码无精品| 99九九99九九九视频精品| 成熟亚洲日本毛茸茸凸凹| 国产福利一区二区三区视频在线 | 欧美三级乱人伦电影| 色8久久精品久久久久久蜜| 99久久婷婷国产综合精品电影 | 国产亚洲短视频| 久久久精品国产99久久精品芒果| 欧美一区二区视频网站| 欧美丰满美乳xxx高潮www| 欧美美女网站色| 欧美日韩小视频| 欧美视频一区二区三区四区 | 久久精品国产**网站演员| 伦理电影国产精品| 久久99精品久久久久婷婷| 免费观看日韩电影| 麻豆精品在线播放| 韩国毛片一区二区三区| 国产毛片精品国产一区二区三区| 国产一区二区免费看| 国产成人综合亚洲91猫咪| 国产真实精品久久二三区| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美电视剧免费全集观看| 日韩欧美一区二区视频| 欧美大片免费久久精品三p| 亚洲精品在线电影| 国产调教视频一区| 一色屋精品亚洲香蕉网站| 亚洲综合成人在线视频| 日韩高清在线不卡| 国产综合色视频| www.日韩大片| 欧美网站一区二区| 精品国产免费一区二区三区四区| 久久免费电影网| 亚洲日本免费电影| 三级一区在线视频先锋| 欧美不卡一区二区| 久久精品日产第一区二区三区高清版| 中文字幕精品综合| 亚洲午夜久久久| 麻豆91在线看| 成人精品视频一区| 色琪琪一区二区三区亚洲区| 欧美精品一卡两卡| 国产日韩欧美在线一区| 亚洲欧美日本在线| 美女视频黄频大全不卡视频在线播放| 国产乱码一区二区三区| 91视频com| 欧美大片一区二区| 1024成人网色www| 美腿丝袜亚洲色图| 成人精品视频网站| 欧美精品第1页| 国产日韩精品久久久| 一区二区三区国产精华| 韩国女主播一区| 在线精品视频免费观看| 欧美喷水一区二区| 亚洲成人精品一区二区| 成人毛片在线观看| 成人av小说网| 大尺度一区二区| 欧美综合一区二区| 久久亚洲私人国产精品va媚药| 国产精品每日更新在线播放网址| 亚洲高清视频在线| 久久99九九99精品| 欧美亚洲一区二区在线观看| 久久久亚洲欧洲日产国码αv| 亚洲欧美日本在线| 国产成a人亚洲精品| 4438成人网| 国产精品美女久久福利网站| 美女mm1313爽爽久久久蜜臀| 一本色道久久综合亚洲91| 成人午夜激情片| 日韩欧美亚洲国产另类 | 午夜精品久久久久影视| 懂色av中文字幕一区二区三区| 欧美美女直播网站| 成人欧美一区二区三区| 久久99精品国产.久久久久久| 在线精品亚洲一区二区不卡| 日本一区二区三区在线不卡| 蜜臀a∨国产成人精品| 在线观看免费视频综合| 国产精品视频免费看| 精品一区二区三区蜜桃| 欧美日韩在线观看一区二区| 国产精品国产三级国产aⅴ无密码| 麻豆91免费观看| 欧美理论在线播放| 亚洲综合无码一区二区| 国产成人精品免费网站| 欧美不卡一区二区三区四区| 午夜国产精品影院在线观看| 91免费看视频| 国产精品久久久久久户外露出| 国内精品久久久久影院薰衣草| 91精品国产综合久久精品性色| 亚洲香肠在线观看| 色天天综合色天天久久| 亚洲天堂福利av| www.亚洲精品| 日本一区二区视频在线| 国产一区二区三区在线观看精品| 日韩一区二区三区电影| 日本人妖一区二区| 欧美一级片在线观看| 免费成人性网站| 日韩一区二区三区四区| 麻豆中文一区二区| 日韩精品专区在线| 韩国av一区二区三区在线观看 | 日韩欧美一二区| 麻豆精品久久久| 精品福利二区三区| 国产精品一区二区在线看| 久久青草国产手机看片福利盒子 | 欧美女孩性生活视频| 性欧美大战久久久久久久久| 欧美美女直播网站| 视频在线观看91| 日韩欧美国产wwwww| 精品亚洲porn| 国产欧美久久久精品影院| 成人激情免费视频| 亚洲视频在线观看三级| 色吧成人激情小说| 亚洲成a人v欧美综合天堂| 欧美一级夜夜爽| 国产一区二区三区在线观看免费 | 国产在线国偷精品免费看| 久久久精品黄色| 99精品黄色片免费大全| 一区二区三区四区视频精品免费 | 一个色在线综合| 欧美一二三四区在线| 国产精品一区二区黑丝| 国产精品国产三级国产普通话蜜臀| 91丨porny丨户外露出| 亚洲成av人影院在线观看网| 日韩欧美色电影| 国产精品 欧美精品| 亚洲卡通动漫在线| 在线成人免费视频| 国内偷窥港台综合视频在线播放| 欧美激情一区在线| 欧美专区亚洲专区| 六月丁香婷婷久久| 国产精品嫩草影院com| 欧美视频中文字幕| 国产一区二区三区在线观看免费 | 国产精品888| 亚洲国产你懂的| 久久综合成人精品亚洲另类欧美| 97aⅴ精品视频一二三区| 三级久久三级久久| 欧美极品xxx| 欧美精品日韩精品| 粉嫩av一区二区三区在线播放| 一区二区三区四区在线播放| 欧美成人vps| 色屁屁一区二区| 国产一区二区中文字幕| 亚洲一区二区在线免费看| 久久亚洲精品国产精品紫薇| 欧美在线999| 丁香五精品蜜臀久久久久99网站|