110 lines
3.7 KiB
Python
110 lines
3.7 KiB
Python
from ctypes import *
|
|
|
|
class Parameters(Structure):
|
|
_fields_ = [
|
|
('remesh', c_bool),
|
|
('sharpAngle', c_float),
|
|
('alpha', c_float), # Unused
|
|
('scaleFact', c_float), #Unused
|
|
('hasFeature', c_bool),
|
|
('hasField', c_bool),
|
|
]
|
|
|
|
|
|
class QRParameters(Structure):
|
|
_fields_ = [
|
|
("useFlowSolver", c_bool),
|
|
("flow_config_filename", c_char_p),
|
|
("satsuma_config_filename", c_char_p),
|
|
("initialRemeshing", c_bool),
|
|
("initialRemeshingEdgeFactor", c_double),
|
|
("reproject", c_bool),
|
|
("splitConcaves", c_bool),
|
|
("finalSmoothing", c_bool),
|
|
|
|
("ilpMethod", c_int),
|
|
("alpha", c_double),
|
|
("isometry", c_bool),
|
|
("regularityQuadrilaterals", c_bool),
|
|
("regularityNonQuadrilaterals", c_bool),
|
|
("regularityNonQuadrilateralsWeight", c_double),
|
|
("alignSingularities", c_bool),
|
|
("alignSingularitiesWeight", c_double),
|
|
("repeatLosingConstraintsIterations", c_bool),
|
|
("repeatLosingConstraintsQuads", c_bool),
|
|
("repeatLosingConstraintsNonQuads", c_bool),
|
|
("repeatLosingConstraintsAlign", c_bool),
|
|
("feasibilityFix", c_bool),
|
|
("hardParityConstraint", c_bool),
|
|
|
|
("timeLimit", c_double),
|
|
("gapLimit", c_double),
|
|
("minimumGap", c_double),
|
|
("callbackTimeLimit", POINTER(c_float)),
|
|
("callbackGapLimit", POINTER(c_float)),
|
|
|
|
("chartSmoothingIterations", c_int),
|
|
("quadrangulationFixedSmoothingIterations", c_int),
|
|
("quadrangulationNonFixedSmoothingIterations", c_int),
|
|
("doubletRemoval", c_bool),
|
|
|
|
("resultSmoothingIterations", c_int),
|
|
("resultSmoothingNRing", c_double),
|
|
("resultSmoothingLaplacianIterations", c_int),
|
|
("resultSmoothingLaplacianNRing", c_double),
|
|
]
|
|
|
|
|
|
def create_string(input):
|
|
return create_string_buffer(str.encode(input, encoding='utf-8'))
|
|
|
|
|
|
def create_default_QRParameters():
|
|
callbackTimeLimitDefault = [3.00, 5.000, 10.0, 20.0, 30.0, 60.0, 90.0, 120.0]
|
|
callbackGapLimitDefault = [0.005, 0.02, 0.05, 0.10, 0.15, 0.20, 0.25, 0.3]
|
|
|
|
params = QRParameters()
|
|
|
|
# Possibly unused
|
|
params.initialRemeshing = True
|
|
params.initialRemeshingEdgeFactor = 1
|
|
params.reproject = True
|
|
params.splitConcaves = False
|
|
params.finalSmoothing = True
|
|
params.doubletRemoval = True
|
|
params.resultSmoothingIterations = 5
|
|
params.resultSmoothingNRing = 3
|
|
params.resultSmoothingLaplacianIterations = 2
|
|
params.resultSmoothingLaplacianNRing = 3
|
|
|
|
# From configs
|
|
params.alpha = 0.005
|
|
params.ilpMethod = 1
|
|
params.timeLimit = 200
|
|
params.gapLimit = 0.0
|
|
params.callbackTimeLimit = (c_float * len(callbackTimeLimitDefault))(*callbackTimeLimitDefault)
|
|
params.callbackGapLimit = (c_float * len(callbackGapLimitDefault))(*callbackGapLimitDefault)
|
|
params.minimumGap = 0.4
|
|
params.isometry = 1
|
|
params.regularityQuadrilaterals = 1
|
|
params.regularityNonQuadrilaterals = 1
|
|
params.regularityNonQuadrilateralsWeight = 0.9
|
|
params.alignSingularities = 1
|
|
params.alignSingularitiesWeight = 0.1
|
|
params.repeatLosingConstraintsIterations = 1
|
|
params.repeatLosingConstraintsQuads = 0
|
|
params.repeatLosingConstraintsNonQuads = 0
|
|
params.repeatLosingConstraintsAlign = 1
|
|
params.hardParityConstraint = 1
|
|
params.useFlowSolver = 1
|
|
params.flow_config_filename = "config/main_config/flow_virtual_simple.json".encode()
|
|
params.satsuma_config_filename = "config/satsuma/default.json".encode()
|
|
|
|
# Hardcoded in lib
|
|
params.chartSmoothingIterations = 0
|
|
params.quadrangulationFixedSmoothingIterations = 0
|
|
params.quadrangulationNonFixedSmoothingIterations = 0
|
|
params.feasibilityFix = False
|
|
|
|
return params
|