版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
利用Csharp進(jìn)行AutoCAD二次開發(fā)利用Csharp進(jìn)行AutoCAD二次開發(fā)利用Csharp進(jìn)行AutoCAD二次開發(fā)利用C#進(jìn)行AutoCAD的二次開發(fā)(一)轉(zhuǎn)自明經(jīng)通道
盡人皆知,對
AutoCAD
進(jìn)行二次開發(fā)用到的主要
工擁有:ObjectArx,VBA,VLisp
。但它們的優(yōu)弊端是不言而喻的
:ObjectArx
功能興盛,編
程效率高,但它的弊端是編程者必然掌握
VC++,而這門語言特其余難學(xué)
;VBA
和VLisp
固然簡單易上手
,但它們對于開發(fā)大型的程序好象無
能為力。那終究有沒有一種語言能聯(lián)合它們的長處而盡量防范它們的弊端呢
?回答是必然的
,那就是微軟新推出的
21世紀(jì)編程語言
C#。
對于C#的詳盡介紹,大家能夠參照有關(guān)的文章。C#是經(jīng)過
AutoCADActiveX
這座橋梁來和
AutoCAD
之間進(jìn)行通信的。
AutoCADActiveX
使用戶能夠從
AutoCAD
的內(nèi)部或外面以
編程方式來操作AutoCAD。它是經(jīng)過將AutoCAD對象顯示到“外面世界”來做到這一點的。一旦這些對象被顯示,很多不一樣樣的編程語言
和環(huán)境就能夠接見它們。對于AutoCADActiveX的狀況,大家能夠參照AutoCAD自帶的幫助。
呵呵,說了這么多無聊的,仍是讓我們經(jīng)過一個詳盡的例子來說明如何利用C#進(jìn)行AutoCAD的二次開發(fā)吧。在介紹例子以前先講
一下有關(guān)的配置:
(1)VisualS(2003和2002都能夠,我用的是2002)(2)AutoCAD2000以上版本(我用的是2004)
這個例子特別簡單,就是經(jīng)過C#成立的窗體來啟動AutoCAD并畫一條直線。下邊是編程的詳盡步驟:1)經(jīng)過VisualS成立一C#的windows應(yīng)用程序。
(2)在“解決方案資源管理器”中右擊“引用”標(biāo)簽,在彈出的菜單中選擇“增添引用”,在“增添引用”對話框中選擇“com"選項卡下的下拉列表框中的“AutoCAD2004TypeLibrary"項(注意:不一樣樣版本的CAD的數(shù)字不一樣樣),單擊右側(cè)的“選擇”按鈕,最后單擊下邊的“確立”按鈕。(3)在C#窗體中加入兩個文本框和一個按鈕,分別用于輸入直線起點、終點的坐標(biāo)和在CAD中畫直線。下邊主要解說一下增添的代碼。
a)在程序的開頭加入:usingAutoCAD;//導(dǎo)入AutoCAD引用空間
(b)在窗體的變量申明部分加入:privateAcadApplicationa;//申明AutoCAD對象
(c)在窗體的結(jié)構(gòu)函數(shù)部分加入:a=newAcadApplicationClass( );//創(chuàng)立AutoCAD對象
a.Visible=true;//使AutoCAD可見
(d)在按鈕的信息辦理函數(shù)中加入:
double[]startPoint=newdouble[3];//申明直線起點坐標(biāo)
double[]endPoint=newdouble[3];//申明直線終點坐標(biāo)
string[]str=textBox1.Text.Split(',');//拿出直線起點坐標(biāo)輸入文本框的值,文本框的輸入模式為"x,y,z"
for(inti=0;i<3;i++)
startPoint=Convert.ToDouble(str);//將str數(shù)組轉(zhuǎn)為double型
str=textBox2.Text.Split(',');//拿出直線終點坐標(biāo)輸入文本框的值
for(inti=0;i<3;i++)
endPoint=Convert.ToDouble(str);
a.ActiveDocument.ModelSpace.AddLine(startPoint,endPoint);//在AutoCAD中畫直線
a.Application.Update( );//更新顯示
好了,簡單吧,你能夠試著編譯一下。對于上邊一些語句的用法,我會在下一講中作詳盡介紹。利用C#進(jìn)行AutoCAD的二次開發(fā)(二)大家好,今日我連續(xù)給各位介紹利用
C#進(jìn)行
AutoCAD
的二次開發(fā)。在這一講中,主要介紹上一講例子中存在的問題。
在前一次的例子中我是經(jīng)過引用
AutoCAD2004TypeLibrary
來進(jìn)行
C#與AutoCAD
之間的通信,但這類方法存在兩個致命的弊端。第一
個弊端是每次調(diào)試程序的時候
C#都要從頭啟動
AutoCAD
,假如調(diào)試的次數(shù)特別多(比方追蹤錯誤此后調(diào)試)
,那么編程的效率就很低,
因為啟動一次
CAD
仍是需要較長的時間。相對于第一個弊端,第二個弊端則更要命。因為
.NET
自己的問題,
文件
(就是經(jīng)過它才實現(xiàn)了
C#與AutoCAD
之間的通信)存在著一些
bug,所以固然有時你的代碼是圓滿正確的,但
C#編譯器仍是拋出莫名
其妙的錯誤。那不是完蛋了嗎?我以前有一階段就因為這兩個要命的東東差一點放棄了
C#而想改學(xué)
ObjectArx
了,呵呵,可是仍是運氣
好,我有時一次在網(wǎng)上看了一篇外國人寫的文章,他專門介紹了這兩個問題的解決方法。下邊就來解決這兩個問題。
第一來看第二個難題,按以下步驟來進(jìn)行:1.隨意用VisualStudio.NET成立一個C#應(yīng)用程序,此后依據(jù)上一篇文章中的設(shè)置加入AutoCAD2004TypeLibrary,此后不加入任何代碼,編譯你的程序。2.在VisualStudio.NET命令行工具下用ildasm.exe(這個工具能夠在VisualStudio.NET安裝光盤中找到)把文件(這個文件在步驟1中生成的項目的Bin\Release文件夾中)編譯成中間語言Interop.AutoCAD.il。注意:在步驟1中成立的項目的編譯設(shè)置為Release模式。ildasm.exe/source/output=Interop.AutoCAD.il又要注意了:把ildasm.exe,放在同一目錄下。3.在記事本中翻開Interop.AutoCAD.il文件,此后查找結(jié)尾是“SinkHelper而”開頭為".classprivateautoansisealed_DAcad的語句,把“語句中的private改為public,此后保留Interop.AutoCAD.il文件。4.使用ilasm.exe把Interop.AutoCAD.il文件編譯為文件,相同是在VisualStudio.NET命令行工具下進(jìn)行。ilasm.exe/dll/output=Interop.AutoCAD.dll文件是在步驟1中生成的。5.明顯你不肯意每次編寫應(yīng)用程序時都經(jīng)過上一篇文章中介紹的方法來加入Interop.AutoCAD.dll,那太麻煩了。你能夠用下邊的方法來讓程序自動加入該文件:找到C:\ProgramFiles\Microsoft.NET\PrimaryInteropAssemblies文件夾,此后把上邊生成的文件拷貝進(jìn)去。好了,第二個問題解決了,接下來看第一個。在VBA中,編程者能夠使用GetObject函數(shù)來獲得目前活動的AutoCAD對象,但在C#中卻沒有,為了這個函數(shù)我?guī)缀醢袽SDN給翻遍了,此后去各樣C#論壇問各位妙手,結(jié)果都沒獲得解決,呵呵,可能國內(nèi)使用C#的人比較少吧。仍是在老外的論壇上看到了一篇就是講這個問題的文章才把這個難題給解決了。使用下邊的語句就能夠獲得目前活動的AutoCAD對象了:(AcadApplication)Marshal.GetActiveObject("AutoCAD.Application.16")(對于CAD2000和CAD2002,則把16改為15)自然以上語句必然在AutoCAD翻開的狀況下才能使用,不然會發(fā)生錯誤,對于AutoCAD沒翻開的狀況,能夠使用上一篇文章的方法來辦理。圓滿的連結(jié)AutoCAD與C#的源程序以下所示:usingSystem;usingAutoCAD;usingSystem.Runtime.InteropServices;
namespaceAcadExample
{
publicclassAutoCADConnector:IDisposable
{
privateAcadApplication_application;
privatebool_initialized;
privatebool_disposed;
publicAutoCADConnector( ){
try
{
//Uponcreation,attempttoretrieverunninginstance
_application=(AcadApplication)Marshal.GetActiveObject("AutoCAD.Application.16");
}
catch
{
try
{
Createaninstanceandsetflagtoindicatethis_application=newAcadApplicationClass( );_initialized=true;
}
catch
{
throw;
}
}
}
Iftheuserdoesn'tcallDispose,the
garbagecollectorwillupondestruction~AutoCADConnector( )
{
Dispose(false);
}
publicAcadApplicationApplication
{
get
{
ReturnourinternalinstanceofAutoCADreturn_application;}
}
Thisistheuser-callableversionofDispose.
Itcallsourinternalversionandremovesthe
objectfromthegarbagecollector'squeue.publicvoidDispose( )
{
Dispose(true);
GC.SuppressFinalize(this);
}ThisversionofDisposegetscalledbyour
destructor.
protectedvirtualvoidDispose(booldisposing)
{
IfwecreatedourAutoCADinstance,callits
Quitmethodtoavoidleakingmemory.
if(!this._disposed&&_initialized)
_application.Quit( );
_disposed=true;
}
}
}
利用VisualS把上邊的程序編譯成一個類庫,你就能夠在此后的程序中使用它了,下邊的這個例子說了然它的用法。(第一把
AcadExample類庫包括在項目中)
usingSystem;
usingAcadExample;
usingAutoCAD;
namespaceConsoleApplication6
{
classClass1
{
[STAThread]
staticvoidMain(string[]args)
{
using(AutoCADConnectorconnector=newAutoCADConnector( ))
{
Console.WriteLine(connector.Application.ActiveDocument.Name);
}
Console.ReadLine( );
}
}
}
這個例子是在C#窗口中顯示AutoCAD中目前文檔的標(biāo)題。利用C#進(jìn)行AutoCAD的二次開發(fā)(三)
C#才鳥這一講的主要內(nèi)容是介紹
AutoCAD
對象模型,假如你對
VBA
開發(fā)
AutoCAD
認(rèn)識的話,這部分內(nèi)容應(yīng)當(dāng)是超簡單的。
對象是
AutoCADActiveX
接口的主要結(jié)構(gòu)塊,每一個顯示的對象均精準(zhǔn)代表一個
AutoCAD
組件。AutoCADActiveX
接口的主要對象
有:直線、圓弧、文字和注明等圖形對象。
線型與注明款式等款式設(shè)置對象
圖層、編組和塊等組織結(jié)構(gòu)對象
視圖與視口等圖形顯示對象。
圖形、AutoCAD應(yīng)用程序自己也是對象全部對象的根對象是介紹的方法來獲得。
AutoCAD應(yīng)用程序自己,它用AcadApplication類來表示。獲得目前運轉(zhuǎn)的
AcadApplication對象下有四個子對象構(gòu)成,分別是:
AcadApplication
對象能夠使用上一講中
AcadPreferences對象,經(jīng)過此對象能夠接見和設(shè)置“選項”對話框中的有關(guān)選項
AcadDocuments對象,它表示AutoCAD圖形
AcadMenuBar對象,它表示AutoCAD主菜單欄(注意不是AcadMenuBars,因為應(yīng)用程序只有一個主菜單欄)
AcadMenuGroups對象,它表示AutoCAD菜單和工具欄
上邊介紹了AutoCADActiveX接口對象模型的大概構(gòu)成,下邊要點介紹AcadDocuments對象,因為大多數(shù)的編程都與它有關(guān)。第一大家
看到它是復(fù)數(shù)的形式,所以它是目前翻開的AutoCAD全部圖形的會合,這類對象稱為會合對象(呵呵,憂如在講空話)。會合對象有一
些比較重要的方法和特色。此中最主要的是:Count特色用于獲得會合中的對象個數(shù)(從零開始);Item方法用于獲得會合中的任何對象。
對于它們的用法我會在下邊的例子中介紹。而AcadDocuments的單數(shù)形式AcadDocument表示目前翻開的一個AutoCAD圖形。
AcadDocument對象由以下幾個主要對象構(gòu)成:AcadModelSpace會合和AcadPaperSpace會合,供給對圖形對象(直線、圓、圓弧等)的接見
AcadLayers、AcadLinetypes和AcadTextStyles,則供給對非圖形對象(圖層、線型、文本款式等)的接見
AcadPlot對象供給對“打印”對話框中設(shè)置的接見,并為應(yīng)用過程供給了打印圖形的各樣方法AcadUtility
對象供給用戶輸入和變換函數(shù)
圖形對象的創(chuàng)立使用
Add方法,比方要創(chuàng)立一個圓,就是用
AddCircle
方法,而非圖形對象的創(chuàng)立使用
Add方法。
下邊經(jīng)過一個簡單的例子來說明上邊介紹的內(nèi)容。
這個例子是在
AutoCAD
中成立一個新的層,此后在該層中畫一個紅色的圓和一條綠色
的直線。這是程序的源代碼:
(請先把上一講中生成的
和
AutoCADExample.dll
文件包括在工程中
)
usingSystem;
usingAcadExample;
usingAutoCAD;
namespaceCircleLine
{
///
///Class1的綱領(lǐng)說明。
///
classClass1
{
///
應(yīng)用程序的主進(jìn)口點。
///[STAThread]
staticvoidMain(string[]args)
{
//
TODO:在此處增添代碼以啟動應(yīng)用程序
//
using(AutoCADConnectorconnector=newAutoCADConnector( ))//連結(jié)AutoCAD
{AcadDocumentaDocument=connector.Application.ActiveDocument;//獲得目前AutoCAD活動圖形對象double[]center=newDouble[3]{20,20,0};//設(shè)置圓心doubleradius=20;//設(shè)置圓的半徑double[]startPoint=newDouble[3]{0,0,0};//設(shè)置直線的起點double[]endPoint=newDouble[3]{40,40,0};//設(shè)置直線的終點AcadLayernewLayer=aDocument.Layers.Add("CircleLine");//創(chuàng)立一個名為CircleLine的新層aDocument.ActiveLayer=newLayer;//把CircleLine層設(shè)置為目前層AcadCirclecircle=aDocument.ModelSpace.AddCircle(center,radius);//加入圓AcadLineline=aDocument.ModelSpace.AddLine(startPoint,endPoint);//加入直線circle.color=ACAD_COLOR.acRed;//把圓變成紅色line.color=ACAD_COLOR.acGreen;//把直線變成綠色connector.Application.Update( );//更新顯示
for(inti=0;iConsole.WriteLine("這是第{0}個對象:{1}",i+1,aDocument.ModelSpace.Item(i));//遍歷目前圖形
}
Console.ReadLine( );
}
}
}
好了,今日就到這里。
利用
C#進(jìn)行
AutoCAD
的二次開發(fā)(四)
---使用通用對話框
看了本站出的“AutoCADVBA
開發(fā)優(yōu)異實例教程
”此后,深有啟迪。但書頂用到通用對話框時,
老是調(diào)用
windows
api函數(shù),我一看就頭大了。想到
C#能夠調(diào)用通用對話框,所以試驗了一下,沒想到在
C#中能夠特別簡單地解決這個問題,下邊就把我
的做法給寫出來。本文的例子是調(diào)用顏色對話框,對于其余通用對話框做法是相同的。但因為要使用到
AutoCAD2004
新增添的
TrueColor屬性,所以,本
文所舉的例子只好用于
AutoCAD2004
,對于其余通用對話框
(如文件對話框),則能夠使用其余版本的
AutoCAD。
要求:會用C#編程
讀過我寫的“利用C#進(jìn)行AutoCAD的二次開發(fā)“(在明經(jīng)通道中有)
開始:
在中新建一C#控制臺程序,在引用選項卡中增添以下類庫:
AcadExample.dllusingSystem;
usingSystem.Drawing;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Windows.Forms;
usingSystem.Data;
usingAutoCAD;
usingAcadExample;
namespaceWindowsApplication3
{
<summary>
Form1的綱領(lǐng)說明。
</summary>
publicclassForm1:
{
privatebutton1;
<summary>
必需的設(shè)計器變量。
</summary>
privatecomponents=null;publicForm1( )
{
//
Windows窗體設(shè)計器支持所必需的
//
InitializeComponent( );//
//TODO:在InitializeComponent調(diào)用后增添任何結(jié)構(gòu)函數(shù)代碼
//
}///<summary>
清理全部正在使用的資源。
</summary>protectedoverridevoidDispose(booldisposing)
{
if(disposing)
{
if(components!=null)
{
components.Dispose( );
}
}
base.Dispose(disposing);
}#regionWindows窗體設(shè)計器生成的代碼
<summary>
設(shè)計器支持所需的方法-不要使用代碼編寫器改正
此方法的內(nèi)容。
</summary>
privatevoidInitializeComponent( )
{
this.button1=newSystem.Windows.Forms.Button( );
this.SuspendLayout( );
//
button1
=newSystem.Drawing.Point(96,112);="button1";=newSystem.Drawing.Size(64,32);
=0;
="確立";
+=newSystem.EventHandler(this.button1_Click);
//
Form1
this.AutoScaleBaseSize=newSystem.Drawing.Size(6,14);
this.ClientSize=newSystem.Drawing.Size(280,213);
this.Controls.Add(this.button1);
this.Name="Form1";
this.Text="Form1";
this.ResumeLayout(false);}
#endregion///<summary>
應(yīng)用程序的主進(jìn)口點。
</summary>
[STAThread]
staticvoidMain( )
{
Application.Run(newForm1( ));}privatevoidbutton1_Click(objectsender,System.EventArgse)
{
AutoCADConnectorconnector=newAutoCADConnector( );AcadDocumentdocument=connector.Application.ActiveDocument;AcadAcCmColorcolor=(AcadAcCmColor)document.Application.GetInterfaceObject("AutoCAD.AcCmColor.16");
//新建一AcadAcCmColor對象,該對象用來給直線的顏色屬性賦值
AcadLineline=document.ModelSpace.AddLine(newdouble[]{0,0,0},newdouble[]{200,200,0});
//加入直線
ColorDialogdlg=newColorDialog( );//生成一顏色對話框
if(dlg.ShowDialog( )==DialogResult.OK)//顯示顏色對話框,并按確立按鈕后
{
color.SetRGB(dlg.Color.R,dlg.Color.G,dlg.Color.B);//設(shè)置顏色為顏色對話框中選擇的顏色
line.TrueColor=color;//設(shè)置直線的顏色
}
line.Update( );//更新顯示
}
}
}給AutoCAD的對象設(shè)置顏色,注意不是使用Color屬性,而是使用TrueColor
須使用GetInterfaceObject方法而不可以夠用newAcadAcCmColor( )方法申明。
屬性。TrueColor
屬性是一個
AcadAcCmColor
對象,它必
給AcadAcCmColor
對象設(shè)置顏色時,因為要使用
.net顏色對話框中選擇的值,所以可使用
SetRGB的方法,它的三個參數(shù)分別是
RGB顏
色的紅,綠,藍(lán)的值。在C#中使用ObjectDBX技術(shù)從未翻開圖形中獲得圖塊的信息
C#才鳥(QQ:2491785)
從未翻開圖形中能獲得圖塊的信息嗎?明經(jīng)通道的VBA版塊已經(jīng)介紹了VBA的實現(xiàn)方法,那在C#中可否做到呢?
回答是必然的。下邊就來說明詳盡的實現(xiàn)方法。
要求:
會用C#編程
讀過我寫的“利用C#進(jìn)行AutoCAD的二次開發(fā)“(在明經(jīng)通道中有)
開始:
在中新建一C#控制臺程序
在引用選項卡中增添以下類庫:
AcadExample.dll
ObjectDBX16(在“解決方案資源管理器”中右擊“引用”標(biāo)簽,在彈出的菜單中選擇“增添引用”,在“增添引用”對話框中選擇
“com"選項卡下的下拉列表框中的“AutoCAD/ObjectDBXCommon16.0TypeLibrary"項)
此后鍵入以下代碼:
usingSystem;
usingAutoCAD;
usingdbx=AXDBLib;
usingAcadExample;
5:
namespaceConsoleApplication1
{
///<summary>
///SummarydescriptionforClass1.
///</summary>
classClass1
{
///<summary>
///Themainentrypointfortheapplication.
///</summary>
[STAThread]
staticvoidMain(string[]args)
{
using(AutoCADConnectorconnector=newAutoCADConnector( ))
{
21:stringprogid="ObjectDBX.AxDbDocument.16"http://注意,這是AutoCAD2004的寫法,//假如AutoCAD2002和AutoCAD2000i則是”“22:AcadApplicationacadApp=connector.Application;23:dbx.AxDbDocumentdbxDoc;24:dbxDoc=(dbx.AxDbDocument)acadApp.GetInterfaceObject(progid);25:dbxDoc.Open(@"F:\Test.dwg");26:foreach(dbx.AcadEntityentityindbxDoc.ModelSpace)27:{28:if(entity.EntityName=="AcDbBlockReference")//判斷實體是不是塊參照29:{30:dbx.AcadBlockReferenceblkRef;31:blkRef=(dbx.AcadBlockReference)entity;//將是塊參照的實體強迫變換為塊參照種類32:object[]atts=(object[])blkRef.GetAttributes( );//獲得塊參照中的屬性(為對象種類)33:for(inti=0;i<atts.Length;i++)//遍歷塊參照屬性34:{35:dbx.AcadAttributeReferenceatt;36:att=(dbx.AcadAttributeReference)atts;//將塊參照屬性(對象種類)強迫變換為塊參照屬性種類37:Console.WriteLine("Tag:{0}\tValue:{1}\n",38:att.TagString,39:att.TextString);//顯示塊參照屬性的Tag和Text的值40:}41:}42:}43:Console.ReadLine( );}
}
}
}
第一個要注意的是第三行,使用了一個又名。因為AutoCAD和ObjectDBX命名空間有很多相同的類名,所以,你必然使用全名,而不可以夠使
用簡寫的形式,但ObjectDBX寫起來比較麻煩,所以用又名dbx來使輸入方便一些。
程序前面部分的代碼,你能夠參照我寫的“利用C#進(jìn)行AutoCAD的二次開發(fā)“這篇文章。讓我們來看第21行,程序定義了一個字符串progid,作為第24句的函數(shù)GetInterfaceObject的參數(shù),該函數(shù)是用來產(chǎn)生一個AxDbDocument對象。但要注意,Get
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度餐飲業(yè)食品添加劑使用規(guī)范協(xié)議書模板3篇
- 二零二五年飯館員工勞動合同與員工福利配套協(xié)議3篇
- 二零二五年鈑金噴涂維修產(chǎn)業(yè)數(shù)字化轉(zhuǎn)型承包協(xié)議2篇
- 2024版權(quán)質(zhì)押合同質(zhì)權(quán)實現(xiàn)及債務(wù)清償
- 2024年物業(yè)管理公司關(guān)于小區(qū)保潔服務(wù)合同
- 二零二五年度智慧城市建設(shè)項目宣傳推廣服務(wù)合同3篇
- 2024版電動伸縮門銷售協(xié)議3篇
- 2024年股權(quán)投資合同范本:投資金額與股權(quán)比例
- 2025年度新能源汽車充電樁建設(shè)合作協(xié)議范本3篇
- 二零二五年度環(huán)保設(shè)備模具定制合同范本3篇
- 奶茶督導(dǎo)述職報告
- 山東萊陽核電項目一期工程水土保持方案
- 白熊效應(yīng)(修訂版)
- 小學(xué)數(shù)學(xué)知識結(jié)構(gòu)化教學(xué)
- 視頻監(jiān)控維保項目投標(biāo)方案(技術(shù)標(biāo))
- 社會組織能力建設(shè)培訓(xùn)
- 立項報告蓋章要求
- 2022年睪丸腫瘤診斷治療指南
- 被執(zhí)行人給法院執(zhí)行局寫申請范本
- 主變壓器試驗報告模板
- 安全防護(hù)通道施工方案
評論
0/150
提交評論