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 2 Watching
    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

      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

        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

          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

            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

              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

                **>>
                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
                • T Offline
                  torel
                  last edited by

                  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

                    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
                    • Dan RathbunD Offline
                      Dan Rathbun
                      last edited by

                      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
                      • First post
                        Last post
                      Buy SketchPlus
                      Buy SUbD
                      Buy WrapR
                      Buy eBook
                      Buy Modelur
                      Buy Vertex Tools
                      Buy SketchCuisine
                      Buy FormFonts

                      Advertisement