本帖最后由 sky92archangel 于 2017-6-10 17:58 编辑由于工作原因 , 需要搭建REVIT和MYSQL的工作流 (由于公司没有MSSQL或ACCESS),首先想到就是用二次开发的手段
我所做如下 :
在VS里建立了一个C#类库项目
引用MYSQL官网提供的mysql-connector-net-6.9.9-noinstall.zip内的所有dll
引用RevitAPIUI.dll和RevitAPI.dll
然后开始如下代码:
[code]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data;
using MySql.Data.MySqlClient;
using Autodesk.Revit.DB;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;
using System.Windows.Forms; //为了程序中需要使用的可视化messagebox
namespace REVIT_MYSQL_CONNECTOR_TEST
{
//固定格式开始
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
[Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.UsingCommandData)]
//固定格式结束
public class REVIT_MYSQL_CONNECTOR_TEST : IExternalCommand
{
void Reading_All_Table()
{
string constr =
"server=192.168.237.141;port=3306;user=sky92;password=revitalization;Database=testd01";
MySqlConnection mycon = new MySqlConnection(constr);
mycon.Open();
string sta = "select * from buyer";//执行一个简单的语句
MySqlCommand comm = new MySqlCommand(sta, mycon);
MySqlDataReader reader = comm.ExecuteReader();//用MySqlDataReader接收执行结果
MessageBox.Show(reader.GetString(0));
mycon.Close();
}
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) //执行函数
{
Document RevitDoc = commandData.Application.ActiveUIDocument.Document; //将当前打开的文件定位到API文件类
Transaction ts = new Transaction(RevitDoc, "MYSQL_CONNECTOR"); // Transaction 事务处理
ts.Start();
Reading_All_Table();
ts.Commit();
return Result.Succeeded;
}
}
}
[/code]
成功生成了dll文件,进入revit2016用附加addin-manager选择运行该dll
出现如下报错:
由于上述代码在纯命令行中成功连接数据库且能准确读出数据,所有我猜测是revit对mysql的兼容性问题,
对此我试过一个权宜之计,将mysql连接的行为单独写一个exe文件,然后revit中再写个插件调用该exe,但这样做始终不地道,而且会降低效率。
最好是能够直接从revit中进行数据库操作,直接形成数据流。
所以上述的问题有人能否解决呢?
BIM技术是未来的趋势,学习、了解掌握更多BIM前言技术是大势所趋,欢迎更多BIMer加入BIM中文网大家庭(http://www.chinarevit.com),一起共同探讨学习BIM技术,了解BIM应用!