在XP系統的時候,VB呼叫AUTOCAD,進行繪圖沒有問題。WIN7經常會碰到無法呼叫。困擾很久的問題,請大俠指點~~
在WIN7系統,安裝CAD2007 。運行程式, 無法呼叫AUTOCAD。嘗試提前打開AUTOCAD,即然后運行程式,仍無法呼叫。也就是CreateObject,GetObject 兩個函式均無效。
但有的WIN7系統電腦可以直接呼叫;也有的電腦可用提前打開CAD,再呼叫。完全昏了。期待大神指點

代碼如下:
Public NewDrawing As Object
Public AcadApp As Object
Public acadDoc As Object
Public Mospace As Object
Set AcadApp = GetObject(, "AutoCAD.application")
If ERR Then
ERR.Clear
Set AcadApp = CreateObject("AutoCAD.application")
If ERR Then
MsgBox "本機未安裝 AutoCAD。"
Exit Sub
End If
End If
AcadApp.Visible = True
If FileExist(CurDir + "\acad.dwg") Then
Set NewDrawing = AcadApp.Application.Documents.Open(CurDir + "\acad.dwg")
End If
Set acadDoc = AcadApp.ActiveDocument
Set acadDoc = AcadApp.ActiveDocument
Set Mospace = acadDoc.ModelSpace 'you declared it as a global.
Call Draw_Ele_Cad(Mospace)
。
。
。
。
uj5u.com熱心網友回復:
不要做A語言代碼修改為B語言代碼的無用功。也不要做用A語言代碼直接呼叫B語言代碼庫這樣復雜、這樣容易出錯的傻事。
只需讓A、B語言代碼的輸入輸出重定向到文本檔案,或修改A、B語言代碼讓其通過文本檔案輸入輸出。
即可很方便地讓A、B兩種語言之間協調作業。
比如:
A將請求資料寫到檔案a.txt,寫完后改名為aa.txt
B發現aa.txt存在時,讀取其內容,呼叫相應功能,將結果寫到檔案b.txt,寫完后洗掉aa.txt,改名為bb.txt
A發現bb.txt存在時,讀取其內容,讀完后洗掉bb.txt
以上A可以替換為任何一種開發語言或開發環境,B可以替換為任何一種與A不同的開發語言或開發環境。
除非A或B不支持判斷檔案是否存在、檔案讀寫和檔案更名。
但是誰又能舉出不支持判斷檔案是否存在、檔案讀寫和檔案更名的開發語言或開發環境呢?
可以將臨時檔案放在RamDisk上提高效率減少磨損磁盤。
資料的結構很復雜的話,文本檔案的格式問題可參考json或xml
共享臨時文本檔案這種行程之間的通訊方法相比其它方法的優點有很多,下面僅列出我現在能想到的:
·行程之間松耦合
·行程可在同一臺機器上,也可跨機,跨作業系統,跨硬體平臺,甚至跨國。
·方便除錯和監視,只需讓第三方或人工查看該臨時文本檔案即可。
·方便在線開關服務,只需洗掉或創建該臨時文本檔案即可。
·方便實作分布式和負載均衡。
·方便佇列化提供服務,而且幾乎不可能發生佇列滿的情況(除非硬碟空間滿)
·……
“跨語言、跨機,跨作業系統,跨硬體平臺,跨國,跨*.*的”苦海無邊,
回頭是“使用共享純文本檔案進行資訊交流”的岸!
uj5u.com熱心網友回復:
目測趙4回貼機患了老年癡呆癥,已經是病入膏肓,不可救藥了!!!
你知道什么叫做“二次開發”不???
不懂就不要胡言亂語!
不要只知道A語言B語言的瞎BB!!!



