请参阅短片编辑
正在寻找pythonOCC文档。
我的.step文件以英寸为单位。以下是.step文件中用于确认的行:
#50 = ( CONVERSION_BASED_UNIT( 'INCH', #122 )LENGTH_UNIT( )NAMED_UNIT( #125 ) );
#51 = ( NAMED_UNIT( #127 )PLANE_ANGLE_UNIT( )SI_UNIT( $, .RADIAN. ) );
#52 = ( NAMED_UNIT( #127 )SI_UNIT( $, .STERADIAN. )SOLID_ANGLE_UNIT( ) );
~~~
#122 = LENGTH_MEASURE_WITH_UNIT( LENGTH_MEASURE( 25.4000000000000 ), #267 );
当我使用手动坐标制作边框时,我发现我的盒子很小便:
位置关闭,因为STEP模型不是0,0,0。
原来pythonOCC会自动将所有内容转换为MM。当我在INCHES中手动输入框尺寸时,它将它们读作MM。我试图手动转换所有东西(英寸* 25.4),但这是有问题和丑陋的。
我知道pythonOCC使用STEP文件行#122作为转换率,因为我已将其从上面更改为:
#122 = LENGTH_MEASURE_WITH_UNIT( LENGTH_MEASURE( 1.0 ), #267 );
当我这样做时,我的边界框和步骤模型完美排列......但我仍然知道PythonOCC认为它正在转换为MM。
任何人都有改变pythonocc默认单位的经验吗? 我试图在以下的occ包中找到: OCC.STEPControl,OCC.Display,OCC.AIS 和许多其他人。
编辑:
当我使用我自己的坐标绘制我的盒子时:
minPoint = gp_Pnt(minCoords)
maxPoint = gp_Pnt(maxCoords)
my_box = AIS_Shape(BRepPrimAPI_MakeBox(minPoint, maxPoint).Shape())
display.Context.Display(my_box.GetHandle())
我的坐标是英寸,但是pythonOCC将它们读作MM。如果我可以在英寸中读取自己的坐标,这将得到解决。在OCC中找不到任何内容。显示我的坐标的解释方式。像“OCC.Display。 inputUnitsAre(”INCHES“)”?
编辑2:
仔细看看这里:
https://dev.opencascade.org/doc/refman/html/class_units_a_p_i.html
在UnitsAPI_SystemUnits和SetCurrentUnit下...虽然我不确定如何在python中实现尚未测试。正在努力。
答案 0 :(得分:1)
您将找到units here
看看$(document).ready(function() {
$("#subjob").live("change", function() {
$("#account").val($(this).find("option:selected").attr("value"));
});
$('#subjob option[value=subjob1]').attr('selected','selected').change();
模块,您将看到以下功能:
OCC.Extended.DataExchange
默认情况下,def write_step_file(a_shape, filename, application_protocol="AP203"):
""" exports a shape to a STEP file
a_shape: the topods_shape to export (a compound, a solid etc.)
filename: the filename
application protocol: "AP203" or "AP214"
"""
# a few checks
assert not a_shape.IsNull()
assert application_protocol in ["AP203", "AP214IS"]
if os.path.isfile(filename):
print("Warning: %s file already exists and will be replaced" % filename)
# creates and initialise the step exporter
step_writer = STEPControl_Writer()
Interface_Static_SetCVal("write.step.schema", "AP203")
# transfer shapes and write file
step_writer.Transfer(a_shape, STEPControl_AsIs)
status = step_writer.Write(filename)
assert status == IFSelect_RetDone
assert os.path.isfile(filename)
以毫米为单位写入单位,因此我很好奇使用哪种函数/方法导出OCC
文件。
STEP
虽然文档声明此方法Interface_Static_SetCVal("Interface_Static_SetCVal("write.step.unit","MM")
,但必须明确设置此单位是意外的。