Community
Fusion API and Scripts
Got a new add-in to share? Need something specialized to be scripted? Ask questions or share what you’ve discovered with the community.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to report a (real) software bug? Anybody cares?

2 REPLIES 2
SOLVED
Reply
Message 1 of 3
jiri.manak
243 Views, 2 Replies

How to report a (real) software bug? Anybody cares?

I reported a bug a couple of days before.  No reactions, no response.  I'm a disappointed, but I also try to understand.

I have more than 20 years experience in software development.  

 

1. I am pretty sure that I found real bug. The bug prevents me to finish my add-in. The bug force me to find a workaround which must notice user of Fusion and my add-in that that if you draw a sketch this way you have to save it as DXF and load it back again, because this is the way how deal with that.

2. I can reproduce the bug. As a software developer I can even imagine when and why this bug occurs.  (joining two independent lists of sketch entities ...., bug in joining after removing..)  I will be glad to support your developers in diagnosis.

3. I also wrote to guys who are checking new submitted add-ins. They advised me to posted it here. Also the post from the year 2015 'HOW TO REPORT BUGS & ISSUES' doesn't say anything useful for bug reporting.

4. I can I understand that my description wasn't clear ... are need some details or whatever. I will appreciate any feedback and advice.

5. I can understand that there is no bug reporting open for public, because there might be lot of spam. I understand that bug reporting spam this the main concern.

6. On the other side all the add-in developers are testers for free!   

 

Fusion 360 is a great tool. Great decision to open API for C++ and Python. It allows us to create much more sophisticated tools than only a kind of 'parametric modeling' in some strange scripting language. I will be glad to continue in creating add-ins and, if possible, improving the Fusion.

 

Then please tell me, how to report software bug to make Fusion 360 API even better.

thank you 

Jiri 

 

the bug decription: https://forums.autodesk.com/t5/fusion-360-api-and-scripts/getting-wrong-sketchentities-from-profilel...

 

2 REPLIES 2
Message 2 of 3
goyals
in reply to: jiri.manak

We really appreciate the feedback provided by API users. I think reporting defects on API forum is perfectly fine but it really help us to investigate it quickly if users could share the script showing the issue and possibly the design also.  We logged the defects in our bug tracking system once the problem is reproduced on our side. Thanks.



Shyam Goyal
Sr. Software Dev. Manager
Message 3 of 3
jiri.manak
in reply to: goyals

 

I have managed to extract the problem. The python code is below,

It occurs by hand made sketch - not imported dxf or svg.

- create new sketch, 

- create a loop from lines or any other curves

- add a box which cuts the line and strip the lines to extend the loop

(screenshots  in my original post are good example, but it works in general  when loop is expanded by striping)

- run this script 

- it writes list of points (start and end) into a file in fusion deployment directory by default

- duplicates are identified, 

 

if you save this sketch as DXF and load it back again, it consolidates and the duplication effect disappears (reading profile is ok)

 

information when this bug will be corrected will be appreciated

Jiri

 

# Author-JiriManak
# Description-Demonstration of the bug

import adsk.core, adsk.fusion, adsk.cam, traceback


def point2str(p):
    return "[{:4.2f}, {:4.2f}, {:4.2f}]".format(p.x, p.y, p.z)


def get_curve_info(profile_curve):
    sketch_entity = profile_curve.sketchEntity
    class_type = sketch_entity.objectType
    sketch_curve = None
    start_p = None
    end_p = None
    if class_type == adsk.fusion.SketchLine.classType():
        sketch_curve = adsk.fusion.SketchLine.cast(sketch_entity)
    if class_type == adsk.fusion.SketchArc.classType():
        sketch_curve = adsk.fusion.SketchArc.cast(sketch_entity)
    if class_type == adsk.fusion.SketchConicCurve.classType():
        sketch_curve = adsk.fusion.SketchConicCurve.cast(sketch_entity)
    if class_type == adsk.fusion.SketchEllipticalArc.classType():
        sketch_curve = adsk.fusion.SketchEllipticalArc.cast(sketch_entity)
    if class_type == adsk.fusion.SketchFittedSpline.classType():
        sketch_curve = adsk.fusion.SketchFittedSpline.cast(sketch_entity)
    if class_type == adsk.fusion.SketchFixedSpline.classType():
        sketch_curve = adsk.fusion.SketchFixedSpline.cast(sketch_entity)

    if sketch_curve:
        start_p = adsk.core.Point3D.cast(sketch_curve.startSketchPoint.geometry)
        end_p = adsk.core.Point3D.cast(sketch_curve.endSketchPoint.geometry)
    return class_type, start_p, end_p


def publish_curve_info(index, curve_info):
    s = ""
    class_type, start_p, end_p = curve_info
    s += "[{:02d}] Sketch Curve: {}\n".format(index, class_type)
    s += "     start point: {}\n".format(point2str(start_p))
    s += "     end point:   {}\n".format(point2str(end_p))
    s += "\n"
    return s


def find_duplicates(collection):
    a_index = 0

    for info_a in collection:
        b_index = 0
        for info_b in collection:
            if a_index == b_index:
                continue
            a_class_type, a_start_p, a_end_p = info_a
            b_class_type, b_start_p, b_end_p = info_b
            if adsk.core.Point3D.cast(a_start_p).isEqualToByTolerance(b_start_p, 0.001):
                if adsk.core.Point3D.cast(a_end_p).isEqualToByTolerance(b_end_p, 0.001):
                    return a_index, b_index,
            b_index += 1
        a_index += 1
    return -1, -1


def run(context):
    ui = None

    try:
        s = "HandDrawnCurvesBug\n"
        s += "List of curves:\n"
        app = adsk.core.Application.get()
        ui = app.userInterface
        active_sketch = app.activeEditObject
        profiles = active_sketch.profiles

        collection = list()

        if profiles.count < 1:
            ui.messageBox("Profile not found !")
        else:
            profile = profiles.item(0)
            profile_loops = profile.profileLoops
            if profile_loops.count > 0:
                profile_loop = profile_loops.item(0)
                profile_curves = profile_loop.profileCurves
                index = 0
                for profile_curve in profile_curves:
                    curve_info = get_curve_info(profile_curve)
                    collection.append(curve_info)
                    s += publish_curve_info(index, curve_info)
                    index += 1

        d0, d2 = find_duplicates(collection)
        if d0 > -1:
            s += "DUPLICATES FOUND: [{:02d}] == [{:02d}]\n".format(d0, d2)

        output = open("curves.txt", 'w')
        output.writelines(s)
        output.close()


    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

 

 

 

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report