• Login
sketchucation logo sketchucation
  • Login
🤑 SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

Bugsplat using followme tool

Scheduled Pinned Locked Moved Developers' Forum
9 Posts 2 Posters 2.7k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    torel
    last edited by 17 Aug 2017, 11:49

    Hi there,

    follow me tool makes Sketchup (2016, 2017, at least windows) choke.

    copy-paste the following script to the ruby console and press enter to reproduce:

    ` require 'sketchup.rb'

    module BUGREPRODUCE

    def self.run()
    points = [];

    points << Geom::Point3d.new(0.0, 0.0, 15.536701375817504);
    points << Geom::Point3d.new(0.0, 0.1455402865170477, 16.06675105539755);
    points << Geom::Point3d.new(2.719013278138669e-07, 0.14554017490918456, 16.06675087539852);
    points << Geom::Point3d.new(-3.2744502844393166e-07, 0.14554064565457897, 16.06675021430346);
    points << Geom::Point3d.new(-0.02123124756131191, 0.1668122822181994, 16.08646506708478);
    points << Geom::Point3d.new(-0.021769667428890884, 0.17891246196634392, 16.100796013701032);
    points << Geom::Point3d.new(-0.024828723773793752, 0.1790746885799052, 16.099949997730295);
    points << Geom::Point3d.new(-0.02494299885008788, 0.18614040534209242, 16.115179179976455);
    points << Geom::Point3d.new(-0.020734400531846667, 0.20977747417850726, 16.152517450871446);
    points << Geom::Point3d.new(-0.014647437273319667, 0.2699754058150877, 16.23649272341899);
    points << Geom::Point3d.new(-0.027523341977185957, 0.3490327994612702, 16.384121146341734);
    points << Geom::Point3d.new(-0.022198351358655645, 0.4305920894240949, 16.51344997117194);
    points << Geom::Point3d.new(-0.02874957694059978, 0.4648922724241097, 16.57935230427668);
    points << Geom::Point3d.new(-0.023203948967161173, 0.5452487542221559, 16.74606444711391);
    points << Geom::Point3d.new(-0.010704430377387405, 0.63496170043671, 16.966398678564296);
    points << Geom::Point3d.new(0.0007576625752319971, 0.7278976286529141, 17.21670946629168);
    points << Geom::Point3d.new(0.0041848521711958095, 0.8348042221622771, 17.491070988920132);
    points << Geom::Point3d.new(0.003907440348870358, 0.9507069442368434, 17.790614477725285);
    points << Geom::Point3d.new(0.0023504294633596994, 1.0713813609641223, 18.114190742737147);
    points << Geom::Point3d.new(0.000976919949907374, 1.1935580486102733, 18.459579533835484);
    points << Geom::Point3d.new(0.00025384540472028267, 1.3153084028293316, 18.82453507345195);
    points << Geom::Point3d.new(3.877173896975206e-05, 1.435912727981743, 19.206974588085153);
    points << Geom::Point3d.new(-6.495769241591236e-05, 1.555121975383521, 19.60501521826036);
    points << Geom::Point3d.new(-0.00018816549373112552, 1.6726192979900383, 20.016991621576935);
    points << Geom::Point3d.new(-0.0002996825560126547, 1.7878617560411263, 20.441433012720474);
    points << Geom::Point3d.new(-0.0003844481854876557, 1.9003309425714006, 20.876963276436953);
    points << Geom::Point3d.new(-0.0004225620994784744, 2.009719296697121, 21.322254501066723);
    points << Geom::Point3d.new(-0.0004261611079732261, 2.1158062964334943, 21.77607314165695);
    points << Geom::Point3d.new(-0.00042915585228664845, 2.218403643096096, 22.237297924109328);
    points << Geom::Point3d.new(-0.00044111939018472065, 2.3173804359494237, 22.704911284706526);
    points << Geom::Point3d.new(-0.00045113084656019103, 2.4126402590776843, 23.17799852248581);
    points << Geom::Point3d.new(-0.00045319789265006223, 2.50410043543964, 23.65574377344935);
    points << Geom::Point3d.new(-0.0004505302263106896, 2.5917000089287248, 24.1374198383653);
    points << Geom::Point3d.new(-0.00044649162378089107, 2.6754053756155725, 24.622379749469797);
    points << Geom::Point3d.new(-0.00044087161316097557, 2.755206851553207, 25.1100508758748);
    points << Geom::Point3d.new(-0.0004322076475345324, 2.831112802141766, 25.59992985200044);
    points << Geom::Point3d.new(-0.0004197323141423617, 2.903143106568622, 26.091577940878555);
    points << Geom::Point3d.new(-0.0004032592223930364, 2.971324835085403, 26.584616400234918);
    points << Geom::Point3d.new(-0.00038262337584432735, 3.0356916318222784, 27.078721753512713);
    points << Geom::Point3d.new(-0.0003576353637216534, 3.096284317287839, 27.573621448738884);
    points << Geom::Point3d.new(-0.0003283189797823874, 3.1531503346553786, 28.069090221961265);
    points << Geom::Point3d.new(-0.00029497735230204873, 3.2063420632014483, 28.564947091217213);
    points << Geom::Point3d.new(-0.000257982384450314, 3.2559150449566454, 29.06105283925429);
    points << Geom::Point3d.new(-0.00021748959321216165, 3.3019267190177493, 29.557307948652756);
    points << Geom::Point3d.new(-0.00017330875760924232, 3.3444355881477854, 30.053650998479302);
    points << Geom::Point3d.new(-0.00012499843816578474, 3.383500570761029, 30.550057518066325);
    points << Geom::Point3d.new(-7.208138263162825e-05, 3.4191804406943245, 31.046539297178438);
    points << Geom::Point3d.new(-1.4199468588330353e-05, 3.4515333570685165, 31.54314417467103);
    points << Geom::Point3d.new(4.8891866209191895e-05, 3.4806165106052984, 32.03995633382591);
    points << Geom::Point3d.new(0.00011742136629336917, 3.506485853632938, 32.53709711605202);
    points << Geom::Point3d.new(0.0001916839704873506, 3.5291958588266406, 33.03472631645356);
    points << Geom::Point3d.new(0.00027206254456804224, 3.548799254400635, 33.53304389955728);
    points << Geom::Point3d.new(0.0003590168493198209, 3.565346685778866, 34.0322920995674);
    points << Geom::Point3d.new(0.0004530771981446183, 3.5788863294099817, 34.53275790991975);
    points << Geom::Point3d.new(0.0005548273651954422, 3.5894635062525313, 35.0347759608105);
    points << Geom::Point3d.new(0.0006648746629731387, 3.597120283637328, 35.538731753318444);
    points << Geom::Point3d.new(0.0007838526255079047, 3.6018950822512648, 36.04506520233846);
    points << Geom::Point3d.new(0.0009124695034510758, 3.6038223363148374, 36.5542744201175);
    points << Geom::Point3d.new(0.0010515338220411805, 3.6029320672658343, 37.06691966618542);
    points << Geom::Point3d.new(0.0012019066309225356, 3.5992492095741486, 37.58362741657054);
    points << Geom::Point3d.new(0.0013644150153662902, 3.5927928443576764, 38.10509453186442);
    points << Geom::Point3d.new(0.001539797802850731, 3.583575663254682, 38.63209249917592);
    points << Geom::Point3d.new(0.0017287432708559842, 3.571603814743944, 39.16547169744606);
    points << Geom::Point3d.new(0.001932044651863068, 3.556876991487376, 39.706165614754255);
    points << Geom::Point3d.new(0.0021508309115887887, 3.53938853502529, 40.25519494388838);
    points << Geom::Point3d.new(0.0023866986812358104, 3.51912543908636, 40.81367149688645);
    points << Geom::Point3d.new(0.0026415421628975485, 3.4960682724320034, 41.38280189865228);
    points << Geom::Point3d.new(0.0029170974378886876, 3.4701912610319914, 41.96389102545289);
    points << Geom::Point3d.new(0.003214463654428134, 3.4414626905200207, 42.5583450987337);
    points << Geom::Point3d.new(0.003534209023669325, 3.4098459863472317, 43.1676742435361);
    points << Geom::Point3d.new(0.003878029013559309, 3.3753028155918936, 43.7934942955934);
    points << Geom::Point3d.new(0.004251244293461213, 3.3377963880113706, 44.43752760255171);
    points << Geom::Point3d.new(0.00466302928099528, 3.2972885469173425, 45.101602739027065);
    points << Geom::Point3d.new(0.005125479118841679, 3.2537372815826293, 45.78765445022414);
    points << Geom::Point3d.new(0.005651458343970818, 3.207100444820471, 46.4977249798707);
    points << Geom::Point3d.new(0.006238120128795286, 3.1573099124237918, 47.233963073066654);
    points << Geom::Point3d.new(0.006866884682290008, 3.104277861460362, 47.99862136133696);
    points << Geom::Point3d.new(0.007579061318889981, 3.0480839152274712, 48.794062289489595);
    points << Geom::Point3d.new(0.008337297017733775, 2.988556934319748, 49.622722309865836);
    points << Geom::Point3d.new(0.009101815156304652, 2.9255616806221543, 50.48713043407896);
    points << Geom::Point3d.new(0.00974871793168255, 2.858854515433238, 51.389901175044564);
    points << Geom::Point3d.new(0.009873556828524786, 2.788175726468552, 52.33376003490443);
    points << Geom::Point3d.new(0.009167291292393989, 2.7138520577504237, 53.32161451374409);
    points << Geom::Point3d.new(0.008249910053624738, 2.6364364035755044, 54.35639386901754);
    points << Geom::Point3d.new(0.0070578132296502, 2.5561119372514454, 55.44072015908173);
    points << Geom::Point3d.new(0.005447198986546794, 2.473766828443217, 56.577769134272614);
    points << Geom::Point3d.new(0.0037768634107846156, 2.390042850319739, 57.77338287378068);
    points << Geom::Point3d.new(0.001988953410314857, 2.3037253416739323, 59.033661088198826);
    points << Geom::Point3d.new(4.614086363614581e-15, 2.2240648363009856, 60.3991803873057);
    points << Geom::Point3d.new(4.194623966922347e-15, 2.021877123909987, 60.910311257808026);
    points << Geom::Point3d.new(-0.00011512588956522799, 1.8894938049011412, 61.17492504928469);
    points << Geom::Point3d.new(0.00012570409648253626, 1.7337114814757928, 61.50965292617816);
    points << Geom::Point3d.new(3.9481810275111706e-05, 1.560121331968628, 61.9027595807801);
    points << Geom::Point3d.new(-0.00010795998382080503, 1.369691319049431, 62.354695114571825);
    points << Geom::Point3d.new(-7.033727636626745e-06, 1.163986824316707, 62.86589543887034);
    points << Geom::Point3d.new(-0.0003641019629735987, 0.9452564369673448, 63.43678902948206);
    points << Geom::Point3d.new(0.0005683186039710072, 0.7140993541140415, 64.06850634750532);
    points << Geom::Point3d.new(8.948429893972367e-05, 0.4697288791790583, 64.76098241277798);
    points << Geom::Point3d.new(4.194623966922387e-16, 0.20218771239100042, 65.51048909232898);
    points << Geom::Point3d.new(0.0, 0.0, 66.02161996283131);

    edges = Sketchup.active_model.entities.add_curve points;  
            
    cirlce = Sketchup.active_model.entities.add_circle points[0], points[0] - points[1], 0.125
    face = Sketchup.active_model.entities.add_face cirlce
    face.followme(edges)
    

    end

    end

    BUGREPRODUCE::run()`

    Ropefall - plugin to easily draw ropes, wires, cables
    http://www.sketchrope.com
    (with non-expiring licence, no subscription)

    1 Reply Last reply Reply Quote 0
    • T Offline
      torel
      last edited by 17 Aug 2017, 12:01

      I found this this discussion: https://sketchucation.com/forums/viewtopic.php?f=180%26amp;t=16734

      TIG says:

      @unknownuser said:

      SketchUp's FollowMe tool fails on paths with short lengths where the faces it would make on the innermost part of the turns very small.

      Do we know what the exact condition is that the curve needs to fulfill for the followme tool to succeed?

      If this one is indeed a Sketchup product issue is there a chance sketchup team looks into this and fixes it? 😛

      Ropefall - plugin to easily draw ropes, wires, cables
      http://www.sketchrope.com
      (with non-expiring licence, no subscription)

      1 Reply Last reply Reply Quote 0
      • T Offline
        torel
        last edited by 17 Aug 2017, 16:23

        Any opinion on this maybe from the Sketchup team would be highly appreciated! Thx!

        Also, is there any developer platform for reporting Sketchup issues? I reported this over bugsplat but i could not send the script reproducing the issue in the bugsplat form. Thus some bugzilla or jira reference would be nice to file the bug report properly... 😉

        Ropefall - plugin to easily draw ropes, wires, cables
        http://www.sketchrope.com
        (with non-expiring licence, no subscription)

        1 Reply Last reply Reply Quote 0
        • T Offline
          torel
          last edited by 17 Aug 2017, 16:24

          Please note this example is an artificial one created for reproducing the issue - that is why it has such garbage near the end of the line. The first fixed segment is vertical, which is hardly ever the case in realistic uses.

          Ropefall - plugin to easily draw ropes, wires, cables
          http://www.sketchrope.com
          (with non-expiring licence, no subscription)

          1 Reply Last reply Reply Quote 0
          • T Offline
            torel
            last edited by 17 Aug 2017, 16:32

            FollowMe works even without scaling up when using it manually over Sketchup UI. It chokes only when calling it over the ruby API.

            Some more background: some customers of mine detected this issue when using my Ropefall plugin. So the obvious (already known) workaround is to only draw midline of the rope with Ropefall and use FollowMe manually around it.

            To implement your scaling workaround in the plugin is hardly viable since it is hard to guess how much scaling would be enough.

            Also, I think the right place to fix this is in the core product. Sketchup should handle weird wire shapes in a graceful way, it should never crash. At least not when the API contract is respected (I mean the script above uses the API properly, yet Sketchup chokes on it).

            Ropefall - plugin to easily draw ropes, wires, cables
            http://www.sketchrope.com
            (with non-expiring licence, no subscription)

            1 Reply Last reply Reply Quote 0
            • T Offline
              torel
              last edited by 17 Aug 2017, 16:35

              **>>
              Dave made some investigations which got deleted by moving this thread to the developers forum. I give here a short summary of his findings:

              • he tried to reproduce the issue on the attached model by manually using the FollowMe tool. He suggested to scale up the model before applying FollowMe to eliminate small scale issues such as edges should be longer than 0.001 in.
              • he also found weird irregular segments on the line
                <<**

              Dave, thanks for looking into this!

              I uploaded the skp (created by commenting out "face.followme(edges)" line in the script above). Interestingly, Sketchup can use the FollowMe tool normally if I use it manually on the model (select the line -> select FollowMe tool -> select disc at the end of the line). There is no bugsplat report in this case.

              The issue seems to arise when FollowMe is run over the API. And I checked the edge lengths : none of them is less than 0.001 inches, the smallest being 0.0031780318151616855 inches. See the list of edge lengths below.

              Thus the situation seems to be different from what you describe above because:

              • Sketchup chokes (!), its not just some small faces won't get created
              • the edge lengths are longer than 0.001 inches (Sketchup crashes even if I remove that shortest edge of length 0.003 inches)

              0.5496677522125282
              0.03594309295155075
              0.018763802301480795
              0.0031780318151616855
              0.01678884760914955
              0.04439110041899742
              0.10350211830908297
              0.1679583628960666
              0.15299090899883527
              0.07458242835351943
              0.1851509025793843
              0.2382264138006202
              0.2672526085578301
              0.2944741252865965
              0.3211850239771088
              0.3453495886987467
              0.36636381719397354
              0.3847287583298275
              0.4010055259657017
              0.4155083617644397
              0.42840424004615574
              0.4398082890187205
              0.44981766941388596
              0.4585303569048452
              0.46605344122018955
              0.472498164546082
              0.4779734936956884
              0.4825826028280455
              0.4864211022176622
              0.48957687526628785
              0.49213077917050796
              0.49415726557699746
              0.495724847732813
              0.49689657697448725
              0.49773052024101844
              0.4982802274682186
              0.4985952090536824
              0.49872141525022456
              0.49870171032962585
              0.49857636839721664
              0.4983835966338117
              0.49816004357814353
              0.4979412695177626
              0.497762205183359
              0.4976576322108056
              0.49766269227690346
              0.4978134037542148
              0.49814713784494336
              0.498703031080701
              0.4995223621216723
              0.5006489370094015
              0.5021294757761189
              0.5040139672197974
              0.5063559760228643
              0.5092128811427165
              0.5126460379578697
              0.5167208969654833
              0.5215071077115799
              0.5270785944591776
              0.5335135705907125
              0.5408944747996273
              0.5493078355770263
              0.5588440828524932
              0.569597324513963
              0.5816650831325503
              0.5951479349123885
              0.610148936674865
              0.6267727550037728
              0.6451246173191341
              0.6653095833082033
              0.6874328163599263
              0.7116006100825648
              0.737920030329306
              0.7664953304454787
              0.7974236872385437
              0.8307956823114301
              0.8667008663212854
              0.9052321664160643
              0.9465014813143349
              0.9906467472849756
              1.0376715950626214
              1.0872980016120022
              1.1400279308006114
              1.1985427437660388
              1.2632320003300945
              1.3678423550560435
              0.5496677522125274
              0.2958814205816631
              0.369203117349373
              0.4297282738342088
              0.4904175142295599
              0.5510354987677838
              0.6113612693402046
              0.6726821212518339
              0.7343298027982678
              0.7958257011590709
              0.5496677522125281


              model for the followme tool

              Ropefall - plugin to easily draw ropes, wires, cables
              http://www.sketchrope.com
              (with non-expiring licence, no subscription)

              1 Reply Last reply Reply Quote 0
              • topic:timeago-later,4 months
              • T Offline
                torel
                last edited by 8 Dec 2017, 13:22

                a ticket has been filed here

                Link Preview Image
                bugsplat using followme tool · Issue #15 · SketchUp/api-issue-tracker

                Hi, follow me tool makes Sketchup ( at least 2016, 2017 windows) choke (crash). copy-paste the following script to the ruby console and press enter to reproduce: require 'sketchup.rb' module BUGREPRODUCE def self.run() points = []; point...

                favicon

                GitHub (github.com)

                Ropefall - plugin to easily draw ropes, wires, cables
                http://www.sketchrope.com
                (with non-expiring licence, no subscription)

                1 Reply Last reply Reply Quote 0
                • T Offline
                  torel
                  last edited by 10 Dec 2017, 12:03

                  Dan, thank you for the your comment! I answered it in the bug report, I suggest we continue the discussion there.

                  Ropefall - plugin to easily draw ropes, wires, cables
                  http://www.sketchrope.com
                  (with non-expiring licence, no subscription)

                  1 Reply Last reply Reply Quote 0
                  • D Offline
                    Dan Rathbun
                    last edited by 11 Dec 2017, 03:02

                    As I mentioned in a reply the bug report (it is ridiculous and should be closed.)

                    Some of the coordinates are in MILLIONTHS (or smaller) of inches !

                    One near the end has a -16th exponent:

                    points << Geom::Point3d.new( 4.194623966922387e-16, 0.20218771239100042, 65.51048909232898 );

                    That is about 42 femtoinches. In other words,
                    42 millionths of a nanoinch !
                    (42 millionths of a millionth of an inch.)

                    Does the OP (@torel) understand that SketchUp has an internal coordinate tolerance of only 1 one thousandth of an inch ?

                    Why would anyone want to be passing SketchUp coordinate floats with up to 19 decimal places ?

                    I'm not here much anymore.

                    1 Reply Last reply Reply Quote 0
                    • 1 / 1
                    1 / 1
                    • First post
                      9/9
                      Last post
                    Buy SketchPlus
                    Buy SUbD
                    Buy WrapR
                    Buy eBook
                    Buy Modelur
                    Buy Vertex Tools
                    Buy SketchCuisine
                    Buy FormFonts

                    Advertisement