Module: DFC::ModuleInterface

Overview

模块接口功能,用于项目模型的处理,例如:获取属性、计算工程量、吸管、刷子等

Examples:

class MyInterfaceXXX请修改类名
  # 属性查看接口
  # 公共属性 DFC_COMMON 统一处理,不用返回公共属性(除非需要特殊处理,可写同样 key 覆盖)
  # 如果没有属性要返回,请不要定义该接口方法
  # 返回 Hash<String, Hash> -> {
  #   '字典1' => {
  #     '键1' => '值1',
  #     '键2' => '值2',
  #   },
  #   '字典2' => {
  #     '键1' => '值1',
  #     '键2' => '值2',
  #   }
  # }
  def attribute_tool(instance, transformation)

  end

  # 清单接口
  # 详情可查看接口文档:http://dfcserver/dfc_interface_doc/Common/001-quota/index.html#3_69
  # 返回 Array<Hash>
  def budget_form_data(instance)

  end

  # 吸管接口
  def dropper(instance)
    # 通过 instance 拿到界面数据打开并恢复界面的代码
  end

  # 刷子接口(即将废弃,请修改为 batch_match)
  # 将dest组的模型匹配为src组
  def matcher(src_instance, dest_instance)
  end

  # 批量刷子接口
  # 将dest所有模型匹配为src组
  def batch_match(src_instance, dest_instances)
    # 通过 src_instance 改变 dest_instances 的代码
  end

  # 刷子判断接口(该方法为定制方法,可以不实现)
  # 获取刷子选中对象信息
  # 源对象和目标对象都可以走此方法,通过获得的信息进行配对
  # 返回结果:不可为 Nil 等固定信息,其余不限制,只要可以通过 == 判断是否相等即可
  def get_matcher_info(instance)

  end

  # 获取项目组物料信息
  # 返回 -> {
  #   '新建' => {
  #     '主材' => {
  #       'id' => {
  #         'model1' => {
  #           'value' => 0.0,
  #           'unit' => '',
  #         },
  #         'model2' => {
  #           'value' => 0.0,
  #           'unit' => '',
  #         },
  #       },
  #       'name' => { # 在项目定义和项目安装里面 有些标题材料未选择物料 直接使用标题名称
  #         'value' => 0.0,
  #         'unit' => '',
  #       },
  #     },
  #     '辅材' => {
  #       # 格式同「新建-主材」
  #     },
  #   },
  #   '原有' => {
  #     '主材' => {
  #       # 格式同「新建-主材」
  #     },
  #     '辅材' => {
  #       # 格式同「新建-主材」
  #     },
  #   },
  # }
  def material_info(instance)
    {}
  end
end

# 以创建工具(详项目组属性)作为key注册接口,key 只支持两级元素!!!
DFC_BIM::ModuleInterface.register(%w[室内 楼地面装饰], FloorInterface.new)

Instance Method Summary # collapse

Instance Method Details

#find(instance, method_name) ⇒ Object, Nil

Note:

该方法仅提供给接口使用者,接口实现者不要使用!

寻找组件或群组的接口对象

Examples:

group = Sketchup.active_model.selection[0]
# 寻找群组的吸管接口
DFC::ModuleInterface.find(group, :dropper)

Parameters:

  • instance (Sketchup::Group, Sketchup::ComponentInstance)

    项目群组或组件

  • method_name (Symbol)

    接口方法,目前有 5 个::attribute_tool、:computation、:project_list、:dropper、:matcher

Returns:

Version:

  • 2.1.2

#interface_listHash<String, Object>

Note:

该方法仅提供给接口使用者,接口实现者不要使用!

获取已注册接口列表

Examples:

DFC::ModuleInterface.interface_list

Returns:

Version:

  • 2.1.2

#key_registered?(key) ⇒ True, False

判断 key 是否已注册

Examples:

DFC::ModuleInterface.key_registered?(["室内", "地面装饰"])

Parameters:

  • key (Array<String>)

    由两个 String 元素组成

Returns:

  • (True, False)

Version:

  • 2.1.2

#register(key, obj) ⇒ Object

注册模块接口

Examples:

DFC::ModuleInterface.register(["室内", "地面装饰"], obj)

Parameters:

  • key (Array<String>)

    由两个 String 元素组成,详 属性对照表 里边的「创建_工具」

  • obj (Object)

    接口类实例

Returns:

  • (Object)

    接口类实例

Version:

  • 2.1.2

#send_event(obj, method_name, *args) ⇒ Object

Note:

该方法仅提供给接口使用者,接口实现者不要使用!

找到接口对象后,就可以使用本方法来调用接口方法了

Examples:

group = Sketchup.active_model.selection[0]
# 寻找群组的吸管接口
obj = DFC::ModuleInterface.find(group, :dropper)
if obj
 DFC::ModuleInterface.send_event(obj, :dropper, group)
end

Parameters:

  • obj (Object)

    通过 find 找到的接口对象

  • method_name (Symbol)

    接口方法

  • args (*Object)

    接口方法的参数

Returns:

Version:

  • 2.1.2