Привет и заранее спасибо за ваше время, читая это.
У меня проблема отладки моего решения в VS2010. Чтобы быть более конкретным, вот настройки:
Вот странная вещь:
Размещение производственного кода немного чувствительно. Исключение является только общим, о котором я упоминал выше. Окно исключений буквально говорит:
KernelBase.dll! 000007fefd8f9e5d ()
[Untenge angegebene Rahmen sind möglicherweise nicht korrekt und / oder fehlen, keine Symbole geladen für KernelBase.dll] clr.dll! 000007fee65c4e13 ()
clr.dll! 000007fee65c597e ()
000007fe898bad42 ()
000007fe898b65be ()
000007fe898b646b ()
000007fe898b6144 ()
000007fe898b5fa3 ()
000007fe898b5d4b ()
clr.dll! 000007fee644f2ee ()
RevitClient.dll! RvtToMyProg :: getPropMappedValue (std :: basic_string, std :: allocator> & Res = «», int Sel = 0, DigitalModelMapping & DigiModMap = {…}, const CadElem & Elem = {…}, std :: basic_string, std :: allocator> & Prop = «NAME») Zeile 721 + 0x8d байт C ++
RevitClient.dll! RvtToMyProg :: addElementAttributes (int Sel = 0, const CadElem & CadElem = {…}, DigitalModelMapping & DigiModMap = {…}, дескриптор const * EntDesc = 0x000000003ace72b0, Entity * XDataEnt = 0x0000000056ad70a0) Zeile 630 + 0x75 байт C ++
RevitClient.dll! RvtToMyProg :: dataToMyProg (DigitalModelMapping & DigiModMap = {…}, std :: set>>, std :: less>>>, std :: allocator>>>> & Имена классов = 3, дескриптор & ModDsc = {…}, XDataModel & XData = {…}) Zeile 575 + 0x46 байт C ++
000007fe898a7aa3 ()
000007fe898a79eb ()
000007fe898a7837 ()
000007fe898a5aef ()
000007fe898a5624 ()
clr.dll! 000007fee644f2ee ()
RevitAPIUILink.dll! 0000000033c31bfb ()
RevitAPIUILink.dll! 0000000033c326d8 ()
DesktopMFC.dll! 00000000007e1843 ()
000007fe898a471e ()
000007fe898a044f ()
000007fe8989ff7b ()
000007fe8989fc3e ()
000007fe89892e9d ()
000007fe89892d33 ()
000007fe87d0da2a ()
000007fe87d0d81b ()
000007fe89892b1a ()
000007fe87d0d2e6 ()
000007fe87d0ca76 ()
000007fe87d0955a ()
000007fe89892880 ()
000007fe898925c9 ()
000007fe8989f382 ()
000007fe89852427 ()
000007fe87d0d2e6 ()
000007fe87d0ca76 ()
000007fe898439be ()
000007fe87d0d2e6 ()
000007fe87d0ca76 ()
000007fe87d0955a ()
000007fe896da930 ()
000007fe8943dbb8 ()
000007fe8943cbcb ()
000007fe8943c84f ()
000007fe896d3520 ()
000007fe8796a6d8 ()
000007fe8796a261 ()
000007fe873b09ae ()
000007fe873b087c ()
000007fe873b06f5 ()
000007fe873b0507 ()
000007fe873afee7 ()
000007fe873acd2e ()
000007fe873ac383 ()
clr.dll! 000007fee644f2ee ()
user32.dll! 0000000077919bd1 ()
user32.dll! 00000000779198da ()
user32.dll! 00000000779167c2 ()
mfc100u.dll! CWnd :: IsDialogMessageW (tagMSG * lpMsg = 0x0000000000000202) Zeile 198 C ++
mfc100u.dll! CControlBar :: PreTranslateMessage (tagMSG * pMsg = 0x000000900abd6714) Zeile 445 + 0x2c байт C ++
mfc100u.dll! CWnd :: WalkPreTranslateTree (HWND__ * hWndStop = 0x000000000922e8a0, tagMSG * pMsg = 0x0000000000000002) Zeile 3311 + 0x10 байт C ++
mfc100u.dll! AfxInternalPreTranslateMessage (tagMSG * pMsg = 0x0000000140003070) Zeile 233 + 0x15 байт C ++
mfc100u.dll! AfxInternalPumpMessage () Zeile 178 + 0x12 байт C ++
mfc100u.dll! CWinThread :: Run () Zeile 634 C ++
mfc100u.dll! AfxWinMain (HINSTANCE__ * hInstance = 0x0000000000000001, HINSTANCE__ * hPrevInstance = 0x0000000000000000, wchar_t * lpCmdLine = 0x0000000000000000, int nCmdShow = 0 + C ++ C ++ 47 Byte 47
Revit.exe! 00000001400011d6 ()
kernel32.dll! 00000000777f652d ()
ntdll.dll! 0000000077a2c521 ()
может быть пример кода:
c++:
dostuff()
{
//it = std::list::iterator
std::string = this->MixedMode->GetElementPropertyValue(Sel, it->Name, it->Api);
}
mixed mode:
std::string RevitBridge::GetElementPropertyValue(int Sel, const std::string &Name, const std::string &ApiName)
{
String^ sName = gcnew String(Name.c_str());
String^ sApiName = gcnew String(ApiName.c_str());
String^ s = RevitUtils::GetElementPropertyValue(Sel, sName, sApiName);
return std::string(msclr::interop::marshal_as<std::string>(s));
}
c#:
public String GetElementPropertyValue(int Sel, String Name, String ApiName)
{
if (Sel < 0)
{
return "";
}
if (Name.Equals("_ElementID_"))
{
return this.GetElementID(Sel);
}
BuiltInParameter bip = BuiltInParameter.INVALID;
try
{
bip = (BuiltInParameter)Enum.Parse(typeof(BuiltInParameter), ApiName);
}
catch (Exception) {}
if (ApiName.Equals("INVALID") || BuiltInParameter.INVALID == bip)
{
return this.GetElemParamValueAsString_ByName(iters[Sel].Current, Name);
}
return this.GetElemParamValueAsString(iters[Sel].Current, bip);
}
Я был бы рад за любой совет, указывающий мне в правильном направлении.
Спасибо,
Корнель
Задача ещё не решена.
Других решений пока нет …