Revit二次开发——不启动Revit,做rvt文件数据导出
Node.js部分
调用C#端供外部调用的dll
由于.Net 的WebSevice在引用RevitNet.dll是出现环境不匹配的问题,这里我们的web服务端是用node.js来做的,通过引用edge.js模块来实现在node.js中调用C#的dll,代码如下:
exportModel: async function(file, params){
try {
let dllPath = path.join(path.resolve(__dirname, '..', '..'), 'assets', 'ExportModel/ExternalReference/bin/Debug/ExternalReference.dll');
//let dllPath = path.join(path.resolve(__dirname, '..', '..'), 'assets', 'ExportModelControl/ExportModelControl/bin/Debug/ExportModelControl.dll');
//let exePath = path.join(path.resolve(__dirname, '..', '..'), 'assets', 'ExportModel/ExportModel/bin/Debug/ExportModel.exe')
/**模型源文件存储路径 */
let modelSavePath = sails.config.custom.model_sourcefilesPath;
if (!fs.existsSync(modelSavePath)) await fs.mkdirSync(modelSavePath);
let thisUpload = await fileHandleUtil.uploadSync(file, {
dirname: modelSavePath });
let modelPath = path.join(sails.config.custom.model_sourcefilesPath, path.basename(thisUpload[0].fd));
var invokedll = null;
// console.log("exe路径:" + exePath);
console.log("模型源文件路径:" + modelPath);
//console.log("导出文件路径:" + exePath);
if (fs.existsSync(dllPath)) {
invokeDll = edge.func({
assemblyFile: dllPath,
typeName: 'ExternalReference.Program',
methodName: 'Export'
})
}else{
assertUtil(null, 'dll path does exist!');
}
var result = null;
if(invoked