ПРИМЕЧАНИЕ: вопрос недействителен, я совершил совершенно другую ошибку, см. Правку в конце.
Я хочу просто прочитать файл STL с помощью класса vtkSTLReader. Мой код для этого выглядит следующим образом:
vtkSmartPointer<vtkSTLReader> reader = vtkSmartPointer<vtkSTLReader>::New();
reader->SetFileName(path.c_str());
reader->Update();
vtkSmartPointer<vtkPolyData> poly_data = reader->GetOutput();
, а затем код переходит к отображению поли данных.
Это работает до некоторого градуса. Код в том виде, в каком он есть, будет игнорировать что-либо в path
, кроме имени файла, а затем искать этот файл везде, где я выполняю свою программу.
Например, если я иду как path = /home/local/users/myusername/file.stl
,если программа находится в /some_path/somefolder/myprogram
при вызове ее в консоли, находящейся в /some_path/
, она будет работать только в том случае, если (и только если) будет копия файла в /some_path/file.stl
.
Если я вместо этого выполнюпрограмма изнутри /some_path/somefolder
, она будет работать, только если есть /some_path/somefolder/file.stl
.
Я даже пошел и попробовал, что произойдет, если я добавлю строку кода
path = "/dsgsdmklgmoeg/" + path;
и результатостается точно таким же.
Как показывают мои пути, я работаю под Linux.
Я попытался указать абсолютный путь, как указано выше, относительный путь от места выполнения, а также относительный путь от исполняемого файла (на всякий случай).
Для относительного пути я перепробовал всевозможные варианты того, что, как мне кажется, может хотеть, с ведущим ./
, с и без ведущего /
.
по абсолютному пути попробовал заменить всекосая черта с обратной косой чертой, мысль о том, что она может использовать пути в стиле Windows.
Я понимаю, что быстрым решением было бы просто скопировать файл в требуемое место, но это, безусловно, не является постоянным решением.
Кто-нибудь имел опыт с этим? Это какая-то особенность vtk?
Если это важно, я использую vtk 5.6.1 (и не могу перейти на более высокую версию из-за некоторых требований совместимости).
Редактировать: я понял, чтоЯ сделал очень простую ошибку, вместо path.c_str()
в моем исходном коде было file.c_str()
, а file
- переменная, из которой собран path
. Я не допустил ошибку при наборе кода выше, что сделало вопрос недействительным.