uj5u.com熱心網友回復:
總有一天,你會掉到A語言B語言的坑里。
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
目測趙4回貼機患了老年癡呆癥,已經是病入膏肓,不可救藥了!!!
你知道什么叫做“二次開發”不???
不懂就不要胡言亂語!
不要只知道A語言B語言的瞎BB!!!
總有一天,你會掉到A語言B語言的坑里。
等到那天時,別忘了使用1樓這種惡心的繩子把你自己拉上來。
uj5u.com熱心網友回復:
. . . . . . . .
等到那天時,別忘了使用1樓這種惡心的繩子把你自己拉上來。
你就拉倒吧 !!!
對我來說,根本就不存在這種問題。
各種計算機語言,都有其“優勢”(當然也許會有某些不足之處),否則它就不會有“活力”。
等你對計算機語言的認識達到一定的境界時,就能理解了。
最關鍵的是:
樓主的問題,跟你所謂的“A語言、B語言”的事情,毛關系都沒有!!!
uj5u.com熱心網友回復:
. . . . . . . .
等到那天時,別忘了使用1樓這種惡心的繩子把你自己拉上來。
你就拉倒吧 !!!
對我來說,根本就不存在這種問題。
各種計算機語言,都有其“優勢”(當然也許會有某些不足之處),否則它就不會有“活力”。
等你對計算機語言的認識達到一定的境界時,就能理解了。
最關鍵的是:
樓主的問題,跟你所謂的“A語言、B語言”的事情,毛關系都沒有!!!
那個家伙有點惡心
uj5u.com熱心網友回復:
. . . . . . . .
等到那天時,別忘了使用1樓這種惡心的繩子把你自己拉上來。
你就拉倒吧 !!!
對我來說,根本就不存在這種問題。
各種計算機語言,都有其“優勢”(當然也許會有某些不足之處),否則它就不會有“活力”。
等你對計算機語言的認識達到一定的境界時,就能理解了。
最關鍵的是:
樓主的問題,跟你所謂的“A語言、B語言”的事情,毛關系都沒有!!!
那個家伙有點惡心
哇,樓上這位大神,好久不見…………

uj5u.com熱心網友回復:
AutoCAD不是一種語言?!uj5u.com熱心網友回復:
AutoCAD不是一種語言?!
AutoCAD是一種“語言” ???



