Возможно, это поможет другим, пытающимся учиться с помощью руководств/документации/stackoverflow.
Как я могу вращать или перемещать TopoDS_Shape (или любой другой объект), предоставляя координаты, углы и оси? Например: если моя часть находится в (5,0, 1,0, 0,0), могу ли я переместить ее в (0,0, 0,0, 0,0)? Или заставить его смотреть на новое направление?
Попытки методов (не включая то, что я считаю неважным кодом). Я попытался включить некоторые из вещей, на которые я потратил большую часть своего времени. Не могу вспомнить все другие попытки, которые я сделал. Может быть, кто-то, имеющий опыт работы с PythonOCC или OpenCascade, поймет, где я ошибаюсь.
display, start_display, add_menu, add_function_to_menu = init_display()
aResShape = openFile.open(fileToOpen) #RETURNS SHAPE FROM STEP FILE
aResShape.Orientable(True)
#EXAMPLE
aResShape.Location().Transformation().SetRotation(gp_Quaternion(1., 1., 0., 1.))
#EXAMPLE
aResShape.Location().Transformation().SetTransformation(a,b)
#EXAMPLE
aResShape.Move(TopLoc_Location(gp_Trsf( gp_Trsf2d(1., 0.) )))
#EXAMPLE
aResShape.Reverse()
#EXAMPLE
p1 = gp_Pnt(700., 10., 80.)
d1 = gp_Dir(50., 50., 60.)
a = gp_Ax3(p1, d1)
p2 = gp_Pnt(2., 3., 4.)
d2 = gp_Dir(4., 5., 6.)
b = gp_Ax3(p2, d2)
print(aResShape.Location().Transformation().Transforms())
aResShape.Location().Transformation().SetTransformation(a,b)
print(aResShape.Location().Transformation().Transforms()) #RETURNS SAME VALUES
#EXAMPLE (TRYING TO SEE WHAT WORKS)
transform = gp_Trsf
transform.SetRotation(
gp_Ax1(
gp_Pnt(0.,0.,0.),
gp_Dir(0.,0.,1.)
),
1.570796
)
print(transform)
display.DisplayShape(aResShape, color='Black', update=True)
display.FitAll()
display.SetModeWireFrame()
start_display()
Иногда я получаю такие ошибки:
NotImplementedError: Wrong number or type of arguments for overloaded function 'new_gp_Trsf2d'.
Possible C/C++ prototypes are:
gp_Trsf2d::gp_Trsf2d()
gp_Trsf2d::gp_Trsf2d(gp_Trsf const &)
Но большую часть времени я ничего не получаю, и форма на дисплее не меняется.
Провел несколько дней здесь: https://cdn.rawgit.com/tpaviot/pythonocc-core/804f7f3/doc/apidoc/0.18.1/index.html
https://dev.opencascade.org/doc/refman/html/index.html
https://github.com/tpaviot/pythonocc-demos/tree/master/examples
Вот я знаю какие функции передать думаю, но ничего не получается.
Может быть, дисплей просто не показывает мне изменения, которые происходят на самом деле?
Ранее я задавал другой вопрос о PythonOCC (pythonOCC устанавливает единицы измерения по умолчанию в дюймах), но Я думаю, что мне действительно не хватает чего-то основного.
Кто-нибудь может подумать, почему мне не удается внести какие-либо реальные изменения? Спасибо за ваше время!