2017-10-06 2 views
0

Excel 스프레드 시트를 Revit의 Windows 양식 테이블로 표시하려고합니다. VisualStudio에서 코드를 작성한 후 Windows 양식을 작성했습니다. (I 경로 및 시트 번호를 입력하도록)하고 있음을 실행함으로써, 윈도우 형태를 열고 도시 표 형식 데이터를 엑셀`Excel 정보를 표시하는 방법 Revit에서 Revit API 및 Windows 양식을 Visual Studio로 표시하는 방법

스페이스 ShowDataWindowsForm { 공용 부분 Form1 클래스 : 폼 { 공개를 Form1() { InitializeComponent(); }

private void button1_Click(object sender, EventArgs e) 
    { 
     string PathConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
     textBoxPath.Text + ";Extended Properties=Excel 12.0;"; 
     OleDbConnection conn = new OleDbConnection(PathConn); 

     OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("SELECT * FROM 
     [" + textBoxSheet.Text + "$]", conn); 
     DataTable dt = new DataTable(); 
     myDataAdapter.Fill(dt); 

     dataGridView1.DataSource = dt; 
    } 
} 

는 그럼, 외부 명령을 만든위한 윈도우 양식을 추가하고 정확하게 동일한 프로세스를했고,이 외부 명령에 대한 코드입니다

[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.ReadOnly)] 

공용 클래스 iShowDataWindowsForm : IExternalCommand { 정적 AddInId appId = 새 AddInId (새 Guid ("DB98294F-89D9-4EAE-A990-63A0694F91CC")); 공공 결과 실행 (ExternalCommandData commandData, 심판 문자열 메시지, ELEMENTSET ELEMENTSET) 는 {

using (Form1 thisform = new Form1()) 
    { 
     thisform.ShowDialog(); 

    } 

    return Result.Succeeded; 
} 

내가 REVIT를 열고 플러그인을 실행하면 내 문제는, 그것은 윈도우 폼을 열고 비주얼 스튜디오에서 같은, I 경로 및 시트 번호를 입력하지만,보기 버튼을 클릭하면 Revit이 중단되고 닫힙니다. 누구든지 나를 도울 수 있으면 고맙습니다. 이 그림은 Visual Studio에서 작동하는 방식을 보여 주지만 Revit에서는 충돌이 발생합니다. See picture

enter image description here

난 그냥 코드 자체에 경로와 시트 번호를 넣어

, 지금은 가만히 Visual Studio에서보기 하단을 클릭, 그러나로 일하고 것은하지 창 양식에 대한 REVIT 최종 코드의 충돌` 네임 스페이스 ExcelVisualStudio { 공용 부분 클래스 Form1 : 양식 { public Form1() { InitializeComponent();

private void button1_Click(object sender, EventArgs e) 
    { 
     string PathConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @"C:\Users\farshidmoosavi\Desktop\Schedule3.xls" + ";Extended Properties=Excel 12.0;"; 
     OleDbConnection conn = new OleDbConnection(PathConn); 

     OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("SELECT * FROM [" + "Sheet1" + "$]", conn); 
     DataTable dt = new DataTable(); 
     myDataAdapter.Fill(dt); 

     dataGridView1.DataSource = dt; 
    } 
} 

}

} 는` 나는 코드를 디버깅하고 나는이 충돌하는 프로그램을 일으키는 원인이되는 오류가 발견 : 비 사용자 코드 'System.Data.Common.DbDataAdapter을 통해 스테핑 :에 단계. ' 'Revit.exe '(Managed (v4.0.30319)) :'C : \ windows \ Microsoft.Net \ assembly \ GAC_64 \ System.Transactions \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Transactions.dll ' , 로딩 기호를 건너 뛰었습니다. 모듈이 최적화되고 디버거 옵션 'Just My Code'가 활성화됩니다. System.Data.dll에서 'System.AccessViolationException'예외가 throw되었습니다.'Revit.exe : Managed (v4.0.30319)'프로그램이 -1073741819 (0xc0000005) '액세스 위반'코드로 종료되었습니다.

아직도 해결 방법을 모릅니다.

답변

0

방금 ​​문제가 해결되었습니다. 처음에는 Revit 2018을 사용해 보았습니다. 이점은 오류가 발생하여 충돌이 발생하지 않는다는 것입니다. Google은 오류를 검색하여 2013 버전, Access Engine 64b, Excel 스프레드 시트로 저장 한 파일 형식을 .xls로 변경했습니다. 그런 다음 효과가있었습니다.

관련 문제