工具事件规范

参数说明
| 参数 | 说明 | 数据类型 | 参考值 |
|---|---|---|---|
| event | 事件名称 | Symbol | :exit、:finish、:cancel、:change |
| data | 数据 | Hash |
DFC::Common::Features::MeasureLine.measure do |event, data|
if event == :finish
puts data[:res]
end
end
type = 'mm²'
DFC::Common::Features::MeasureArea.measure do |event, data|
if event == :finish
if type == 'mm²'
quantity = data[:res]* 0.0254 * 0.0254 * 1000 * 1000
elsif type == 'm²'
quantity = data[:res]* 0.0254 * 0.0254.round(3)
end
end
end
type = 'm³'
DFC::Common::Features::MeasureVolume.measure do |event, data|
if event == :finish
if type == 'm³'
data[:res]* 0.0254 * 0.0254 * 0.0254
end
end
end
ent = Sketchup.active_model.selection[0]
label = '安装基点' # 安装基点、固定基点
DFC::Common::Features::BasePointSetting.base_point_setting(ent, label) do |event, info, size|
if event == :finish
p size
end
end
ent = Sketchup.active_model.selection[0]
names = ['底面'] # 底面、顶面、正面、背面、右侧面、左侧面
DFC::Common::Features::LegendSetting.legend_setting(ent, names) do |event, ids, entities|
if event == :finish
puts ids
puts entities
end
end
ent = Sketchup.active_model.selection[0]
DFC::Common::Features::VariableSetting.variable_setting(ent) do |result|
dfc_dd result
end
DFC::Common::Features::ModelPickUp.model_pickup do |event, result|
if event == :finish
dfc_dd result
end
end
# info_hash = {
# '长' => false,
# '宽' => false,
# '高' => false,
# }
# 默认测量长宽高, 如果只需要测量长度info_hash={'长' => false}
DFC::Common::Features::MeasureLength.measure (info_hash) do |event, result|
if event == :finish
dfc_dd result
end
end
DFC::Common::Features::PickUp.pickup do |event, result|
if event == :finish
dfc_dd result
end
end
# 拾取单个模型
pick_model = DFC::Common::Features::PickModel.new
# 拾取多个模型
pick_model = DFC::Common::Features::PickModel.new true
# 工具激活 callback
pick_model.activate_block {
arr = Sketchup.active_model.active_path
unless arr.blank?
UI.messagebox '请不要在实体组内拾取模型作为实体'
Sketchup.active_model.select_tool nil
end
}
# 判断模型是否有效 是否是可以拾取模型 案例不拾取项目组 当前之后pickhelp 后续增加框选
pick_model.valid_entity_block { |state, data|
next unless state == :pick_help
ph = data
best_entity = ph.best_picked
if best_entity.is_a?(Sketchup::Group) || best_entity.is_a?(Sketchup::ComponentInstance)
common_attr = best_entity.dfc_get_common_attribute
next common_attr && common_attr['DX_LX'] == '项目组' ? nil : best_entity
end
}
# 工具事件call_back 当前只有 :finish 单选返回单个模型 多选返回数组
pick_model.event_callback { |event, group_or_groups|
next unless event == :finish && group_or_groups
puts group_or_groups
Sketchup.active_model.select_tool nil
}
Sketchup.active_model.select_tool pick_model
model = Sketchup.active_model
materials = model.materials
m2 = materials.add('Fred')
m2.color = 'red'
obj = DFC::Common::Features::FaceAddMaterial.setting(m2) do |event, data|
if event == :finish
puts "data == {}; #{data}"
end
end
DFC::Common::Features::SelectModel.event do |event, data|
if event == :finish
data[:select_infos].each {|ins|
p ins.to_a
}
elsif event == :exit
puts '退出工具'
end
end
DFC::Common::Features::AdhesionTexture.adhesion_texture(id) do |event|
if event == :finish
Sketchup.active_model.select_tool nil
end
end
names = ["石材", "木材", "型钢", "不锈钢"] # names可不传或4个元素任意组合
DFC::Common::Features::SurfaceTreat.show(names) do |data|
dfc_dd data
end
prompts = ["偏移距离", "..."]
defaults = ["0", "..."]
title = "统一偏移"
DFC::Common::Features::DfcUI.inputbox(prompts, defaults, title) do |status, data|
if event == :finish
dfc_dd data
else # event == :exit
dfc_dd '窗口关闭'
end
end