1 Star 0 Fork 0

周狮虎 / SketchUp-Atribute-Dictionaries-Manager

加入 Gitee
与超过 1000 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
ADM_Core.rb 5.03 KB
一键复制 编辑 Web IDE 原始数据 按行查看 历史
周狮虎 提交于 2019-12-02 19:29 . Add files via upload
module Zhouxi
module ADM
@dialog = UI::HtmlDialog.new(
{
:dialog_title => "Hash index",
:scrollable => true,
:resizable => false,
:width => 300,
:height => 300,
:left => 85,
:top => 100,
:style => UI::HtmlDialog::STYLE_DIALOG
})
def self.update_html(tgt)
html= "
<!DOCTYPE html><HTML>
<BODY onload=set_hgt()>
<style type=text/css>
table#hash {
font-family: verdana,arial,sans-serif;
font-size:12px;
border: 1px solid black;
border-collapse:collapse;
width:100%;
}
td:hover {background-color:#eeeeee;}
td {
draggable=false;
border: 1px solid black;
text-indent:10px;
height:20px;
}
td#dic:hover {
background-color:#dddddd;
}
td#dic {
text-align:center;
background-color:#ddffff;
}
td#del:hover {background-color:#ffaaaa;}
td#del {
text-indent:0;
user-select:none;
text-align:center;
cursor:pointer;
width:15px;}
td#set:hover {background-color:#aaffff;}
td#set {
text-indent:0;
user-select:none;
text-align:center;
width:15px;
cursor:pointer;
}
td#add:hover {background-color:#aaffff;}
td#add {
text-indent:0;
user-select:none;
text-align:center;
width:40px;
cursor:pointer;
}
p {
font-family: verdana,arial,sans-serif;
font-size:12px;
letter-spacing:3px;
text-align:center;
background-color:#ffdfdf;
}
</style>
<script>
function add_new(){
var arr = new Array();
arr[0] = document.getElementById('the_id').innerHTML;
arr[1] = document.getElementById('new_name').innerHTML;
arr[2] = document.getElementById('new_key').innerHTML;
arr[3] = document.getElementById('new_val').innerHTML;
sketchup.set_dic(arr);
}
function del_line(){
var arr = new Array();
tg = event.target.parentNode;
arr[0] = document.getElementById('the_id').innerHTML;
arr[1] = tg.parentNode.firstChild.firstChild.innerHTML;
arr[2] = tg.childNodes[1].innerHTML;
sketchup.del_line(arr);
}
function del_dic(){
var arr = new Array();
arr[0] = document.getElementById('the_id').innerHTML;
arr[1] = event.target.previousSibling.innerHTML;
sketchup.del_dic(arr);
}
function change_kv(){
var arr = new Array();
tg = event.target.parentNode;
arr[0] = document.getElementById('the_id').innerHTML;
arr[1] = tg.parentNode.firstChild.firstChild.innerHTML;
arr[2] = tg.childNodes[1].innerHTML;
arr[3] = tg.childNodes[2].innerHTML;
sketchup.set_dic(arr);
}
function set_hgt(){
var hgt = document.body.clientHeight + 60
sketchup.set_hgt(hgt)
}
</script>
<p id=the_id>元素ID: #{tgt.entityID}</p>
"
dics = tgt.attribute_dictionaries
if dics != nil
dics.each{ |d|
html += "<table id=hash><tr><td id=dic colspan=3>#{d.name.to_s}</td><td id=del contenteditable=false onclick=del_dic()>-</td></tr>"
d.each{ |k,v| html += "<tr contenteditable=true><td id=set contenteditable=false onclick=change_kv()>+</td><td>#{k}</td><td>#{v}</td><td id=del contenteditable=false onclick=del_line()>-</td></tr>"}
html += "</table><br>"
}
end
html += "<p>添加哈希表</p>
<table id=hash contenteditable=true>
<tr><td colspan=2 id=new_name onclick=this.innerHTML=''>哈希表名</td><td id=add rowspan=2 onclick=add_new()>Add</td></tr>
<tr><td id=new_key onclick=this.innerHTML=''>键名</td><td id=new_val onclick=this.innerHTML=''>赋值</td></tr>
</table><br></BODY></html>"
@dialog.set_html(html)
@dialog.show if !@dialog.visible?
end
@dialog.add_action_callback("set_dic") { |action_context, arr|
id = arr[0].gsub(/元素ID:/,"").to_i
tgt = Sketchup.active_model.find_entity_by_id(id)
arr[1].gsub!(/<br>/,"")
tgt.set_attribute(arr[1],arr[2],arr[3])
update_html(tgt)
}
@dialog.add_action_callback("del_line") { |action_context, arr|
id = arr[0].gsub(/元素ID:/,"").to_i
tgt = Sketchup.active_model.find_entity_by_id(id)
tgt.delete_attribute(arr[1],arr[2])
update_html(tgt)
}
@dialog.add_action_callback("del_dic") { |action_context, arr|
id = arr[0].gsub(/元素ID:/,"").to_i
tgt = Sketchup.active_model.find_entity_by_id(id)
tgt.delete_attribute(arr[1])
update_html(tgt)
}
@dialog.add_action_callback("set_hgt") { |action_context, hgt|
@dialog.set_size(300, hgt)
}
tgt = Sketchup.active_model.selection[0]
update_html(tgt) if tgt
#Toolbar
toolbar = UI::Toolbar.new "ADM"
cmd = UI::Command.new("ADM") {
tgt = Sketchup.active_model.selection[0]
update_html(tgt) if tgt
}
cmd.small_icon = "icon.svg"
cmd.large_icon = "icon.svg"
cmd.status_bar_text = ("Atribute Dictionaries Manager")
cmd.tooltip = "ADM"
toolbar = toolbar.add_item cmd
toolbar.show
end
end
Ruby
1
https://gitee.com/zhou_shi_hu/SketchUp-Atribute-Dictionaries-Manager.git
git@gitee.com:zhou_shi_hu/SketchUp-Atribute-Dictionaries-Manager.git
zhou_shi_hu
SketchUp-Atribute-Dictionaries-Manager
SketchUp-Atribute-Dictionaries-Manager
master

搜索帮助