Message 1 of 2
Decal API in direct modeling mode raises "RuntimeError: 2 : InternalValidationError : timelineObj"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I tested new Decal API and it works well in parametric modeling mode. But I think it doesn't in direct modeling mode.
The code below runs OK for parametric modeling mode, but not for direct modeling mode.
import traceback
import sys
import pathlib
import adsk.core as ac
import adsk.fusion as af
IMG_PATH = pathlib.Path(sys.base_prefix).absolute() / 'Python/AddInSamples/CommandSample/commands/Basic/resources/32x32.png'
def run(context):
app: ac.Application = ac.Application.get()
try:
ui = app.userInterface
test_decal(app, True)
test_decal(app, False)
except Exception:
msg = traceback.format_exc()
print(msg)
if ui is not None:
ui.messageBox('Failed:\n{}'.format(msg))
def should_true(x):
if not x:
raise Exception()
def create_profile(root_comp: af.Component):
s = root_comp.sketches.add(root_comp.xYConstructionPlane)
should_true(s.sketchCurves.sketchLines.addTwoPointRectangle(
ac.Point3D.create(-1., -2., 0.),
ac.Point3D.create(2., 1., 0.)
))
return s.profiles.item(0)
def create_face(root_comp: af.Component):
profile = create_profile(root_comp)
pfs = root_comp.features.patchFeatures
p_in = pfs.createInput(profile, af.FeatureOperations.NewBodyFeatureOperation)
pf = pfs.add(p_in)
return pf.bodies[0].faces[0]
def test_decal(app: ac.Application, is_parametric_mode):
_ = app.documents.add(ac.DocumentTypes.FusionDesignDocumentType)
app.activeProduct.designType = af.DesignTypes.ParametricDesignType if is_parametric_mode else af.DesignTypes.DirectDesignType
root_comp: af.Component = app.activeProduct.rootComponent
face = create_face(root_comp)
if is_parametric_mode:
base_feature = root_comp.features.baseFeatures.add()
should_true(base_feature.startEdit())
o = ac.Point3D.create()
di = root_comp.decals.createInput(str(IMG_PATH), [face], o)
if is_parametric_mode:
di.targetBaseFeature = base_feature
should_true(base_feature.finishEdit())
_ = root_comp.decals.add(di)The exception is "RuntimeError: 2 : InternalValidationError : timelineObj" at "root_comp.decals.add(di)".