Skip to content

Commit

Permalink
Merge pull request #67 from BIM-Tools/develop
Browse files Browse the repository at this point in the history
Add UTM geolocation
  • Loading branch information
janbrouwer authored Nov 1, 2024
2 parents a265f7c + ef794ae commit 2287410
Show file tree
Hide file tree
Showing 16 changed files with 614 additions and 95 deletions.
2 changes: 1 addition & 1 deletion src/bt_ifcmanager.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ module BimTools

module IfcManager
# Version and release information.
VERSION = '5.2.1'
VERSION = 'dev'

# load plugin only if SketchUp version is PRO
# raised minimum version to 2017 due to switch to htmldialog
Expand Down
49 changes: 49 additions & 0 deletions src/bt_ifcmanager/lib/lib_ifc/IfcCoordinateOperation_su.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# frozen_string_literal: true

# IfcCoordinateOperation_su.rb
#
# Copyright 2024 Jan Brouwer <[email protected]>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
#
#

module BimTools
module IfcCoordinateOperation_su
def initialize(ifc_model, _sketchup)
super

# Workaround for missing "SourceCRS" attribute in XSD schema for IFC4 and IFC4X3
return if ifc_model.ifc_version == 'IFC 2x3'

instance_variable_set(:@attr, ([:SourceCRS] + attributes))

return if attributes.include? :SourceCRS

@sourcecrs = nil
define_singleton_method(:attributes) do
attributes = self.class.attributes
attributes.insert(0, :SourceCRS)
end
define_singleton_method(:sourcecrs) do
@sourcecrs
end
define_singleton_method(:sourcecrs=) do |sourcecrs|
@sourcecrs = sourcecrs
end
end
end
end
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# frozen_string_literal: true

# IfcGeometricRepresentationSubContext_su.rb
#
# Copyright 2017 Jan Brouwer <[email protected]>
# Copyright 2024 Jan Brouwer <[email protected]>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
Expand All @@ -26,18 +28,18 @@ def initialize(ifc_model)
instance_variable_set(:@attr, ([:ParentContext] + attributes))

# Workaround for bug in IFC XSD's forward from IFC4X3, missing "parentcontext" attribute
unless attributes.include? :ParentContext
@parentcontext = nil
define_singleton_method(:attributes) do
attributes = self.class.attributes
return attributes.insert(6, :ParentContext)
end
define_singleton_method(:parentcontext) do
return @parentcontext
end
define_singleton_method(:parentcontext=) do |parentcontext|
return @parentcontext = parentcontext
end
return if attributes.include? :ParentContext

@parentcontext = nil
define_singleton_method(:attributes) do
attributes = self.class.attributes
attributes.insert(6, :ParentContext)
end
define_singleton_method(:parentcontext) do
@parentcontext
end
define_singleton_method(:parentcontext=) do |parentcontext|
@parentcontext = parentcontext
end
end
end
Expand Down
58 changes: 58 additions & 0 deletions src/bt_ifcmanager/lib/lib_ifc/IfcPile_su.rb
Original file line number Diff line number Diff line change
@@ -1,58 +1,116 @@
# frozen_string_literal: true



# IfcPile_su.rb

#

# Copyright 2024 Jan Brouwer <[email protected]>

#

# This program is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License as published by

# the Free Software Foundation; either version 2 of the License, or

# (at your option) any later version.

#

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

# GNU General Public License for more details.

#

# You should have received a copy of the GNU General Public License

# along with this program; if not, write to the Free Software

# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,

# MA 02110-1301, USA.

#

#



module BimTools

module IfcPile_su

VALID_CONSTRUCTION_TYPES = %i[

CAST_IN_PLACE

COMPOSITE

PRECAST_CONCRETE

PREFAB_STEEL

USERDEFINED

NOTDEFINED

].freeze



attr_reader :constructiontype



def initialize(ifc_model, sketchup, _total_transformation)

@ifc_version = ifc_model.ifc_version

super

end



# ConstructionType attribute deprecated in IFC4

def constructiontype=(value)

return unless @ifc_version == 'IFC 2x3'



# TODO: hacky fix, should be part of PropertyReader

enum_value = if value.is_a?(String)

value.upcase.to_sym

elsif value.respond_to?(:value)

value.value.upcase.to_sym

else

value.to_sym

end



@constructiontype = VALID_CONSTRUCTION_TYPES.include?(enum_value) ? enum_value : nil

end

end

end

2 changes: 2 additions & 0 deletions src/bt_ifcmanager/lib/lib_ifc/entity_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ def persistent_id_path(instance_path)
# @return [IfcEntity] The created IFC entity.
def create_ifc_entity(entity_type_name, su_instance, placement_parent = nil, su_material = nil, su_layer = nil)
su_definition = su_instance.definition

# ifc_type_product = entity_type_name if entity_type_name&.end_with?('Type')
entity_type_name = map_entity_type(entity_type_name)
entity_type = @ifc_module.const_get(entity_type_name) if entity_type_name
ifc_entity = determine_ifc_entity(entity_type, su_instance, placement_parent)
Expand Down
Loading

0 comments on commit 2287410

Please sign in to comment.