快速定制开发CAD电路图(电气原理图)详细流程及源码 浮云E绘图
電氣設備的工作原理及各電器元件相互之間的關系,對于快速掌握設備工作原理、分析電氣線路、排除電路故障、程序編寫等十分有益。現有基于浮云E繪圖SDK(包含電路圖編輯器+繪圖DLL組件+API Demo+電子元件模板庫+說明文檔),可以快速繪制開發CAD電路圖(電氣原理圖),并且實時更新圖形各元件的狀態。
1. 創建圖元模板
電路原理圖經常有一些復雜的元器件,比如繼電器、傳感器、變壓器等, 浮云E繪圖編輯器支持創建復合圖元模板,后續直接模板圖元繪圖,更靈活、便捷。
復合圖元創建使用操作過程:菜單“視圖” -> “模板繪圖” -> 工具欄按鈕“新建模板” --> 在繪圖區繪制復合圖元 -> 工具欄按鈕“保持模板”數據文件,即完成復合圖元庫制作。加載使用復合圖元操作,請看下一節。
?繪制復合圖元流程:畫第1個基礎圖元 -> 填寫第1個圖元業務屬性“標識”內容 -> 畫第2個基礎圖元 -> ...... -> 畫第N個基礎圖元 -> 最后畫一個矩形圖元 -> 設置最后的矩形圖元屬性:不填充、線條隱藏 -> 選中此次所有基礎圖元,點“組合”即完成一個復合圖元的制作。
以上圖第一個模板圖元“無極繼電器1”為例:畫第1個基礎圖元(圓) -> 設置該圓標識屬性(無極繼電器1) -> 畫左側一條直線 -> 畫右側直線 ->畫矩形框住這個圓+2條直線 ->設置矩形的屬性:不填充、線條隱藏 -> 框選住1圓+2線段+1矩形,點“組合”即完成。接著可以繼續畫其他復合模板圖元。?
第1個基礎圖元的標識內容,是整個復合圖元的名稱,將在加載動態創建復合圖元操作按鈕時,設為按鈕名稱。
2. 加載使用復合圖元
上一步功能可以為電路原理圖、工藝流程圖、工業控制圖等各領域,創建復合圖元模板庫。使用復合圖元模板庫操作流程:菜單“視圖” -> “模板繪圖” -> 工具欄按鈕“加載模板” -> 選擇復合圖元模板庫數據文件 -> 勾選此次繪圖需用到的復合圖元(將在工具欄動態創建復合圖元按鈕)-> 點工具欄某復合圖元按鈕,即可以繪制復合圖元。
3. 繪制電路原理圖,并保存繪圖數據文件
使用浮云E繪圖編輯器操作流程:工具欄按鈕“新建” -> 點左側工具欄基礎圖元按鈕(如直線) ->畫直線 -> 點其他圖元按鈕(包括復合圖元按鈕)繪圖 -> ...... -> 工具欄按鈕“保存”繪圖數據文件,完成圖形編輯繪制。在自己的工程項目中,通過FYEDC.dll加載繪圖數據文件,并控制各圖元的線條(顏色、虛實、寬度)、區域、文字等屬性值。
4. 創建新工程,基于FYEDC.dll繪圖組件接口,控制圖
下載浮云E繪圖SDK3.0,包含電路圖編輯器+繪圖DLL組件+API Demo+電子元件模板庫+說明文檔?浮云E繪圖SDK3.0,開源電路圖、電子圖紙、工業控制系統圖快速開發-桌面系統文檔類資源-CSDN下載
4.1 打開浮云E繪圖API Demo工程源碼,查看FYEDC.dll接口定義
C#和VC++調用dll步驟,接口指針、字符串等類型對應關系_浮云繪圖的博客-CSDN博客_vc++ 調用dll
Demo有VC版和C#版,下面列出C#版部分導出函數定義(完整版看Demo工程源碼)
#region 浮云繪圖DLL 接口//組件接口[DllImport("FYEDC.dll", EntryPoint = "NewFYEDC", CallingConvention = CallingConvention.Cdecl)]public static extern IntPtr NewFYEDC();[DllImport("FYEDC.dll", EntryPoint = "CreateFYEDC", CallingConvention = CallingConvention.Cdecl)]public static extern void CreateFYEDC(IntPtr canvas, IntPtr hParentWnd, int x, int y, int w, int h);[DllImport("FYEDC.dll", EntryPoint = "LoadShapes", CallingConvention = CallingConvention.Cdecl)]public static extern void LoadShapes(IntPtr canvas, string fileName);[DllImport("FYEDC.dll", EntryPoint = "DeleteFYEDC", CallingConvention = CallingConvention.Cdecl)]public static extern void DeleteFYEDC(IntPtr canvas);// 圖元對象[DllImport("FYEDC.dll", EntryPoint = "GetShapeCount", CallingConvention = CallingConvention.Cdecl)]public static extern int GetShapeCount(IntPtr canvas);[DllImport("FYEDC.dll", EntryPoint = "GetShape", CallingConvention = CallingConvention.Cdecl)]public static extern IntPtr GetShape(IntPtr canvas, string type, string name);[DllImport("FYEDC.dll", EntryPoint = "GetShapeAt", CallingConvention = CallingConvention.Cdecl)]public static extern IntPtr GetShapeAt(IntPtr canvas, int index);[DllImport("FYEDC.dll", EntryPoint = "GetmCompElementCount", CallingConvention = CallingConvention.Cdecl)]public static extern int GetmCompElementCount(IntPtr editor, string type, string name);[DllImport("FYEDC.dll", EntryPoint = "GetCompElement", CallingConvention = CallingConvention.Cdecl)]public static extern int GetCompElement(ref IntPtr diagrams, IntPtr editor, string type, string name);[DllImport("FYEDC.dll", EntryPoint = "SetLineWidth", CallingConvention = CallingConvention.Cdecl)]public static extern void SetLineWidth(IntPtr canvas, IntPtr shape, int width);[DllImport("FYEDC.dll", EntryPoint = "GetLineWidth", CallingConvention = CallingConvention.Cdecl)]public static extern int GetLineWidth(IntPtr shape);[DllImport("FYEDC.dll", EntryPoint = "SetLineEndMode", CallingConvention = CallingConvention.Cdecl)]public static extern void SetLineEndMode(IntPtr canvas, IntPtr shape, int mode);[DllImport("FYEDC.dll", EntryPoint = "GetLineEndMode", CallingConvention = CallingConvention.Cdecl)]public static extern int GetLineEndMode(IntPtr shape);[DllImport("FYEDC.dll", EntryPoint = "SetFillColor", CallingConvention = CallingConvention.Cdecl)]public static extern void SetFillColor(IntPtr canvas, IntPtr shape, int color);[DllImport("FYEDC.dll", EntryPoint = "GetFillColor", CallingConvention = CallingConvention.Cdecl)]public static extern int GetFillColor(IntPtr shape);// 網格[DllImport("FYEDC.dll", EntryPoint = "SetGridShow", CallingConvention = CallingConvention.Cdecl)]public static extern void SetGridShow(IntPtr canvas, int bShow);// 存為圖片[DllImport("FYEDC.dll", EntryPoint = "SaveToPicture", CallingConvention = CallingConvention.Cdecl)]public static extern int SaveToPicture(IntPtr canvas, string fileName); #endregion 浮云繪圖DLL 接口4.2 查看浮云E繪圖API Demo接口調用示例
以C# API Demo控制線條屬性為例
private void btnLine_Click(object sender, EventArgs e){IntPtr shape = GetShapeAt(m_shapeCanvas, m_shapeSeqNum); //獲得圖元對象if (shape != IntPtr.Zero){// 獲取數據LinePropForm frm = new LinePropForm();frm.m_iSeqNum = m_shapeSeqNum;frm.m_iLineColor = GetLineColor(shape);frm.m_iLineWidth = GetLineWidth(shape);frm.m_iLineStyle = GetLineStyle(shape);frm.m_iEndMode = GetLineEndMode(shape);// 設置數據if (DialogResult.OK == frm.ShowDialog()){m_shapeSeqNum = frm.m_iSeqNum; // 可以修改默認的圖元序號if (GetShapeCount(m_shapeCanvas) - 1 < m_shapeSeqNum)m_shapeSeqNum = GetShapeCount(m_shapeCanvas) - 1;if (m_shapeSeqNum < 0)m_shapeSeqNum = 0;IntPtr shape2 = GetShapeAt(m_shapeCanvas, m_shapeSeqNum);if (shape2 != IntPtr.Zero){SetLineColor(m_shapeCanvas, shape2, frm.m_iLineColor);SetLineWidth(m_shapeCanvas, shape2, frm.m_iLineWidth);SetLineStyle(m_shapeCanvas, shape2, frm.m_iLineStyle);SetLineEndMode(m_shapeCanvas, shape2, frm.m_iEndMode);}}}}4.3 創建自己的新工程,調用FYEDC.dll控制圖元狀態
通過繪圖時設置圖元的標識(Title)、名稱(Name)業務屬性,與自己項目的業務對象關聯上,就可以找到每一個圖元對象,并控制圖元的線、區域、文字、圖片的顯示狀態。
總結
以上是生活随笔為你收集整理的快速定制开发CAD电路图(电气原理图)详细流程及源码 浮云E绘图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小白能读懂的 《手把手教你学DSP(TM
- 下一篇: 8000401a 因为配置标识不正确,系