Compare commits

...

7 Commits

Author SHA1 Message Date
Oğuzhan Koral 92a941a944 Fix (Instancing): correct id of definition for speckle entity 2023-11-29 13:25:51 +03:00
oguzhankoral 0e1ddf2b11 Tweak definition speckle entity checks 2023-11-29 13:15:07 +03:00
Oğuzhan Koral b57fa010d1 Fix (Config): Reset configs if configSketchup somehow corrupted 2023-11-28 22:38:56 +03:00
oguzhankoral f816452b78 Reset configs if configSketchup somehow corrupted 2023-11-28 22:36:03 +03:00
Oğuzhan Koral 120083bb31 Feat (Performance): receive performance improvements 2023-11-28 13:54:36 +03:00
oguzhankoral a5bb5c4686 Remove logging 2023-11-28 13:31:19 +03:00
oguzhankoral e5e2729f0a Wrap receive into sketchup operation for performance improvement 2023-11-28 11:57:17 +03:00
4 changed files with 22 additions and 29 deletions
@@ -27,10 +27,12 @@ module SpeckleConnector
converter = Converters::ToNative.new(state, @stream_id, @stream_name, @branch_name, @source_app)
# Have side effects on the sketchup model. It effects directly on the entities by adding new objects.
start_time = Time.now.to_f
state.sketchup_state.sketchup_model.start_operation('Receive Speckle Objects', true)
state = converter.receive_commit_object(@base)
if state.user_state.model_preferences[:merge_coplanar_faces]
Converters::CleanUp.merge_coplanar_faces(converter.converted_faces)
end
state.sketchup_state.sketchup_model.commit_operation
elapsed_time = (Time.now.to_f - start_time).round(3)
puts "==== Converting to Native executed in #{elapsed_time} sec ===="
puts "==== Source application is #{@source_app}. ===="
+1 -23
View File
@@ -25,40 +25,18 @@ module SpeckleConnector
def self.merge_coplanar_faces(faces)
edges = []
start_time = Time.now.to_f
puts "number of faces before reject deleted: #{faces.length}"
faces = faces.reject(&:deleted?)
puts "number of faces #{faces.length}"
elapsed_time = (Time.now.to_f - start_time).round(3)
puts "==== 1- Rejecting deleted faces executed in #{elapsed_time} sec ===="
start_time = Time.now.to_f
faces.each { |face| face.edges.each { |edge| edges << edge } }
elapsed_time = (Time.now.to_f - start_time).round(3)
puts "==== 2- Collecting edges executed in #{elapsed_time} sec ===="
start_time = Time.now.to_f
puts "number of edges before uniq!: #{edges.length}"
edges.uniq!
puts "number of edges #{edges.length}"
elapsed_time = (Time.now.to_f - start_time).round(3)
puts "==== 3- Making edges uniq! in #{elapsed_time} sec ===="
start_time = Time.now.to_f
edges.each { |edge| remove_edge_have_coplanar_faces(edge) }
elapsed_time = (Time.now.to_f - start_time).round(3)
puts "==== 4- Clean up edges executed in #{elapsed_time} sec ===="
start_time = Time.now.to_f
# Remove remaining orphan edges
edges.reject(&:deleted?).select { |edge| edge.faces.empty? }.each(&:erase!)
elapsed_time = (Time.now.to_f - start_time).round(3)
puts "==== 5- Removing orphan edges edges executed in #{elapsed_time} sec ===="
# edges.reject(&:deleted?).select { |edge| edge.faces.empty? }.each(&:erase!)
start_time = Time.now.to_f
merged_faces(faces)
elapsed_time = (Time.now.to_f - start_time).round(3)
puts "==== 6- Rejecting deleted faces executed in #{elapsed_time} sec ===="
end
def self.merged_faces(faces)
@@ -12,7 +12,7 @@ module SpeckleConnector
include Immutable::ImmutableUtils
DICT_HANDLER = SketchupModel::Dictionary::SpeckleModelDictionaryHandler
# rubocop:disable Layout/LineLength
DEFAULT_CONFIG = "('configSketchup', '{\"dark_theme\":false, \"diffing\":false, \"register_speckle_entity\":false}, \"fe2\":false');"
DEFAULT_CONFIG = "('configSketchup', '{\"dark_theme\":false, \"diffing\":false, \"register_speckle_entity\":false, \"fe2\":false}');"
# rubocop:enable Layout/LineLength
DEFAULT_PREFERENCES = '{"dark_theme":false, "diffing":false, "register_speckle_entity": false, "fe2": false}'
@@ -34,12 +34,16 @@ module SpeckleConnector
def self.data_complete?(row_data)
return false if row_data.empty?
data = JSON.parse(row_data.first.first)
if data['dark_theme'].nil? || data['fe2'].nil? || data['diffing'].nil? || data['register_speckle_entity'].nil?
return false
end
begin
data = JSON.parse(row_data.first.first)
if data['dark_theme'].nil? || data['fe2'].nil? || data['diffing'].nil? || data['register_speckle_entity'].nil?
return false
end
true
true
rescue StandardError
false
end
end
# Validates current preferences. If there are incomplete data then this method resets it with default preferences.
@@ -136,6 +136,15 @@ module SpeckleConnector
next if (entity.is_a?(Sketchup::Face) || entity.is_a?(Sketchup::Edge)) &&
!state.user_state.user_preferences[:register_speckle_entity]
if entity.is_a?(Sketchup::ComponentDefinition)
definition = speckle_object['definition'] || speckle_object['@block_definition'] ||
speckle_object['block_definition']
if definition
speckle_id = definition['id']
speckle_type = definition['speckle_type']
end
end
ent = SpeckleEntity.new(entity, speckle_id, application_id, speckle_type, children, [stream_id])
ent.write_initial_base_data
speckle_state = speckle_state.with_speckle_entity(ent)