forked from SketchUp/ruby-api-docs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
file.ReleaseNotes.html
1937 lines (1641 loc) · 168 KB
/
file.ReleaseNotes.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- VIEWPORT -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- AUTHOR and GENERATOR -->
<meta name="author" content="SketchUp Extensibility Team">
<meta name="generator" content="YARD https://yardoc.org">
<!-- TITLE -->
<title>
File: Release Notes — SketchUp Ruby API Documentation
</title>
<!-- SHORTCUT ICON -->
<link rel="shortcut icon" type="image/vnd.microsoft.icon"
href="favicon.ico" />
<!-- GENERIC META PROPERTIES -->
<meta name="url" content="https://ruby.sketchup.com/file.ReleaseNotes.html" />
<meta name="image" content="https://ruby.sketchup.com/images/Ruby.svg" />
<meta name="title" content="File: Release Notes" />
<meta name="name" content="SketchUp Ruby API Documentation" />
<meta name="description" content="Release Notes" />
<!-- OPEN GRAPH META PROPERTIES -->
<meta property="og:site_name" content="SketchUp Ruby API Documentation" />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://ruby.sketchup.com/images/Ruby.svg" />
<meta property="og:image:width" content="60" />
<meta property="og:image:height" content="60" />
<meta property="og:title" content="File: Release Notes" />
<meta property="og:url" content="https://ruby.sketchup.com/file.ReleaseNotes.html" />
<meta property="og:description" content="Release Notes" />
<!-- TWITTER CARD META PROPERTIES -->
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="@sketchup" />
<meta name="twitter:title" content="File: Release Notes" />
<meta name="twitter:description" content="Release Notes" />
<meta name="twitter:image:src" content="https://ruby.sketchup.com/images/Ruby.svg?s=120" />
<meta name="twitter:url" content="https://ruby.sketchup.com/file.ReleaseNotes.html" />
<!-- STYLESHEETS -->
<link rel="stylesheet" type="text/css"
href="https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic" />
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="css/sketchup.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="css/rubyapi.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="css/rouge.css" type="text/css" charset="utf-8" />
<!-- SCRIPTS -->
<script type="text/javascript">
pathId = "ReleaseNotes";
relpath = '';
</script>
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="js/jquery-migrate.js"></script>
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
<script>
// Every time this page is loaded, it sends this action to SketchUp, telling
// SketchUp that a new page has loaded that has example snippets that should
// be replaced with code editors. Nothing happens if the page is loaded in a
// regular browser outside of the SketchUp client.
$( document ).ready(function() {
if (typeof sketchup == 'object') {
sketchup.page_loaded();
}
});
</script>
</head>
<body>
<!-- SU - start -->
<header id="navbar" role="banner" class="navbar navbar-fixed-top navbar-inverse">
<div id="api-documentation-header">
<div class="navbar-header">
<a class="logo navbar-btn pull-left" href="https://developer.sketchup.com" title="Home">
<img src="images/sketchup-logo.svg" alt="SketchUp">
</a>
<a class="name navbar-brand" href="/en" title="Home">SketchUp Developer Center</a>
<!-- .btn-navbar is used as the toggle for collapsed navbar content -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="navbar-collapse collapse">
<nav role="navigation">
<ul class="menu nav navbar-nav">
<li class="first leaf"><a href="https://forums.sketchup.com/c/developers">Community</a></li>
<li class="leaf"><a href="https://blog.sketchup.com/">SketchUp Blog</a></li>
<li class="leaf"><a href="https://www.sketchup.com/download" class="top-menu--download-button">Download</a></li>
<li class="last expanded dropdown">
<a href="https://www.trimble.com" class="trimble-top-menu-item dropdown-toggle" data-target="#" data-toggle="dropdown"><img src="images/trimble-logo-white.svg" alt="Trimble"><span class="caret"></span></a>
<ul class="dropdown-menu">
<li class="first leaf"><a href="https://connect.trimble.com/">Trimble Connect</a></li>
<li class="leaf"><a href="https://www.trimble.com/Corporate/About_Trimble.aspx">About Trimble</a></li>
<li class="last leaf"><a href="https://buildings.trimble.com/">Trimble Buildings</a></li>
</ul>
</li>
</ul>
</nav>
</div>
</div>
</header>
<!-- SU - end -->
<div id="su-content">
<div class="nav_wrap">
<iframe id="nav" src="file_list.html"></iframe>
<div id="resizer"></div>
</div>
<div id="main" tabindex="-1">
<div id="header">
<div id="menu">
<a href="_index.html">Index</a> »
<span class="title">File: Release Notes</span>
</div>
<div id="search">
<a class="full_list_link" id="class_list_link"
href="class_list.html">
<svg width="24" height="24">
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
</svg>
</a>
</div>
<div class="clear"></div>
</div>
<div id="content"><div id='filecontents'>
<h1 id="label-Release+Notes">Release Notes</h1>
<p>The SketchUp API has been around in some fashion since the early days of SketchUp, and with every release we have extended its capabilities. Read below for what's been changed.</p>
<p>Though our adoption rate to the latest version is quite high, it can take time after a release before everyone upgrades. If you are building scripts that rely on functionality from the most recent version, be sure to check the <span class='object_link'><a href="Sketchup.html#version-class_method" title="Sketchup.version (method)">Sketchup.version</a></span> to make sure your users are able to run your script:</p>
<pre class="code ruby"><code class="ruby"><span class='comment'># You do something like this in the initialization routine of your extension.
</span><span class='id identifier rubyid_version_required'>version_required</span> <span class='op'>=</span> <span class='int'>16</span>
<span class='kw'>if</span> <span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Sketchup.html" title="Sketchup (module)">Sketchup</a></span></span><span class='period'>.</span><span class='id identifier rubyid_version'><span class='object_link'><a href="Sketchup.html#version-class_method" title="Sketchup.version (method)">version</a></span></span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span> <span class='op'><</span> <span class='id identifier rubyid_version_required'>version_required</span><span class='rparen'>)</span>
<span class='const'><span class='object_link'><a href="UI.html" title="UI (module)">UI</a></span></span><span class='period'>.</span><span class='id identifier rubyid_messagebox'><span class='object_link'><a href="UI.html#messagebox-class_method" title="UI.messagebox (method)">messagebox</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>You must have Sketchup 20</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_version_required'>version_required</span><span class='embexpr_end'>}</span><span class='tstring_content'> to run this </span><span class='tstring_end'>"</span></span>\
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>extension. Visit sketchup.com to upgrade.</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='comment'># Your stuff...
</span><span class='kw'>end</span>
</code></pre>
<h2 id="label-Build+Numbers">Build Numbers</h2>
<p>Here are the build numbers for recent SketchUp releases. Note that build numbers in languages besides English are larger for each release, so it is best to check for builds that are greater than or equal to the numbers here.</p>
<ul><li>
<p><strong>SU2022.0.1</strong> = 22.0.354 on Windows 64-bit, 22.0.353 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2022.0</strong> = 22.0.316 on Windows 64-bit, 22.0.315 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2021.1.2</strong> = 21.1.332 on Windows 64-bit, 21.1.331 on Mac 64-bit. (Contained no Ruby API changes)</p>
</li><li>
<p><strong>SU2021.1.1</strong> = 21.1.299 on Windows 64-bit, 21.1.298 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2021.1</strong> = 21.1.279 on Windows 64-bit, 21.1.278 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2021.0.1</strong> = 21.0.391 on Windows 64-bit, 21.0.392 on Mac 64-bit. (Contained no Ruby API changes)</p>
</li><li>
<p><strong>SU2021.0</strong> = 21.0.339 on Windows 64-bit, 21.0.338 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2021.0</strong> = 21.0.114 on Windows 64-bit, 21.0.113 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2020.2</strong> = 20.2.172 on Windows 64-bit, 20.2.171 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2020.1.1</strong> = 20.1.235 on Windows 64-bit. (Contained no Ruby API changes)</p>
</li><li>
<p><strong>SU2020.1</strong> = 20.1.229 on Windows 64-bit, 20.1.228 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2020.0</strong> = 20.0.133 on Windows 64-bit, 20.0.134 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2019.3</strong> = 19.3.253 on Windows 64-bit, 19.3.252 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2019.2</strong> = 19.2.222 on Windows 64-bit, 19.2.221 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2019.1</strong> = 19.1.174 on Windows 64-bit, 19.1.173 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2019</strong> = 19.0.685 on Windows 64-bit, 19.0.684 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2018 M1</strong> = 18.1.1180 on Mac 64-bit. (Contained no Ruby API changes)</p>
</li><li>
<p><strong>SU2018</strong> = 18.0.16975 on Windows 64-bit, 18.0.16976 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2017</strong> = 17.0.18899 on Windows 64-bit, 17.0.18898 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2016</strong> = 16.0.19912 on Windows 64-bit, 16.0.19911 on Windows 32-bit, 16.0.19913 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2015 M2</strong> = 15.2.685 on Windows 64-bit, 15.2.687 on Windows 32-bit, 15.2.686 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2015 M1</strong> = 15.1.106 on Windows 64-bit, 15.1.105 on Windows 32-bit, 15.1.104 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2015</strong> = 15.0.9350 on Windows 64-bit, 15.0.9351 on Windows 32-bit, 15.0.9349 on Mac 64-bit.</p>
</li><li>
<p><strong>SU2014 M1</strong> = 14.1.1282 on Windows, 14.1.1283 on Mac.</p>
</li><li>
<p><strong>SU2014</strong> = 14.0.4900 on Windows, 14.0.4899 on Mac.</p>
</li><li>
<p><strong>SU2013 M2</strong> = 13.0.4812 on Windows, 13.0.4811 on Mac.</p>
</li><li>
<p><strong>SU2013 M1</strong> = 13.0.4124 on Windows, 13.0.4123 on Mac.</p>
</li><li>
<p><strong>SU2013</strong> = 13.0.3689 on Windows, 13.0.3688 on Mac.</p>
</li><li>
<p><strong>SU8.0 M2</strong> = 8.0.11752 on Windows, 8.0.11751 on Mac.</p>
</li><li>
<p><strong>SU8.0 M1</strong> = 8.0.4811 on Windows, 8.0.4810 on Mac.</p>
</li><li>
<p><strong>SU8.0</strong> = 8.0.3117 on Windows, 8.0.3161 on Mac.</p>
</li><li>
<p><strong>SU7.1 M2</strong> = 7.1.6860 on Windows, 7.1.6859 on Mac.</p>
</li><li>
<p><strong>SU7.0 M1</strong> = 7.0.10247 on Windows, 7.0.10246 on Mac.</p>
</li><li>
<p><strong>SU7.0</strong> = 7.0.8657 on Windows, 7.0.8656 on Mac.</p>
</li><li>
<p><strong>SU6 M6</strong> = 6.4.265 on Windows, 6.4.263 on Mac.</p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2022.0.1">What's new in SketchUp 2022.0.1</h1>
<h2 id="label-Ruby+API+Bug+Fixes">Ruby API Bug Fixes</h2>
<ul><li>
<p>In SketchUp 2022.0 a bug might lead to an available name being incorrectly renamed. Or a name that should be unavailable would be duplicated. This was fixed in SketchUp 2022.0.1.</p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2022.0">What's new in SketchUp 2022.0</h1>
<h2 id="label-EntitiesBuilder">EntitiesBuilder</h2>
<p>We added a new interface, <span class='object_link'><a href="Sketchup/EntitiesBuilder.html" title="Sketchup::EntitiesBuilder (class)">Sketchup::EntitiesBuilder</a></span>, with the purpose of being able to generate bulk geometry with similar speed to <span class='object_link'><a href="Geom/PolygonMesh.html" title="Geom::PolygonMesh (class)">Geom::PolygonMesh</a></span> + <span class='object_link'><a href="Sketchup/Entities.html#fill_from_mesh-instance_method" title="Sketchup::Entities#fill_from_mesh (method)">Sketchup::Entities#fill_from_mesh</a></span> but with the simplicity and per-entity control that <span class='object_link'><a href="Sketchup/Entities.html" title="Sketchup::Entities (class)">Sketchup::Entities</a></span> offer. This is particularly useful for importers where you can expect to see major performance improvements by switching from <span class='object_link'><a href="Sketchup/Entities.html#add_face-instance_method" title="Sketchup::Entities#add_face (method)">Sketchup::Entities#add_face</a></span> to <span class='object_link'><a href="Sketchup/EntitiesBuilder.html#add_face-instance_method" title="Sketchup::EntitiesBuilder#add_face (method)">Sketchup::EntitiesBuilder#add_face</a></span>.</p>
<h2 id="label-Universal+binary+support+on+Mac">Universal binary support on Mac</h2>
<p>We now support universal binaries on macOS that run natively on both Apple silicon and Intel-based Mac computers.</p>
<h2 id="label-Update+OpenSSL+to+1.1.1l">Update OpenSSL to 1.1.1l</h2>
<p>The version of OpenSSL in Ruby was updated to 1.1.1l.</p>
<h2 id="label-Made+Ruby+Console+output+more+consistent">Made Ruby Console output more consistent</h2>
<p>Earlier versions of SketchUp printed the return values to Ruby Console commands different depending on platform. This has been made consistent following the pattern of Ruby's own IRB tool. A side effect of this is that the console now uses <code>.inspect</code> instead of <code>.puts</code> when printing the returned value which makes it less ambiguous in many cases. For example <code>nil</code> vs <code>""</code> that would otherwise print a blank line in both cases.</p>
<h2 id="label-Ruby+API+Additions+and+Improvements">Ruby API Additions and Improvements</h2>
<ul><li>
<p>Added method <span class='object_link'><a href="Sketchup/ComponentDefinition.html#save_copy-instance_method" title="Sketchup::ComponentDefinition#save_copy (method)">Sketchup::ComponentDefinition#save_copy</a></span></p>
</li><li>
<p>Added method overload to <span class='object_link'><a href="Sketchup/ComponentDefinition.html#save_as-instance_method" title="Sketchup::ComponentDefinition#save_as (method)">Sketchup::ComponentDefinition#save_as</a></span> allowing saving the definition with an older versions of the file format</p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/AutoTextDefinition.html#number_style-instance_method" title="Layout::AutoTextDefinition#number_style (method)">Layout::AutoTextDefinition#number_style</a></span>, Deprecated <span class='object_link'><a href="Layout/AutoTextDefinition.html#page_number_style-instance_method" title="Layout::AutoTextDefinition#page_number_style (method)">Layout::AutoTextDefinition#page_number_style</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Layout/AutoTextDefinition.html#number_style=-instance_method" title="Layout::AutoTextDefinition#number_style= (method)">Layout::AutoTextDefinition#number_style=</a></span>, Deprecated <span class='object_link'><a href="Layout/AutoTextDefinition.html#page_number_style=-instance_method" title="Layout::AutoTextDefinition#page_number_style= (method)">Layout::AutoTextDefinition#page_number_style=</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Layout/AutoTextDefinition.html#end_page-instance_method" title="Layout::AutoTextDefinition#end_page (method)">Layout::AutoTextDefinition#end_page</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Layout/AutoTextDefinition.html#end_page=-instance_method" title="Layout::AutoTextDefinition#end_page= (method)">Layout::AutoTextDefinition#end_page=</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Layout/AutoTextDefinition.html#start_page-instance_method" title="Layout::AutoTextDefinition#start_page (method)">Layout::AutoTextDefinition#start_page</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Layout/AutoTextDefinition.html#start_page=-instance_method" title="Layout::AutoTextDefinition#start_page= (method)">Layout::AutoTextDefinition#start_page=</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Layout/AutoTextDefinition.html#increment-instance_method" title="Layout::AutoTextDefinition#increment (method)">Layout::AutoTextDefinition#increment</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Layout/AutoTextDefinition.html#increment=-instance_method" title="Layout::AutoTextDefinition#increment= (method)">Layout::AutoTextDefinition#increment=</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Layout/AutoTextDefinition.html#sequence_format-instance_method" title="Layout::AutoTextDefinition#sequence_format (method)">Layout::AutoTextDefinition#sequence_format</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Layout/AutoTextDefinition.html#sequence_format=-instance_method" title="Layout::AutoTextDefinition#sequence_format= (method)">Layout::AutoTextDefinition#sequence_format=</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Layout/AutoTextDefinition.html#renumber-instance_method" title="Layout::AutoTextDefinition#renumber (method)">Layout::AutoTextDefinition#renumber</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/AutoTextDefinition.html#TYPE_MODEL_RATIO-constant" title="Layout::AutoTextDefinition::TYPE_MODEL_RATIO (constant)">Layout::AutoTextDefinition::TYPE_MODEL_RATIO</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/AutoTextDefinition.html#TYPE_MODEL_SCENE_NAME-constant" title="Layout::AutoTextDefinition::TYPE_MODEL_SCENE_NAME (constant)">Layout::AutoTextDefinition::TYPE_MODEL_SCENE_NAME</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/AutoTextDefinition.html#TYPE_MODEL_SCENE_DESCRIPTION-constant" title="Layout::AutoTextDefinition::TYPE_MODEL_SCENE_DESCRIPTION (constant)">Layout::AutoTextDefinition::TYPE_MODEL_SCENE_DESCRIPTION</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/AutoTextDefinition.html#TYPE_MODEL_SCALE-constant" title="Layout::AutoTextDefinition::TYPE_MODEL_SCALE (constant)">Layout::AutoTextDefinition::TYPE_MODEL_SCALE</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/AutoTextDefinition.html#TYPE_MODEL_SECTION_NAME-constant" title="Layout::AutoTextDefinition::TYPE_MODEL_SECTION_NAME (constant)">Layout::AutoTextDefinition::TYPE_MODEL_SECTION_NAME</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/AutoTextDefinition.html#TYPE_MODEL_SECTION_SYMBOL-constant" title="Layout::AutoTextDefinition::TYPE_MODEL_SECTION_SYMBOL (constant)">Layout::AutoTextDefinition::TYPE_MODEL_SECTION_SYMBOL</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/AutoTextDefinition.html#TYPE_PAGE_COUNT-constant" title="Layout::AutoTextDefinition::TYPE_PAGE_COUNT (constant)">Layout::AutoTextDefinition::TYPE_PAGE_COUNT</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/AutoTextDefinition.html#TYPE_SEQUENCE-constant" title="Layout::AutoTextDefinition::TYPE_SEQUENCE (constant)">Layout::AutoTextDefinition::TYPE_SEQUENCE</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Entities.html#build-instance_method" title="Sketchup::Entities#build (method)">Sketchup::Entities#build</a></span></p>
</li><li>
<p>Added class <span class='object_link'><a href="Sketchup/EntitiesBuilder.html" title="Sketchup::EntitiesBuilder (class)">Sketchup::EntitiesBuilder</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="UI/Command.html#proc-instance_method" title="UI::Command#proc (method)">UI::Command#proc</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="UI/Command.html#get_validation_proc-instance_method" title="UI::Command#get_validation_proc (method)">UI::Command#get_validation_proc</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="UI/Command.html#extension-instance_method" title="UI::Command#extension (method)">UI::Command#extension</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="UI/Command.html#extension=-instance_method" title="UI::Command#extension= (method)">UI::Command#extension=</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/AppObserver.html#onExtensionsLoaded-instance_method" title="Sketchup::AppObserver#onExtensionsLoaded (method)">Sketchup::AppObserver#onExtensionsLoaded</a></span></p>
</li></ul>
<h2 id="label-Ruby+API+Bug+Fixes">Ruby API Bug Fixes</h2>
<ul><li>
<p>Fixed a bug in <span class='object_link'><a href="UI/HtmlDialog.html#initialize-instance_method" title="UI::HtmlDialog#initialize (method)">UI::HtmlDialog#initialize</a></span> where <code>max_height</code> and <code>max_width</code> were swapped when <code>use_content_size</code> was set to <code>true</code>.</p>
</li><li>
<p>Fixed a bug where <span class='object_link'><a href="UI/HtmlDialog.html" title="UI::HtmlDialog (class)">UI::HtmlDialog</a></span> position was set incorrectly when <code>use_content_size</code> was set to <code>true</code>.</p>
</li><li>
<p>Fixed a bug in <span class='object_link'><a href="UI/HtmlDialog.html" title="UI::HtmlDialog (class)">UI::HtmlDialog</a></span> where <code>use_content_size</code> was not persisted (when <code>preference_key</code> is set). Due to this bug, in some instances, HtmlDialog changed size when it was re-created.</p>
</li><li>
<p>Fixed a bug on Mac where the size and the position of the <span class='object_link'><a href="UI/HtmlDialog.html" title="UI::HtmlDialog (class)">UI::HtmlDialog</a></span> were not persisted when SketchUp was closed without first closing the <span class='object_link'><a href="UI/HtmlDialog.html" title="UI::HtmlDialog (class)">UI::HtmlDialog</a></span> window.</p>
</li><li>
<p>Fixed a crash with <span class='object_link'><a href="UI.html#savepanel-class_method" title="UI.savepanel (method)">UI.savepanel</a></span> on Mac when using a filename with a <code>*</code> prefix; <code>response = UI.savepanel('Save Image', nil, '*.png')</code>.</p>
</li><li>
<p>Fixed “EntityInfo” not being a supported parameter for <span class='object_link'><a href="UI.html#show_inspector-class_method" title="UI.show_inspector (method)">UI.show_inspector</a></span></p>
</li><li>
<p>Fixed “EntityInfo” not being being listed in <span class='object_link'><a href="UI.html#inspector_names-class_method" title="UI.inspector_names (method)">UI.inspector_names</a></span></p>
</li><li>
<p>Fixed <span class='object_link'><a href="Sketchup/Face.html#uv_tile_at-instance_method" title="Sketchup::Face#uv_tile_at (method)">Sketchup::Face#uv_tile_at</a></span> could return incorrect values in some edge cases.</p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2021.1.1">What's new in SketchUp 2021.1.1</h1>
<h2 id="label-Ruby+API+Bug+Fixes">Ruby API Bug Fixes</h2>
<ul><li>
<p>Fixed <a href="https://github.com/SketchUp/api-issue-tracker/issues/646">regression</a> in <span class='object_link'><a href="UI/HtmlDialog.html" title="UI::HtmlDialog (class)">UI::HtmlDialog</a></span> from SketchUp 21.1.0 where the methods on JavaScript's <code>sketchup</code> object for registered action callbacks were missing after navigating away from the initial page.</p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2021.1">What's new in SketchUp 2021.1</h1>
<h2 id="label-Upgrade+Ruby+to+2.7.2">Upgrade Ruby to 2.7.2</h2>
<p>For SketchUp 2021.1 we have upgraded the version of Ruby that we ship with SketchUp from 2.7.1 to 2.7.2.</p>
<p>Notable <a href="https://bugs.ruby-lang.org/issues/17152">bug-fix in Ruby 2.7.2</a> is correcting a bug that prevented profiling tools such as ruby-prof from reporting correct results.</p>
<h2 id="label-Update+OpenSSL+to+1.1.1k">Update OpenSSL to 1.1.1k</h2>
<p>The version of OpenSSL in Ruby was updated to 1.1.1k.</p>
<h2 id="label-Ruby+Console+Improvements">Ruby Console Improvements</h2>
<ul><li>
<p>The Ruby Console now remembers its visibility between sessions.</p>
</li><li>
<p>The Ruby Console was moved from the Windows menu to the new Developer menu.</p>
</li></ul>
<h2 id="label-Ruby+API+Additions+and+Improvements">Ruby API Additions and Improvements</h2>
<ul><li>
<p>Upgraded CEF (used by <span class='object_link'><a href="UI/HtmlDialog.html" title="UI::HtmlDialog (class)">UI::HtmlDialog</a></span>) to version 88.</p>
</li><li>
<p>Added key <code>use_content_size</code> to <span class='object_link'><a href="UI/HtmlDialog.html#initialize-instance_method" title="UI::HtmlDialog#initialize (method)">UI::HtmlDialog#initialize</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="UI/HtmlDialog.html#get_position-instance_method" title="UI::HtmlDialog#get_position (method)">UI::HtmlDialog#get_position</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="UI/HtmlDialog.html#get_size-instance_method" title="UI::HtmlDialog#get_size (method)">UI::HtmlDialog#get_size</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="UI/HtmlDialog.html#get_content_size-instance_method" title="UI::HtmlDialog#get_content_size (method)">UI::HtmlDialog#get_content_size</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="UI/HtmlDialog.html#set_content_size-instance_method" title="UI::HtmlDialog#set_content_size (method)">UI::HtmlDialog#set_content_size</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup.html#focus-class_method" title="Sketchup.focus (method)">Sketchup.focus</a></span></p>
</li><li>
<p>Added constant <span class='object_link'><a href="UI/HtmlDialog.html#CEF_VERSION-constant" title="UI::HtmlDialog::CEF_VERSION (constant)">UI::HtmlDialog::CEF_VERSION</a></span></p>
</li><li>
<p>Added constant <span class='object_link'><a href="UI/HtmlDialog.html#CHROME_VERSION-constant" title="UI::HtmlDialog::CHROME_VERSION (constant)">UI::HtmlDialog::CHROME_VERSION</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Face.html#clear_texture_projection-instance_method" title="Sketchup::Face#clear_texture_projection (method)">Sketchup::Face#clear_texture_projection</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Face.html#texture_positioned%3F-instance_method" title="Sketchup::Face#texture_positioned? (method)">Sketchup::Face#texture_positioned?</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Face.html#texture_projected%3F-instance_method" title="Sketchup::Face#texture_projected? (method)">Sketchup::Face#texture_projected?</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Face.html#uv_tile_at-instance_method" title="Sketchup::Face#uv_tile_at (method)">Sketchup::Face#uv_tile_at</a></span></p>
</li><li>
<p>Added method overload to <span class='object_link'><a href="Sketchup/Face.html#position_material-instance_method" title="Sketchup::Face#position_material (method)">Sketchup::Face#position_material</a></span> allowing projected materials to be applied.</p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/DefinitionList.html#import-instance_method" title="Sketchup::DefinitionList#import (method)">Sketchup::DefinitionList#import</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Group.html#glued_to-instance_method" title="Sketchup::Group#glued_to (method)">Sketchup::Group#glued_to</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Group.html#glued_to=-instance_method" title="Sketchup::Group#glued_to= (method)">Sketchup::Group#glued_to=</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Image.html#glued_to-instance_method" title="Sketchup::Image#glued_to (method)">Sketchup::Image#glued_to</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Image.html#glued_to=-instance_method" title="Sketchup::Image#glued_to= (method)">Sketchup::Image#glued_to=</a></span></p>
</li><li>
<p>Added method overload to <span class='object_link'><a href="Sketchup/ComponentInstance.html#glued_to=-instance_method" title="Sketchup::ComponentInstance#glued_to= (method)">Sketchup::ComponentInstance#glued_to=</a></span> allowing to glue to groups images, and components.</p>
</li><li>
<p>Increased display time for <span class='object_link'><a href="UI/Notification.html" title="UI::Notification (class)">UI::Notification</a></span> to 10 seconds.</p>
</li><li>
<p>Add a separator when a menu is added for the first time to a top level menu. This creates a visual distinction between built-in menus and that of extensions.</p>
</li><li>
<p>Added support for adding submenus to the Developer menu.</p>
</li><li>
<p><span class='object_link'><a href="Geom/PolygonMesh.html" title="Geom::PolygonMesh (class)">Geom::PolygonMesh</a></span> is now faster when looking up points in large meshes. This also improve performance when adding points to large meshes. Note that the mesh need to be created with an estimated total number of points for this performance improvement to kick in. The lookup of points for large meshes are now O(logN) instead of O(N^2).</p>
</li></ul>
<h2 id="label-Ruby+API+Bug+Fixes">Ruby API Bug Fixes</h2>
<ul><li>
<p>Fixed crash when passing invalid parameters to <span class='object_link'><a href="Sketchup/Model.html#drawing_element_visible%3F-instance_method" title="Sketchup::Model#drawing_element_visible? (method)">Sketchup::Model#drawing_element_visible?</a></span>.</p>
</li><li>
<p>Fixed <span class='object_link'><a href="UI/HtmlDialog.html#bring_to_front-instance_method" title="UI::HtmlDialog#bring_to_front (method)">UI::HtmlDialog#bring_to_front</a></span> on Mac, such that calling the method sets focus on the HtmlDialog. This makes the behavior of the method consistent with that on Windows.</p>
</li><li>
<p>Fixed <span class='object_link'><a href="UI/HtmlDialog.html#set_size-instance_method" title="UI::HtmlDialog#set_size (method)">UI::HtmlDialog#set_size</a></span> and <span class='object_link'><a href="UI/HtmlDialog.html#set_position-instance_method" title="UI::HtmlDialog#set_position (method)">UI::HtmlDialog#set_position</a></span> on Windows, such that calling the methods doesn't set the focus on the HtmlDialog. This makes the behavior of the method consistent with that on Mac.</p>
</li><li>
<p>Fixed <span class='object_link'><a href="UI/HtmlDialog.html#set_can_close-instance_method" title="UI::HtmlDialog#set_can_close (method)">UI::HtmlDialog#set_can_close</a></span> Mac implementation so that the callback provided can properly prevent the window from closing.</p>
</li><li>
<p>Fixed crash in <span class='object_link'><a href="Sketchup/Image.html#image_rep-instance_method" title="Sketchup::Image#image_rep (method)">Sketchup::Image#image_rep</a></span> when the Image lacks a texture.</p>
</li><li>
<p>Fixed <span class='object_link'><a href="UI.html#show_model_info-class_method" title="UI.show_model_info (method)">UI.show_model_info</a></span> not showing the chosen page on Mac.</p>
</li><li>
<p>Fixed <span class='object_link'><a href="UI.html#show_model_info-class_method" title="UI.show_model_info (method)">UI.show_model_info</a></span> not supporting English page names on localized build on Mac.</p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2021.0">What's new in SketchUp 2021.0</h1>
<h2 id="label-Upgrade+Ruby+to+2.7.1">Upgrade Ruby to 2.7.1</h2>
<p>For SketchUp 2021.0 we have upgraded the version of Ruby that we ship with SketchUp from 2.5.5 to 2.7.1. Developers should verify that their extensions are working as expected in this new version of Ruby.</p>
<h2 id="label-Ruby+API+Additions+and+Improvements">Ruby API Additions and Improvements</h2>
<ul><li>
<p>Added class <span class='object_link'><a href="Sketchup/LayerFolder.html" title="Sketchup::LayerFolder (class)">Sketchup::LayerFolder</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Layer.html#folder-instance_method" title="Sketchup::Layer#folder (method)">Sketchup::Layer#folder</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Layer.html#folder=-instance_method" title="Sketchup::Layer#folder= (method)">Sketchup::Layer#folder=</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Layers.html#add_folder-instance_method" title="Sketchup::Layers#add_folder (method)">Sketchup::Layers#add_folder</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Layers.html#count_folders-instance_method" title="Sketchup::Layers#count_folders (method)">Sketchup::Layers#count_folders</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Layers.html#count_layers-instance_method" title="Sketchup::Layers#count_layers (method)">Sketchup::Layers#count_layers</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Layers.html#each_folder-instance_method" title="Sketchup::Layers#each_folder (method)">Sketchup::Layers#each_folder</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Layers.html#each_layer-instance_method" title="Sketchup::Layers#each_layer (method)">Sketchup::Layers#each_layer</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Layers.html#folders-instance_method" title="Sketchup::Layers#folders (method)">Sketchup::Layers#folders</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Layers.html#layers-instance_method" title="Sketchup::Layers#layers (method)">Sketchup::Layers#layers</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Layers.html#purge_unused_folders-instance_method" title="Sketchup::Layers#purge_unused_folders (method)">Sketchup::Layers#purge_unused_folders</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Layers.html#remove_folder-instance_method" title="Sketchup::Layers#remove_folder (method)">Sketchup::Layers#remove_folder</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/LayersObserver.html#onLayerFolderAdded-instance_method" title="Sketchup::LayersObserver#onLayerFolderAdded (method)">Sketchup::LayersObserver#onLayerFolderAdded</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/LayersObserver.html#onLayerFolderChanged-instance_method" title="Sketchup::LayersObserver#onLayerFolderChanged (method)">Sketchup::LayersObserver#onLayerFolderChanged</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/LayersObserver.html#onLayerFolderRemoved-instance_method" title="Sketchup::LayersObserver#onLayerFolderRemoved (method)">Sketchup::LayersObserver#onLayerFolderRemoved</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/LayersObserver.html#onParentFolderChanged-instance_method" title="Sketchup::LayersObserver#onParentFolderChanged (method)">Sketchup::LayersObserver#onParentFolderChanged</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Page.html#layer_folders-instance_method" title="Sketchup::Page#layer_folders (method)">Sketchup::Page#layer_folders</a></span></p>
</li><li>
<p>Added method signature to <span class='object_link'><a href="Sketchup/Page.html#set_visibility-instance_method" title="Sketchup::Page#set_visibility (method)">Sketchup::Page#set_visibility</a></span>: <code>Sketchup::Page#set_visibility(layer_group, visibility)</code></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup.html#redo-class_method" title="Sketchup.redo (method)">Sketchup.redo</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/ComponentDefinition.html#live_component%3F-instance_method" title="Sketchup::ComponentDefinition#live_component? (method)">Sketchup::ComponentDefinition#live_component?</a></span></p>
</li><li>
<p>Added new method signature to <span class='object_link'><a href="Sketchup.html#open_file-class_method" title="Sketchup.open_file (method)">Sketchup.open_file</a></span>: <code>Sketchup.open_file(filename, with_status: true)</code> This signature will open the new SketchUp file format if the format is newer.</p>
</li><li>
<p>Deprecated old method signature: <code>Sketchup.open_file(filename)</code> Because opening a newer file format might lead to data missing, extension developers have to explicitly migrate to the new signature. This is to ensure that no extension inadvertently open and save a file without knowing of potential data loss.</p>
</li><li>
<p>Added new method signature to <span class='object_link'><a href="Sketchup/DefinitionList.html#load-instance_method" title="Sketchup::DefinitionList#load (method)">Sketchup::DefinitionList#load</a></span>: <code>Sketchup::DefinitionList#load(filename, allow_newer: true)</code></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Skp.html#read_guid-class_method" title="Sketchup::Skp.read_guid (method)">Sketchup::Skp.read_guid</a></span> for reading a model's guid without having to open it in SketchUp.</p>
</li><li>
<p>Updated OpenSSL to 1.1.1g.</p>
</li></ul>
<h2 id="label-Ruby+API+Bug+Fixes">Ruby API Bug Fixes</h2>
<ul><li>
<p>Fixed <span class='object_link'><a href="Sketchup/Texture.html#filename-instance_method" title="Sketchup::Texture#filename (method)">Sketchup::Texture#filename</a></span> such that it appends a file extension matching the data format it was loaded from when the internal texture filename is missing the extension.</p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2020.2">What's new in SketchUp 2020.2</h1>
<h2 id="label-Ruby+and+C+Exchange+API">Ruby and C Exchange API</h2>
<p>To allow better interoperability of the Ruby API and C API within the SketchUp application we introduced the ability to exchange entities and image reps between the APIs.</p>
<p>Entities because it's a key type and ImageRep because it can be an expensive object to copy.</p>
<ul><li>
<p><code>SUEntityToRuby</code></p>
</li><li>
<p><code>SUEntityFromRuby</code></p>
</li><li>
<p><code>SUImageRepToRuby</code></p>
</li><li>
<p><code>SUImageRepFromRuby</code></p>
</li></ul>
<p>For more details refer to the C API documentation.</p>
<h2 id="label-Ruby+API+Additions+and+Improvements">Ruby API Additions and Improvements</h2>
<ul><li>
<p>Added scope filter to <span class='object_link'><a href="Sketchup/Model.html#find_entity_by_persistent_id-instance_method" title="Sketchup::Model#find_entity_by_persistent_id (method)">Sketchup::Model#find_entity_by_persistent_id</a></span>.</p>
</li></ul>
<h2 id="label-Ruby+API+Bug+Fixes">Ruby API Bug Fixes</h2>
<ul><li>
<p>Fixed Unicode characters not displaying correctly in the Ruby Console.</p>
</li><li>
<p>Fixed crash in <span class='object_link'><a href="UI/HtmlDialog.html" title="UI::HtmlDialog (class)">UI::HtmlDialog</a></span> when closing the dialog right after opening it.</p>
</li><li>
<p>Fixed DWG import option, <code>:preserve_origin</code> is ignored.</p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2020.1">What's new in SketchUp 2020.1</h1>
<h2 id="label-Ruby+API+Additions+and+Improvements">Ruby API Additions and Improvements</h2>
<ul><li>
<p>Added <span class='object_link'><a href="Sketchup/Entities.html#weld-instance_method" title="Sketchup::Entities#weld (method)">Sketchup::Entities#weld</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Page.html#use_hidden_geometry=-instance_method" title="Sketchup::Page#use_hidden_geometry= (method)">Sketchup::Page#use_hidden_geometry=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Page.html#use_hidden_geometry%3F-instance_method" title="Sketchup::Page#use_hidden_geometry? (method)">Sketchup::Page#use_hidden_geometry?</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Page.html#use_hidden_objects=-instance_method" title="Sketchup::Page#use_hidden_objects= (method)">Sketchup::Page#use_hidden_objects=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Page.html#use_hidden_objects%3F-instance_method" title="Sketchup::Page#use_hidden_objects? (method)">Sketchup::Page#use_hidden_objects?</a></span></p>
</li><li>
<p>Deprecated <span class='object_link'><a href="Sketchup/Page.html#use_hidden%3F-instance_method" title="Sketchup::Page#use_hidden? (method)">Sketchup::Page#use_hidden?</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/Grid.html#major_spacing=-instance_method" title="Layout::Grid#major_spacing= (method)">Layout::Grid#major_spacing=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/Grid.html#minor_divisions=-instance_method" title="Layout::Grid#minor_divisions= (method)">Layout::Grid#minor_divisions=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/Grid.html#major_color=-instance_method" title="Layout::Grid#major_color= (method)">Layout::Grid#major_color=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/Grid.html#minor_color=-instance_method" title="Layout::Grid#minor_color= (method)">Layout::Grid#minor_color=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/Grid.html#show=-instance_method" title="Layout::Grid#show= (method)">Layout::Grid#show=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/Grid.html#show_major=-instance_method" title="Layout::Grid#show_major= (method)">Layout::Grid#show_major=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/Grid.html#show_minor=-instance_method" title="Layout::Grid#show_minor= (method)">Layout::Grid#show_minor=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/Grid.html#print=-instance_method" title="Layout::Grid#print= (method)">Layout::Grid#print=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/Grid.html#in_front%3F-instance_method" title="Layout::Grid#in_front? (method)">Layout::Grid#in_front?</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/Grid.html#in_front=-instance_method" title="Layout::Grid#in_front= (method)">Layout::Grid#in_front=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/Grid.html#clip_to_margins%3F-instance_method" title="Layout::Grid#clip_to_margins? (method)">Layout::Grid#clip_to_margins?</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/Grid.html#clip_to_margins=-instance_method" title="Layout::Grid#clip_to_margins= (method)">Layout::Grid#clip_to_margins=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/SketchUpModel.html#camera_modified%3F-instance_method" title="Layout::SketchUpModel#camera_modified? (method)">Layout::SketchUpModel#camera_modified?</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/SketchUpModel.html#reset_camera-instance_method" title="Layout::SketchUpModel#reset_camera (method)">Layout::SketchUpModel#reset_camera</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/SketchUpModel.html#effects_modified%3F-instance_method" title="Layout::SketchUpModel#effects_modified? (method)">Layout::SketchUpModel#effects_modified?</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/SketchUpModel.html#reset_effects-instance_method" title="Layout::SketchUpModel#reset_effects (method)">Layout::SketchUpModel#reset_effects</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/SketchUpModel.html#style_modified%3F-instance_method" title="Layout::SketchUpModel#style_modified? (method)">Layout::SketchUpModel#style_modified?</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/SketchUpModel.html#reset_style-instance_method" title="Layout::SketchUpModel#reset_style (method)">Layout::SketchUpModel#reset_style</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/SketchUpModel.html#layers_modified%3F-instance_method" title="Layout::SketchUpModel#layers_modified? (method)">Layout::SketchUpModel#layers_modified?</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/SketchUpModel.html#reset_layers-instance_method" title="Layout::SketchUpModel#reset_layers (method)">Layout::SketchUpModel#reset_layers</a></span></p>
</li><li>
<p>Fixed bug in <span class='object_link'><a href="Layout/LinearDimension.html#text-instance_method" title="Layout::LinearDimension#text (method)">Layout::LinearDimension#text</a></span> where the display text of the copy returned the plain text instead</p>
</li><li>
<p>Fixed bug in <span class='object_link'><a href="Layout/AngularDimension.html#text-instance_method" title="Layout::AngularDimension#text (method)">Layout::AngularDimension#text</a></span> where the display text of the copy returned the plain text instead</p>
</li><li>
<p>Fixed issues with <span class='object_link'><a href="Layout/SketchUpModel.html#current_scene-instance_method" title="Layout::SketchUpModel#current_scene (method)">Layout::SketchUpModel#current_scene</a></span> and <span class='object_link'><a href="Layout/SketchUpModel.html#current_scene_modified%3F-instance_method" title="Layout::SketchUpModel#current_scene_modified? (method)">Layout::SketchUpModel#current_scene_modified?</a></span> Unexpectedly raising an assert stating that “The most recently selected scene no longer exists”</p>
</li><li>
<p>Fixed <span class='object_link'><a href="Layout/Document.html#export-instance_method" title="Layout::Document#export (method)">Layout::Document#export</a></span> documentation</p>
</li><li>
<p>Fixed <span class='object_link'><a href="Layout/SketchUpModel.html#render-instance_method" title="Layout::SketchUpModel#render (method)">Layout::SketchUpModel#render</a></span> documentation</p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2020.0">What's new in SketchUp 2020.0</h1>
<h2 id="label-Ruby+API+Additions+and+Improvements">Ruby API Additions and Improvements</h2>
<ul><li>
<p>Added <span class='object_link'><a href="Geom.html#tesselate-class_method" title="Geom.tesselate (method)">Geom.tesselate</a></span> that takes a set of loop points and return triangle sets.</p>
</li><li>
<p>Added optional <code>:normals</code> parameter to <span class='object_link'><a href="Sketchup/View.html#draw-instance_method" title="Sketchup::View#draw (method)">Sketchup::View#draw</a></span> allowing polygons to be drawn with lighting.</p>
</li><li>
<p>Added ability to draw textured polygons with <span class='object_link'><a href="Sketchup/View.html#draw-instance_method" title="Sketchup::View#draw (method)">Sketchup::View#draw</a></span> and <span class='object_link'><a href="Sketchup/View.html#draw2d-instance_method" title="Sketchup::View#draw2d (method)">Sketchup::View#draw2d</a></span></p>
</li><li>
<p>Added optional <code>:uvs</code> and <code>:texture</code> parameters to <span class='object_link'><a href="Sketchup/View.html#draw-instance_method" title="Sketchup::View#draw (method)">Sketchup::View#draw</a></span> and <span class='object_link'><a href="Sketchup/View.html#draw2d-instance_method" title="Sketchup::View#draw2d (method)">Sketchup::View#draw2d</a></span>.</p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/View.html#load_texture-instance_method" title="Sketchup::View#load_texture (method)">Sketchup::View#load_texture</a></span>.</p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/View.html#release_texture-instance_method" title="Sketchup::View#release_texture (method)">Sketchup::View#release_texture</a></span>.</p>
</li><li>
<p>Added ability to vertically align text drawn with <span class='object_link'><a href="Sketchup/View.html#draw_text-instance_method" title="Sketchup::View#draw_text (method)">Sketchup::View#draw_text</a></span>. New option parameter <code>:vertical_align</code> can be set to one of the following values: <span class='object_link'><a href="top-level-namespace.html#TextVerticalAlignBoundsTop-constant" title="TextVerticalAlignBoundsTop (constant)">TextVerticalAlignBoundsTop</a></span>, <span class='object_link'><a href="top-level-namespace.html#TextVerticalAlignBaseline-constant" title="TextVerticalAlignBaseline (constant)">TextVerticalAlignBaseline</a></span>, <span class='object_link'><a href="top-level-namespace.html#TextVerticalAlignCapHeight-constant" title="TextVerticalAlignCapHeight (constant)">TextVerticalAlignCapHeight</a></span> or <span class='object_link'><a href="top-level-namespace.html#TextVerticalAlignCenter-constant" title="TextVerticalAlignCenter (constant)">TextVerticalAlignCenter</a></span>.</p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/View.html#text_bounds-instance_method" title="Sketchup::View#text_bounds (method)">Sketchup::View#text_bounds</a></span>, returning the bounding box of the area SketchUp uses to draw text using <span class='object_link'><a href="Sketchup/View.html#draw_text-instance_method" title="Sketchup::View#draw_text (method)">Sketchup::View#draw_text</a></span>.</p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Model.html#active_path=-instance_method" title="Sketchup::Model#active_path= (method)">Sketchup::Model#active_path=</a></span> to allow the API to open an instance path for editing by the user.</p>
</li><li>
<p>Added new unit constants:</p>
</li><li>
<p><span class='object_link'><a href="Length.html#Yard-constant" title="Length::Yard (constant)">Length::Yard</a></span></p>
</li><li>
<p><span class='object_link'><a href="Length.html#SquareYard-constant" title="Length::SquareYard (constant)">Length::SquareYard</a></span></p>
</li><li>
<p><span class='object_link'><a href="Length.html#CubicYard-constant" title="Length::CubicYard (constant)">Length::CubicYard</a></span></p>
</li><li>
<p><span class='object_link'><a href="Length.html#Liter-constant" title="Length::Liter (constant)">Length::Liter</a></span></p>
</li><li>
<p><span class='object_link'><a href="Length.html#USGallon-constant" title="Length::USGallon (constant)">Length::USGallon</a></span></p>
</li><li>
<p>Added <code>AreaPrecision</code> and <code>VolumePrecision</code> to <code>Sketchup.active_model.options["UnitsOptions"]</code></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Layer.html#display_name-instance_method" title="Sketchup::Layer#display_name (method)">Sketchup::Layer#display_name</a></span> - this will return <code>"Untagged"</code> for layer0 while the old <span class='object_link'><a href="Sketchup/Layer.html#name-instance_method" title="Sketchup::Layer#name (method)">Sketchup::Layer#name</a></span> will continue to return <code>"Layer0"</code>.</p>
</li><li>
<p>Additional entity types now return PIDs for <span class='object_link'><a href="Sketchup/Entity.html#persistent_id-instance_method" title="Sketchup::Entity#persistent_id (method)">Sketchup::Entity#persistent_id</a></span>:</p>
</li><li>
<p><span class='object_link'><a href="Sketchup/Layer.html" title="Sketchup::Layer (class)">Sketchup::Layer</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/LineStyle.html" title="Sketchup::LineStyle (class)">Sketchup::LineStyle</a></span></p>
</li><li>
<p>Deprecated <span class='object_link'><a href="Sketchup/ComponentDefinition.html#insertion_point-instance_method" title="Sketchup::ComponentDefinition#insertion_point (method)">Sketchup::ComponentDefinition#insertion_point</a></span> and <span class='object_link'><a href="Sketchup/ComponentDefinition.html#insertion_point=-instance_method" title="Sketchup::ComponentDefinition#insertion_point= (method)">Sketchup::ComponentDefinition#insertion_point=</a></span> as this feature was removed in SketchUp. It now returns the origin of the definition and the setter is now a noop.</p>
</li></ul>
<h2 id="label-Ruby+API+Bug+Fixes">Ruby API Bug Fixes</h2>
<ul><li>
<p>Fixed potential crash in <span class='object_link'><a href="UI/HtmlDialog.html" title="UI::HtmlDialog (class)">UI::HtmlDialog</a></span>'s callbacks due to values not protected against Ruby's garbage collection.</p>
</li><li>
<p>Fixed model validation where it incorrectly flagged some valid UV mapping as invalid and reset it.</p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2019.3">What's new in SketchUp 2019.3</h1>
<h2 id="label-Ruby+API+Bug+Fixes">Ruby API Bug Fixes</h2>
<ul><li>
<p>(Win) Updated libcrypto and libssl dlls to 1.1.1c.</p>
</li><li>
<p>Fixed <span class='object_link'><a href="UI.html#openURL-class_method" title="UI.openURL (method)">UI.openURL</a></span> to not perform URL encoding on Mac for cross platform consistency.</p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2019.2">What's new in SketchUp 2019.2</h1>
<h2 id="label-Ruby+API+Additions+and+Improvements">Ruby API Additions and Improvements</h2>
<ul><li>
<p>Added <span class='object_link'><a href="Sketchup/Selection.html#invert-instance_method" title="Sketchup::Selection#invert (method)">Sketchup::Selection#invert</a></span></p>
</li><li>
<p>Added <code>:scale_factor</code> option to <span class='object_link'><a href="Sketchup/View.html#write_image-instance_method" title="Sketchup::View#write_image (method)">Sketchup::View#write_image</a></span> allowing control over the scale of viewport dependant elements such as text heights, arrow heads, line widths, stipple patterns, etc</p>
</li><li>
<p>Documented <code>:source => :framebuffer</code> option in <span class='object_link'><a href="Sketchup/View.html#write_image-instance_method" title="Sketchup::View#write_image (method)">Sketchup::View#write_image</a></span> that dumps the current frame as drawn in viewport. This has existed since SketchUp 7</p>
</li><li>
<p>Added the new area and volume unit settings to <span class='object_link'><a href="Sketchup/OptionsProvider.html" title="Sketchup::OptionsProvider (class)">Sketchup::OptionsProvider</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup.html#format_volume-class_method" title="Sketchup.format_volume (method)">Sketchup.format_volume</a></span></p>
</li><li>
<p>Added constants to the <span class='object_link'><a href="Length.html" title="Length (class)">Length</a></span> class for area and volume units to be used with the OptionsProvider</p>
</li><li>
<p>Added checks to prevent Image materials from being assigned to normal drawing elements. Doing so will now throw an <code>ArgumentError</code></p>
</li><li>
<p>Increased performance of PNG image export for colorized materials. Previously, it used to use max compression. Now we use a more balanced compression setting. This affects <span class='object_link'><a href="Sketchup/Texture.html#write-instance_method" title="Sketchup::Texture#write (method)">Sketchup::Texture#write</a></span> as well as the texture writer. We also added some general optimizations for <span class='object_link'><a href="Sketchup/Texture.html#write-instance_method" title="Sketchup::Texture#write (method)">Sketchup::Texture#write</a></span>. On a 4Kx4K texture we saw the processing time drop from ~50 seconds to ~6 seconds.</p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Tool.html#onMouseWheel-instance_method" title="Sketchup::Tool#onMouseWheel (method)">Sketchup::Tool#onMouseWheel</a></span> event to the <span class='object_link'><a href="Sketchup/Tool.html" title="Sketchup::Tool (class)">Sketchup::Tool</a></span> interface</p>
</li></ul>
<h2 id="label-Ruby+API+Bug+Fixes">Ruby API Bug Fixes</h2>
<ul><li>
<p>Updated Ruby from 2.5.1 to 2.5.5 to address a logic bug in Ruby</p>
</li><li>
<p>Fixed possible crash in <span class='object_link'><a href="Sketchup/Entities.html#clear!-instance_method" title="Sketchup::Entities#clear! (method)">Sketchup::Entities#clear!</a></span></p>
</li><li>
<p>Fixed a bug in .skm serialisation where arrays in material attributes were not written out to file</p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2019.1">What's new in SketchUp 2019.1</h1>
<h2 id="label-Ruby+API+Bug+Fixes">Ruby API Bug Fixes</h2>
<ul><li>
<p>Fixed the accepted types for the “point” in <span class='object_link'><a href="Sketchup/Entities.html#add_text-instance_method" title="Sketchup::Entities#add_text (method)">Sketchup::Entities#add_text</a></span></p>
</li><li>
<p>Fixed <span class='object_link'><a href="Sketchup/Model.html#save-instance_method" title="Sketchup::Model#save (method)">Sketchup::Model#save</a></span> for <code>VERSION_2019</code></p>
</li><li>
<p>Fixed crash when <code>rendering_options["RenderMode"] = 4</code></p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2019">What's new in SketchUp 2019</h1>
<h2 id="label-Upgrade+to+Ruby+2.5.1">Upgrade to Ruby 2.5.1</h2>
<p>We have upgraded from Ruby 2.2.4 to Ruby 2.5.1. These upgrades tend to introduce subtle changes to the Ruby language that sometimes are difficult for us to find in our internal testing. Our testing has not found any major compatibility issues between Ruby 2.2.4 and the new 2.5.1 and we expect the upgrade for most developers should be relatively straightforward. Please note that any compiled C extensions will need to be rebuilt. Ensure OpenSSL library calls are compatible.</p>
<h2 id="label-Dashes">Dashes</h2>
<p>Stipples and dots and dotted stipples, oh my! SketchUp has added a Dashes feature that allows for unique line styles to be applied and controlled at the Layer level. We have exposed this new feature in the Ruby and C APIs. See the Improvements and Fixes sections of each API for a list of classes and methods we’ve added. See the documentation for each API for complete documentation on how to use these features.</p>
<h2 id="label-InstancePath+Support+for+Dimensions+and+Text">InstancePath Support for Dimensions and Text</h2>
<p>In SketchUp 2019 we have added <span class='object_link'><a href="Sketchup/InstancePath.html" title="Sketchup::InstancePath (class)">Sketchup::InstancePath</a></span> support to our existing <span class='object_link'><a href="Sketchup/DimensionLinear.html" title="Sketchup::DimensionLinear (class)">Sketchup::DimensionLinear</a></span> and <span class='object_link'><a href="Sketchup/Text.html" title="Sketchup::Text (class)">Sketchup::Text</a></span> classes. Now when creating a Linear Dimension, or an attached Text object, you can attach it to a nested entity by providing a valid <code>InstancePath</code> object, or an array version of an instance path. This will allow you to create a dimension in model space, but attach it to a valid nested entity. The linear dimension or text will then be attached to that entity, exactly how it is when linear dimensions and text are created via the UI.</p>
<h2 id="label-Ruby+API+Breaking+Changes">Ruby API Breaking Changes</h2>
<ul><li>
<p>SketchUp changed how it presents units. Now it adds a space between the number and the unit indicator. If your extension uses a method of your own creation to interpret strings formatted by SketchUp you might find it doesn't work anymore if you don't account for the extra space. For example:</p>
</li><li>
<p>Before 2019: <code>"2.5mm"</code></p>
</li><li>
<p>Now in 2019: <code>"2.5 mm"</code></p>
</li><li>
<p>Ruby Version Upgrade - Ruby 2.5 removed the method: <code>Dir::Tmpname.make_tmpname</code>. If you were using that method, you will need to find an alternative</p>
</li><li>
<p><span class='object_link'><a href="Sketchup/Entity.html#delete_attribute-instance_method" title="Sketchup::Entity#delete_attribute (method)">Sketchup::Entity#delete_attribute</a></span> no longer returns <code>true</code> when attempting to delete a non-existing dictionary key</p>
</li></ul>
<h2 id="label-Ruby+API+Additions+and+Improvements">Ruby API Additions and Improvements</h2>
<ul><li>
<p>Upgraded Ruby version from 2.2.4 to 2.5.1 for both Mac and Windows</p>
</li><li>
<p>Upgraded CEF (used by <span class='object_link'><a href="UI/HtmlDialog.html" title="UI::HtmlDialog (class)">UI::HtmlDialog</a></span>) to version 64.</p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Tools.html#active_tool-instance_method" title="Sketchup::Tools#active_tool (method)">Sketchup::Tools#active_tool</a></span> that returns the active Ruby tool</p>
</li><li>
<p>Added <code>import_materials</code> option to <span class='object_link'><a href="Sketchup/Model.html#import-instance_method" title="Sketchup::Model#import (method)">Sketchup::Model#import</a></span> for dwg importer</p>
</li><li>
<p>Added instance path support for <span class='object_link'><a href="Sketchup/Entities.html#add_text-instance_method" title="Sketchup::Entities#add_text (method)">Sketchup::Entities#add_text</a></span></p>
</li><li>
<p>Added instance path support for <span class='object_link'><a href="Sketchup/Entities.html#add_dimension_linear-instance_method" title="Sketchup::Entities#add_dimension_linear (method)">Sketchup::Entities#add_dimension_linear</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/LineStyles.html" title="Sketchup::LineStyles (class)">Sketchup::LineStyles</a></span> class</p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/LineStyle.html" title="Sketchup::LineStyle (class)">Sketchup::LineStyle</a></span> class</p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Layer.html#line_style=-instance_method" title="Sketchup::Layer#line_style= (method)">Sketchup::Layer#line_style=</a></span> class</p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Model.html#line_styles-instance_method" title="Sketchup::Model#line_styles (method)">Sketchup::Model#line_styles</a></span> class</p>
</li><li>
<p>Improved <span class='object_link'><a href="String.html#to_l-instance_method" title="String#to_l (method)">String#to_l</a></span> which parses a <span class='object_link'><a href="String.html" title="String (class)">String</a></span> into a <span class='object_link'><a href="Length.html" title="Length (class)">Length</a></span> is now able to parse strings that have a space between the number and unit. It can parse both <code>"2.5mm"</code> and <code>"2.5 mm"</code></p>
</li><li>
<p>Improved <span class='object_link'><a href="Sketchup/InstancePath.html" title="Sketchup::InstancePath (class)">Sketchup::InstancePath</a></span> now accepts a path that includes a <span class='object_link'><a href="Sketchup/Image.html" title="Sketchup::Image (class)">Sketchup::Image</a></span> object</p>
</li></ul>
<h2 id="label-Ruby+API+Bug+Fixes">Ruby API Bug Fixes</h2>
<ul><li>
<p>Fixed a crash upon exit on Mac when a <span class='object_link'><a href="Sketchup/FrameChangeObserver.html" title="Sketchup::FrameChangeObserver (class)">Sketchup::FrameChangeObserver</a></span> is active</p>
</li><li>
<p>Fixed an issue where <span class='object_link'><a href="Sketchup/Model.html" title="Sketchup::Model (class)">Sketchup::Model</a></span> could become unusable after calling <code>.singleton_class</code>.</p>
</li><li>
<p>Fixed Ruby-created dimensions don't highlight when non-associated</p>
</li><li>
<p>Fixed Ruby-created dimensions don’t hide correctly when “Hide Foreshortened” is enabled</p>
</li><li>
<p>Fixed SketchUp crash when constructing <span class='object_link'><a href="Geom/PolygonMesh.html" title="Geom::PolygonMesh (class)">Geom::PolygonMesh</a></span> with negative values</p>
</li><li>
<p>Fixed Ruby DWG Importer units were not working correctly</p>
</li><li>
<p>Fixed <span class='object_link'><a href="Geom/PolygonMesh.html" title="Geom::PolygonMesh (class)">Geom::PolygonMesh</a></span> will not accept negative numbers as parameter</p>
</li><li>
<p>Fixed Extensions are loaded in a non-deterministic order on High Sierra</p>
</li><li>
<p>Fixed SketchUp crashes when attempting to load component made in newer version</p>
</li><li>
<p>Fixed typo concerning <code>merge_coplanar_faces</code> in the Importer Options documentation and code (old spelling remains for compatibility)</p>
</li><li>
<p>Fixed regression in SU2018 when renaming a material with the same name. This used to throw an error when it should have been a no-op</p>
</li><li>
<p>Fixed regression in SU2018 where <code>model.materials["MaterialName"]</code> might fail</p>
</li><li>
<p>Fixed a crash when loading a component made in a newer version of SketchUp</p>
</li><li>
<p>Fixed unicode characters in the Ruby Console on Windows</p>
</li><li>
<p>Fixed <span class='object_link'><a href="UI/HtmlDialog.html" title="UI::HtmlDialog (class)">UI::HtmlDialog</a></span> such that non-resizable dialog doesn't use width and height from preferences.</p>
</li><li>
<p><span class='object_link'><a href="Sketchup/View.html#write_image-instance_method" title="Sketchup::View#write_image (method)">Sketchup::View#write_image</a></span> should throw an error if there are more than 5 params passed in.</p>
</li><li>
<p>Fixed <span class='object_link'><a href="UI/HtmlDialog.html" title="UI::HtmlDialog (class)">UI::HtmlDialog</a></span> content flashing when resizing.</p>
</li></ul>
<h2 id="label-SketchUp+C+API+Documentation">SketchUp C API Documentation</h2>
<ul><li>
<p>Updated SDK docs on VC++ runtime versions</p>
</li></ul>
<h2 id="label-LayOut+Ruby+API+for+SketchUp">LayOut Ruby API for SketchUp</h2>
<ul><li>
<p>Added <span class='object_link'><a href="Layout/Document.html#save-instance_method" title="Layout::Document#save (method)">Layout::Document#save</a></span> will now throw an error if the file is already open in LayOut</p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/Path.html#winding-instance_method" title="Layout::Path#winding (method)">Layout::Path#winding</a></span> to get the current winding direction of the path. Returns one of the new constants <span class='object_link'><a href="Layout/Path.html#PATH_WINDING_NONE-constant" title="Layout::Path::PATH_WINDING_NONE (constant)">Layout::Path::PATH_WINDING_NONE</a></span>, <span class='object_link'><a href="Layout/Path.html#PATH_WINDING_CLOCKWISE-constant" title="Layout::Path::PATH_WINDING_CLOCKWISE (constant)">Layout::Path::PATH_WINDING_CLOCKWISE</a></span>, or <span class='object_link'><a href="Layout/Path.html#PATH_WINDING_COUNTER_CLOCKWISE-constant" title="Layout::Path::PATH_WINDING_COUNTER_CLOCKWISE (constant)">Layout::Path::PATH_WINDING_COUNTER_CLOCKWISE</a></span>.</p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/SketchUpModel.html#dash_scale-instance_method" title="Layout::SketchUpModel#dash_scale (method)">Layout::SketchUpModel#dash_scale</a></span> to get the current scale value of stipples in a SketchUp Model Ref. A value of 0.0 indicates the dash scale is automatically determined based on the line weight.</p>
</li><li>
<p>Added <span class='object_link'><a href="Layout/SketchUpModel.html#dash_scale=-instance_method" title="Layout::SketchUpModel#dash_scale= (method)">Layout::SketchUpModel#dash_scale=</a></span> to set the scale value of stipples for the SketchUp Model Ref. A value at or below 0.0 will cause the scale to automatically be determined by the line weight.</p>
</li><li>
<p>Fix documentation of <span class='object_link'><a href="Layout/Path.html#append_point-instance_method" title="Layout::Path#append_point (method)">Layout::Path#append_point</a></span>. When appending a bezier path segment, the params should have been (<code>control_1, control_2, point</code>) and not (<code>point, control_1, control_2</code>).</p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2018+M0">What's new in SketchUp 2018 M0</h1>
<h2 id="label-LayOut+Ruby+API+for+SketchUp">LayOut Ruby API for SketchUp</h2>
<p>This is a new Ruby based API for SketchUp that allows developers to read and write LayOut files using the regular SketchUp Ruby API. We’ve taken the existing LayOut C API and wrapped it with a Ruby layer and then included that inside SketchUp. This is proving to be a great working model for how to expose API functionality to our base C API and then expose that exact functionality to a Ruby layer without duplicating code.</p>
<h2 id="label-7BSketchup.send_to_layout-7D"><span class='object_link'><a href="Sketchup.html#send_to_layout-class_method" title="Sketchup.send_to_layout (method)">Sketchup.send_to_layout</a></span></h2>
<p>Along with the LayOut Ruby API for SketchUp we added the ability to open LayOut files with the LayOut application. This gives developers the ability to write a SketchUp extension purely in Ruby that parses the SketchUp model, writes a LayOut file and opens the LayOut file in LayOut in one smooth motion. This helps create a stronger connection between SketchUp and LayOut and can improve user workflows through the use of developer created extensions.</p>
<h2 id="label-ImageRep">ImageRep</h2>
<p>Hello Ruby API developers, meet <span class='object_link'><a href="Sketchup/ImageRep.html" title="Sketchup::ImageRep (class)">Sketchup::ImageRep</a></span>. This new class exposes a data structure internal to SketchUp called an <code>ImageRep</code>. <code>ImageRep</code> is an in-memory representation of an image (as opposed to a reference to an image inside the SketchUp model). This class exposes a number of image reading and manipulation tools to the Ruby API. Now you can get the color of a pixel at a specified uv coordinate from an <code>ImageRep</code>, get an array of all pixel data from an <code>ImageRep</code>, set pixel data in an <code>ImageRep</code>, save an <code>ImageRep</code> out to disk, and more. Of course we’ve also included utilities to convert an in-model texture to an <code>ImageRep</code>, and assign an <code>ImageRep</code> object directly to a material as the material’s texture. This new class opens up a lot of opportunities to read and manipulate images in the model. Check out the <code>ImageRep</code> class in Ruby API docs for more information.</p>
<h2 id="label-Exposed+Importer-2FExporter+Options+to+Ruby+API">Exposed Importer/Exporter Options to Ruby API</h2>
<p>We have exposed all the options for our native importers and exporters to Ruby. See the Ruby API documentation on <span class='object_link'><a href="Sketchup/Model.html#import-instance_method" title="Sketchup::Model#import (method)">Sketchup::Model#import</a></span> and <span class='object_link'><a href="Sketchup/Model.html#export-instance_method" title="Sketchup::Model#export (method)">Sketchup::Model#export</a></span>.</p>
<h2 id="label-New+SketchUp+Features+in+the+API">New SketchUp Features in the API</h2>
<p>A big round of applause for the SketchUp Core team for the improvements they have added to the SketchUp application. Well, we also wanted to make sure that these new features were accessible to our developer community. We have introduced new API features for Named Section Planes and Filled Section Cuts. Awesome!</p>
<h2 id="label-Ruby+Handling+of+Advanced+Attributes">Ruby Handling of Advanced Attributes</h2>
<p>SketchUp core added a feature called Advanced Attributes. This adds some new attribute dictionaries and attributes to Component Instances and Definitions by default on every model. It should be noted that we have blocked the ability to delete the dictionaries via Ruby. This should not be possible, please let us know if you find a scenario where you are able to do so. You can however delete the key/value pairs. The UI will recreate those key value pairs if they do not exist.</p>
<h2 id="label-Ruby+Improvements+and+Fixes">Ruby Improvements and Fixes</h2>
<ul><li>
<p>Upgraded CEF (used by <span class='object_link'><a href="UI/HtmlDialog.html" title="UI::HtmlDialog (class)">UI::HtmlDialog</a></span>) to version 56.</p>
</li><li>
<p>Added method: <span class='object_link'><a href="UI.html#refresh_toolbars-class_method" title="UI.refresh_toolbars (method)">UI.refresh_toolbars</a></span></p>
</li><li>
<p>Added constants to <span class='object_link'><a href="Geom/PolygonMesh.html" title="Geom::PolygonMesh (class)">Geom::PolygonMesh</a></span>:</p>
</li><li>
<p><span class='object_link'><a href="Geom/PolygonMesh.html#MESH_NORMALS-constant" title="Geom::PolygonMesh::MESH_NORMALS (constant)">Geom::PolygonMesh::MESH_NORMALS</a></span></p>
</li><li>
<p><span class='object_link'><a href="Geom/PolygonMesh.html#MESH_POINTS-constant" title="Geom::PolygonMesh::MESH_POINTS (constant)">Geom::PolygonMesh::MESH_POINTS</a></span></p>
</li><li>
<p><span class='object_link'><a href="Geom/PolygonMesh.html#MESH_UVQ_BACK-constant" title="Geom::PolygonMesh::MESH_UVQ_BACK (constant)">Geom::PolygonMesh::MESH_UVQ_BACK</a></span></p>
</li><li>
<p><span class='object_link'><a href="Geom/PolygonMesh.html#MESH_UVQ_FRONT-constant" title="Geom::PolygonMesh::MESH_UVQ_FRONT (constant)">Geom::PolygonMesh::MESH_UVQ_FRONT</a></span></p>
</li><li>
<p>Added method: <span class='object_link'><a href="Sketchup/DefinitionList.html#remove-instance_method" title="Sketchup::DefinitionList#remove (method)">Sketchup::DefinitionList#remove</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Page.html" title="Sketchup::Page (class)">Sketchup::Page</a></span> methods:</p>
</li><li>
<p><span class='object_link'><a href="Sketchup/Page.html#include_in_animation%3F-instance_method" title="Sketchup::Page#include_in_animation? (method)">Sketchup::Page#include_in_animation?</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/Page.html#include_in_animation=-instance_method" title="Sketchup::Page#include_in_animation= (method)">Sketchup::Page#include_in_animation=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/SectionPlane.html" title="Sketchup::SectionPlane (class)">Sketchup::SectionPlane</a></span> methods:</p>
</li><li>
<p><span class='object_link'><a href="Sketchup/SectionPlane.html#name-instance_method" title="Sketchup::SectionPlane#name (method)">Sketchup::SectionPlane#name</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/SectionPlane.html#name=-instance_method" title="Sketchup::SectionPlane#name= (method)">Sketchup::SectionPlane#name=</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/SectionPlane.html#symbol-instance_method" title="Sketchup::SectionPlane#symbol (method)">Sketchup::SectionPlane#symbol</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/SectionPlane.html#symbol=-instance_method" title="Sketchup::SectionPlane#symbol= (method)">Sketchup::SectionPlane#symbol=</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/ImageRep.html" title="Sketchup::ImageRep (class)">Sketchup::ImageRep</a></span> class:</p>
</li><li>
<p><span class='object_link'><a href="Sketchup/ImageRep.html#load_file-instance_method" title="Sketchup::ImageRep#load_file (method)">Sketchup::ImageRep#load_file</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/ImageRep.html#save_file-instance_method" title="Sketchup::ImageRep#save_file (method)">Sketchup::ImageRep#save_file</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/ImageRep.html#initialize-instance_method" title="Sketchup::ImageRep#initialize (method)">Sketchup::ImageRep#initialize</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/ImageRep.html#bits_per_pixel-instance_method" title="Sketchup::ImageRep#bits_per_pixel (method)">Sketchup::ImageRep#bits_per_pixel</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/ImageRep.html#size-instance_method" title="Sketchup::ImageRep#size (method)">Sketchup::ImageRep#size</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/ImageRep.html#data-instance_method" title="Sketchup::ImageRep#data (method)">Sketchup::ImageRep#data</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/ImageRep.html#width-instance_method" title="Sketchup::ImageRep#width (method)">Sketchup::ImageRep#width</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/ImageRep.html#height-instance_method" title="Sketchup::ImageRep#height (method)">Sketchup::ImageRep#height</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/ImageRep.html#row_padding-instance_method" title="Sketchup::ImageRep#row_padding (method)">Sketchup::ImageRep#row_padding</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/ImageRep.html#colors-instance_method" title="Sketchup::ImageRep#colors (method)">Sketchup::ImageRep#colors</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/ImageRep.html#color_at_uv-instance_method" title="Sketchup::ImageRep#color_at_uv (method)">Sketchup::ImageRep#color_at_uv</a></span></p>
</li><li>
<p><span class='object_link'><a href="Sketchup/ImageRep.html#set_data-instance_method" title="Sketchup::ImageRep#set_data (method)">Sketchup::ImageRep#set_data</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Materials.html#unique_name-instance_method" title="Sketchup::Materials#unique_name (method)">Sketchup::Materials#unique_name</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Texture.html#image_rep-instance_method" title="Sketchup::Texture#image_rep (method)">Sketchup::Texture#image_rep</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Image.html#image_rep-instance_method" title="Sketchup::Image#image_rep (method)">Sketchup::Image#image_rep</a></span></p>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup/Material.html#texture=-instance_method" title="Sketchup::Material#texture= (method)">Sketchup::Material#texture=</a></span> to accept <span class='object_link'><a href="Sketchup/ImageRep.html" title="Sketchup::ImageRep (class)">Sketchup::ImageRep</a></span> object as one of the data types it uses.</p>
</li><li>
<p>Added rendering options support for filled section cuts:</p>
</li><li>
<p><span class='object_link'><a href="Sketchup/RenderingOptions.html" title="Sketchup::RenderingOptions (class)">Sketchup::RenderingOptions</a></span> keys added:</p>
<ul><li>
<p><code>"SectionCutFilled"</code></p>
</li><li>
<p><code>"SectionDefaultFillColor"</code></p>
</li></ul>
</li><li>
<p><span class='object_link'><a href="Sketchup/RenderingOptionsObserver.html" title="Sketchup::RenderingOptionsObserver (class)">Sketchup::RenderingOptionsObserver</a></span> constants:</p>
<ul><li>
<p><code>ROPSetSectionCutFilled</code></p>
</li><li>
<p><code>ROPSetSectionDefaultFillColor</code></p>
</li></ul>
</li><li>
<p>Added <span class='object_link'><a href="Sketchup.html#send_to_layout-class_method" title="Sketchup.send_to_layout (method)">Sketchup.send_to_layout</a></span></p>
</li><li>
<p>Added options for all 3D exporters and imports</p>
</li></ul>
<h3 id="label-Bug+Fixes">Bug Fixes</h3>
<ul><li>
<p><strong>Breaking Change</strong> - Fixed a bug in <span class='object_link'><a href="Sketchup/Material.html#name=-instance_method" title="Sketchup::Material#name= (method)">Sketchup::Material#name=</a></span> which allowed the API to create materials with duplicate names. Now it will raise <code>ArgumentError</code> if it's not unique to the model.</p>
</li><li>
<p><strong>Breaking Change</strong> - Changed <span class='object_link'><a href="Sketchup/Color.html" title="Sketchup::Color (class)">Sketchup::Color</a></span> class to be common between LayOut and SketchUp. The potentially breaking change is that <span class='object_link'><a href="Sketchup/Color.html" title="Sketchup::Color (class)">Sketchup::Color</a></span> changed to now compare RGBA values instead of the Ruby objects.</p>
</li><li>
<p><strong>Breaking Change</strong> - Changed <span class='object_link'><a href="Geom/Transformation.html#identity%3F-instance_method" title="Geom::Transformation#identity? (method)">Geom::Transformation#identity?</a></span> So that it now properly returns <code>true</code> in all cases where the transformation matrix match the values for the identity transformation.</p>
</li><li>
<p>Fixed <code>Geom::Transformation.scaling(float)</code> and <code>Geom::Transformation#initialize(float)</code> to not set the 15th component of the matrix, but instead adjust the other fields.</p>
</li><li>
<p>Fixed a crash when trying to call <span class='object_link'><a href="Sketchup/View.html#animation=-instance_method" title="Sketchup::View#animation= (method)">Sketchup::View#animation=</a></span> from <span class='object_link'><a href="Sketchup/Animation.html#stop-instance_method" title="Sketchup::Animation#stop (method)">Sketchup::Animation#stop</a></span></p>
</li><li>
<p>Fixed a crash when calling <span class='object_link'><a href="UI.html#menu-class_method" title="UI.menu (method)">UI.menu</a></span> with empty string.</p>
</li><li>
<p><span class='object_link'><a href="Sketchup/Pages.html#erase-instance_method" title="Sketchup::Pages#erase (method)">Sketchup::Pages#erase</a></span> will now correctly delete the Scene tab, like the UI does.</p>
</li><li>
<p>Fixed a bug in <span class='object_link'><a href="Sketchup/ArcCurve.html#end_angle-instance_method" title="Sketchup::ArcCurve#end_angle (method)">Sketchup::ArcCurve#end_angle</a></span> where it sometimes added 360 degrees to the returned value.</p>
</li><li>
<p>Fixed an issue where a Ruby Importer could cause the Import file dialog to render the drop-down items incorrectly under Windows due to pipe characters in the description.</p>
</li><li>
<p>Fixed a crash when using <code>-RubyStartup</code> command line argument with a file that raises errors while loading.</p>
</li><li>
<p>Fixed a crash in <span class='object_link'><a href="UI.html#create_cursor-class_method" title="UI.create_cursor (method)">UI.create_cursor</a></span> that would happen if the length was less than 4 characters.</p>
</li><li>
<p>Fixed a rare crash in <span class='object_link'><a href="Sketchup/MaterialsObserver.html" title="Sketchup::MaterialsObserver (class)">Sketchup::MaterialsObserver</a></span>.</p>
</li></ul>
<h1 id="label-What-27s+new+in+SketchUp+2017+M0">What's new in SketchUp 2017 M0</h1>
<h2 id="label-Ruby+2.2">Ruby 2.2</h2>
<p>Yes, its that time again - time to update our Ruby Interpreter. We have upgraded to Ruby version 2.2.4. We're hopeful that extensions that use pure Ruby will be able to upgrade to Ruby 2.2 with little difficulty. Please note that any compiled C extensions will need to be rebuilt.</p>
<h2 id="label-Embedded+Web+Framework">Embedded Web Framework</h2>
<p>One of the developer features we are most excited about for SketchUp 2017 is a new Web Dialog framework. For SketchUp 2017 we are bundling the Chromium Web Browser with the SketchUp installer. What?! Yes, now SketchUp comes pre-packaged with a single web browser for both Mac and Windows clients. No more trauma from banging your head against the wall while trying to make your web pages compatible with Internet Explorer 8-11 and Safari.</p>
<p>In order to maintain backwards compatibility, we have implemented a new HtmlDialog class in the Ruby API and we have not altered the existing WebDialog class. Extensions that use WebDialogs should continue to work with no changes required.</p>
<h2 id="label-New+Ruby+API+Documentation">New Ruby API Documentation</h2>
<p>We have been working to improve our Ruby API documents and the publication process. We switched from an internally tweaked and maintained version of RDoc to YARD for our documentation generation. In the process we had to make many alterations to our documentation in the source code, we made a specialized YARD template to suit our needs. What we have now is a simple way to regenerate the documents in a matter of seconds, and we can push them to a git repo, where they are immediately available publicly. A process that used to take hours of manual html editing and special access to our Sketchup.com webserver, has been reduced to about a 10 minute process to generate and publish the documentation.</p>
<h2 id="label-SketchUp+C+API+Parity+-+continued">SketchUp C API Parity - continued</h2>
<p>We have focused on adding features to the SketchUp C API in 2017 to provide greater benefit to our developers and as part of our continued effort to fully deprecate and remove the old C++ API in the future. We are continuing to add more until we gain enough coverage to consider the C API at feature parity with the deprecated C++ API.</p>
<h2 id="label-Updated+Compilers">Updated Compilers</h2>
<p>We updated our compilers for Windows and macOS. On Windows we are now using Visual Studio 2015 SP1 (targeting Windows 7). On MacOs we are using XCode 7.2.1 (with deployment target 10.10).</p>
<h2 id="label-New+Ruby+API+Features">New Ruby API Features</h2>
<ul><li>
<p>Added class <span class='object_link'><a href="Sketchup/InstancePath.html" title="Sketchup::InstancePath (class)">Sketchup::InstancePath</a></span></p>
</li><li>
<p>Added class <span class='object_link'><a href="Sketchup/Http/Request.html" title="Sketchup::Http::Request (class)">Sketchup::Http::Request</a></span></p>
</li><li>
<p>Added class <span class='object_link'><a href="Sketchup/Http/Response.html" title="Sketchup::Http::Response (class)">Sketchup::Http::Response</a></span></p>
</li><li>
<p>Added class <span class='object_link'><a href="UI/Notification.html" title="UI::Notification (class)">UI::Notification</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Entity.html#persistent_id-instance_method" title="Sketchup::Entity#persistent_id (method)">Sketchup::Entity#persistent_id</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/InputPoint.html#instance_path-instance_method" title="Sketchup::InputPoint#instance_path (method)">Sketchup::InputPoint#instance_path</a></span></p>
</li><li>
<p>Added method <span class='object_link'><a href="Sketchup/Model.html#find_entity_by_persistent_id-instance_method" title="Sketchup::Model#find_entity_by_persistent_id (method)">Sketchup::Model#find_entity_by_persistent_id</a></span></p>
</li><li>