1. 程式人生 > >Civil3D二次開發常見問題總結

Civil3D二次開發常見問題總結

分享圖片 多人 兩個 畫線 總結 文件夾 work 出現 develop

Civil3D二次開發常見問題總結

  1. AutoCAD命令提示"未知命令**……"的原因:在Initialize方法內報出異常就會導致這種情況。O__O"…(或是少加了dll引用)還有一種情況就是CommandClass特性位置寫錯了,它必須放在命名空間上面,否則在CAD 2010中就會出現"未知命令"的情況,CAD 2014沒有這種情況
  2. Civil 3D 工具空間(Toolspace)不見了怎麽辦?在命令行上輸入ShowTS
  3. 3、使用netload命令加載程序集拋出"System.BadImageFormatException"異常解決方案。http://www.cnblogs.com/sly-tongtong/p/3569321.html
  4. ObjectARXSDK裏的acdbmgd.dllacmgd.dll與安裝目錄下的acdbmgd.dllacmgd.dll這兩組對應的dll是有區別的,一般調試時候用第一組,開發時候用第二組
  5. .net framework版本號AutoCAD版本號是有對應關系的。比如,.net framework 3.5對應AutoCAD 2010做二次開發,如果對應錯了就會出現1中描述的情況。還有調試時有可能和Visual Studio版本號有關,我就遇到過這種情況,用VS 2012+AutoCAD 2010開發時加入斷點沒有反應,但VS換成2010的話就有反應了。(_)
  6. 關於VS 2012+AutoCAD 2010
    開發時加入斷點沒有反應的問題已經解決了,原來從VS 2010開始默認的調試器類型為托管4.0,而AutoCAD是用.net framework 3.5開發的。它默認的調試器類型為托管2.0。這就造成了加入斷點沒有反應的情況。解決方法:http://www.cnblogs.com/junqilian/archive/2011/03/18/1988327.htmlhttp://www.cnblogs.com/junqilian/archive/2011/03/18/1988327.html
  7. 自定義實體(C++)-關於彈出"未能找到***.dll…………"提示框的問題引起這個問題有許多原因,我遇到的是生成選項造成的,我用的是win7 64
    位系統,所以安裝Civil3D版本也是64位,但自定義實體項目的生成方式默認是32位,我也沒改所以在netload的時候就會報出那個提示框,只要把自定義實體項目的生成方式改成64位即可。
  8. 在使用netload加載dll時,命令行輸出一行異常的信息-"………………"而且還沒完整輸出O__O"…。造成這個原因有可能是命令的名稱重復
  9. Editor捕獲到的東東不一定是你想要的,再操作之前一定要進行判斷。比如Armadillo項目的CheckConnectivity命令
  10. 不要太過於相信CAD事件,開發文檔上說它不靠譜。
  11. 自定義AutoCAD實體出現下面錯誤的原因是ObjectArx安裝目錄改變或者不存在導致的。

    技術分享圖片

    解決方案:找到自定實體項目的目錄下的Autodesk.arx-2014.props文件,打開並編輯ArxSdkDir節點的值,改為安裝ObjectArx的路徑。就OK了。

  12. 操蛋的弧線點 Polyline線用Explode方法打散後,子項弧線的起點和終點不一定和畫線時的起終點一樣,以下是測試數據:

    左到右

    arc.StartPoint

    {(7151.11257350689,2494.76600079297,200)}

    X: 7151.1125735068927

    Y: 2494.7660007929662

    Z: 200.0

    arc.EndPoint

    {(5218.90934925515,2527.31643705483,200)}

    X: 5218.9093492551474

    Y: 2527.3164370548329

    Z: 200.0

    --下到上

    arc.StartPoint

    {(10482.6189523043,1834.73690787365,200)}

    X: 10482.6189523043

    Y: 1834.7369078736517

    Z: 200.0

    arc.EndPoint

    {(10482.6189523043,4351.74259295576,200)}

    X: 10482.6189523043

    Y: 4351.7425929557648

    Z: 200.0

    --右到左

    arc.StartPoint

    {(16300.4106147591,1435.48772301059,600)}

    X: 16300.410614759079

    Y: 1435.4877230105917

    Z: 600.0

    arc.EndPoint

    {(14285.8917180871,1435.48772301059,600)}

    X: 14285.891718087136

    Y: 1435.4877230105913

    Z: 600.0

    --上到下

    arc.StartPoint

    {(11770.9503677832,-1525.82060923224,400)}

    X: 11770.950367783196

    Y: -1525.8206092322357

    Z: 400.0

    arc.EndPoint

    {(11794.1975746998,681.662180525194,400)}

    X: 11794.197574699823

    Y: 681.662180525194

    Z: 400.0

    可以看到有時候一致,有時候相反,這是非常操蛋的地方,用時謹記。

    更新:貌似是起始角和終止角的問題,轉的圈圈太多。

  13. 外部程序啟動AutoCAD程序各種異常的錯誤

    錯誤1-http://www.cnblogs.com/junqilian/archive/2011/08/21/2148630.html

    如果按上面改正後還有錯誤那麽原因有兩個:1ProgID值與當前CAD系統版本號不一樣,2是打開多個CAD導致的

  14. 坑爹的SendCommand方法

    .net訪問comSendCommand並用它發送命令,如果命令行中已經有文字的話,cad會一直等待直到命令行中的文字清空或命令執行,完成前面操作後才執行我們的SendCommand方法。坑爹啊,尤其是在外部啟動cad的時候,如果已經打開cad並且命令行有文字,那啟動程序會一直等待造成假死現象

  15. 安裝多款Autodesk產品註冊碼失敗的問題

    平常我們都是用AutoCAD註冊機來激活Autodesk產品,但是如果操作不當就會出現激活不成功的顯現。出現這種現象的原因有:1、序列號重復,即兩款產品用的是同一個序列號。2、沒有斷網。

    以上只是簡單的列舉了註冊失敗的原因。我們真正要解決的是激活失敗了怎麽辦?有許多人卸載了再安裝試了好多次都不行最後重裝系統再安裝才好,這樣的話代價太大還浪費時間。本人親身經歷過這種情況,最後在網上找解決方法再結合實際操作找到了解決方案。下面就詳細道來:

  • 打開"我的電腦"進入C盤找到\ProgramData\FLEXnet文件夾,把它刪除
  • 卸載之前安裝過的Autodesk產品(這個比較費時間,但木辦法(_)
  • 清理註冊表(可以用360
  • 最好重啟電腦
  • 開始重新安裝Autodesk產品(註意序列號不能再重復了),再用註冊機激活就可以了
  1. 有些功能.NET API還沒有/完全實現,這時就需要用到COM API

    需要添加的引用

    找到Civil 3D安裝目錄找到下面的dll

    Autodesk.AEC.Interop.Base

    Autodesk.AEC.Interop.UiBase

    Autodesk.AutoCAD.Interop

    Autodesk.AutoCAD.Interop.Common

    Autodesk.AECC.Interop.<Civil方面的對象>

    Autodesk.AECC.Interop.Ui< Civil方面的對象>

    選擇上面的引用後,將引用的"復制本地(Copy Local)"屬性設為true

    最後在項目中使用using語句引用就可以了。

    註:為什麽要把"復制本地"屬性設為true?因為引用的這些dll在運行的時候不需要的。還有Comdll默認情況下"復制本地"屬性是不可選的。要讓它可選的話,修改"嵌入互操作類型"屬性為False就可以了(默認為true)。如果默認"嵌入互操作類型"的值,有可能會引發-無法嵌入互操作類型"……"的異常。解決方法就是"嵌入互操作類型"屬性設為False

Civil3D二次開發常見問題總結