照你這種說法,Excel是一種語言、Word是一種語言、PowerPoint是一種語言、OutLook也是一種語言…………
還有我們“國產”的,wps、et、wpp,這些也分別“是一種語言”了…………
uj5u.com熱心網友回復:
AutoCAD不是一種語言?!
AutoCAD是一種“語言” ???
照你這種說法,Excel是一種語言、Word是一種語言、PowerPoint是一種語言、OutLook也是一種語言…………
還有我們“國產”的,wps、et、wpp,這些也分別“是一種語言”了…………
為什么不是呢?
自行車是一種語言,車床是一種語言,卡車是一種語言,聯合收割機是一種語言,數學是一種語言,微積分是一種語言,集成電路設計是一種語言,《人民的名義》是一種語言,腦神經外科是一種語言…………
uj5u.com熱心網友回復:
不要做A語言代碼修改為B語言代碼的無用功。
也不要做用A語言代碼直接呼叫B語言代碼庫這樣復雜、這樣容易出錯的傻事。
只需讓A、B語言代碼的輸入輸出重定向到文本檔案,或修改A、B語言代碼讓其通過文本檔案輸入輸出。
即可很方便地讓A、B兩種語言之間協調作業。
比如:
A將請求資料寫到檔案a.txt,寫完后改名為aa.txt
B發現aa.txt存在時,讀取其內容,呼叫相應功能,將結果寫到檔案b.txt,寫完后洗掉aa.txt,改名為bb.txt
A發現bb.txt存在時,讀取其內容,讀完后洗掉bb.txt
以上A可以替換為任何一種開發語言或開發環境,B可以替換為任何一種與A不同的開發語言或開發環境。
除非A或B不支持判斷檔案是否存在、檔案讀寫和檔案更名。
但是誰又能舉出不支持判斷檔案是否存在、檔案讀寫和檔案更名的開發語言或開發環境呢?
可以將臨時檔案放在RamDisk上提高效率減少磨損磁盤。
資料的結構很復雜的話,文本檔案的格式問題可參考json或xml
共享臨時文本檔案這種行程之間的通訊方法相比其它方法的優點有很多,下面僅列出我現在能想到的:
·行程之間松耦合
·行程可在同一臺機器上,也可跨機,跨作業系統,跨硬體平臺,甚至跨國。
·方便除錯和監視,只需讓第三方或人工查看該臨時文本檔案即可。
·方便在線開關服務,只需洗掉或創建該臨時文本檔案即可。
·方便實作分布式和負載均衡。
·方便佇列化提供服務,而且幾乎不可能發生佇列滿的情況(除非硬碟空間滿)
·……
“跨語言、跨機,跨作業系統,跨硬體平臺,跨國,跨*.*的”苦海無邊,
回頭是“使用共享純文本檔案進行資訊交流”的岸!
請問,您是在說什么?
uj5u.com熱心網友回復:
目測趙4回貼機患了老年癡呆癥,已經是病入膏肓,不可救藥了!!!
你知道什么叫做“二次開發”不???
不懂就不要胡言亂語!
不要只知道A語言B語言的瞎BB!!!
每次還是您的回復比較一陣見血,確實是二次開發,您有辦法嗎
uj5u.com熱心網友回復:
目測趙4回貼機患了老年癡呆癥,已經是病入膏肓,不可救藥了!!!
你知道什么叫做“二次開發”不???
不懂就不要胡言亂語!
不要只知道A語言B語言的瞎BB!!!
總有一天,你會掉到A語言B語言的坑里。
z這個趙四是腦殘么,怎么又來搗亂了
uj5u.com熱心網友回復:
這種一般和autocad安裝有關,有些autocad是什么所謂的綠化版,少一些東西,所以會聯不上,建議客戶放棄哪些低版本autocad吧,高版本的性能還是更好一些uj5u.com熱心網友回復:
在64位Windows下:64位exe和dll在目錄c:\windows\system32目錄下;
32位exe和dll在目錄c:\windows\syswow64目錄下;
所以要注意:
在win64位系統下注冊32位ocx或dll需要將32位ocx或dll拷貝到c:\windows\syswow64\目錄下。
且注冊要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
64 位 Windows 平臺注意點之檔案系統重定向 http://www.cnblogs.com/jiake/p/4981555.html
64 位 Windows 平臺注意點之注冊表重定向 http://www.cnblogs.com/jiake/p/4956218.html
uj5u.com熱心網友回復:
在64位Windows下:
64位exe和dll在目錄c:\windows\system32目錄下;
32位exe和dll在目錄c:\windows\syswow64目錄下;
所以要注意:
在win64位系統下注冊32位ocx或dll需要將32位ocx或dll拷貝到c:\windows\syswow64\目錄下。
且注冊要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
64 位 Windows 平臺注意點之檔案系統重定向 http://www.cnblogs.com/jiake/p/4981555.html
64 位 Windows 平臺注意點之注冊表重定向 http://www.cnblogs.com/jiake/p/4956218.html
終于看明白不是A語言到B語言啦
uj5u.com熱心網友回復:
在64位Windows下:
64位exe和dll在目錄c:\windows\system32目錄下;
32位exe和dll在目錄c:\windows\syswow64目錄下;
所以要注意:
在win64位系統下注冊32位ocx或dll需要將32位ocx或dll拷貝到c:\windows\syswow64\目錄下。
且注冊要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
64 位 Windows 平臺注意點之檔案系統重定向 http://www.cnblogs.com/jiake/p/4981555.html
64 位 Windows 平臺注意點之注冊表重定向 http://www.cnblogs.com/jiake/p/4956218.html
終于看明白不是A語言到B語言啦
“A語言←→文本檔案←→B語言”大法好!
uj5u.com熱心網友回復:
這個有可能就是xp和win7 dll存放路徑存在差異的問題,另外你有沒有參考呀?uj5u.com熱心網友回復:
在64位Windows下:
64位exe和dll在目錄c:\windows\system32目錄下;
32位exe和dll在目錄c:\windows\syswow64目錄下;
所以要注意:
在win64位系統下注冊32位ocx或dll需要將32位ocx或dll拷貝到c:\windows\syswow64\目錄下。
且注冊要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
64 位 Windows 平臺注意點之檔案系統重定向 http://www.cnblogs.com/jiake/p/4981555.html
64 位 Windows 平臺注意點之注冊表重定向 http://www.cnblogs.com/jiake/p/4956218.html
終于看明白不是A語言到B語言啦
“A語言←→文本檔案←→B語言”大法好!
只有腦殘才這么認為…………
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/48466.html
標籤:VB基礎類
