×
热门分类
微信扫码登陆

QQ登录

只需一步,快速开始

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即加入SketchUp吧! 微信扫码登陆

x
本帖仅供研究 SketchUp Ruby 功能的使用。
目的:在插件的编写中,留存一些有用的类或者方法的快捷实现方法,以供查找。

注意:回复无 Ruby 代码删除,关于功能的实现有疑问的话,请向作者发短信息。


本帖1#,ODM:
1.#菜单调用 2.#简单if语句 3.#对选择的物体,判断种类是否为组或者组件
4.#SketchUp 中的对象类型 5.#右键菜单调用方法 6.#菜单命令的实现 7.#选择的对象

本帖2#,ODM:
8.#运算时间的计算 9.#类型转换也可以这样用,长度转字符型
10.#打开面板选择输出的文件,标题、目录、文件名
11.#数学方程的应用,简单的方法定义  12.#for循环的应用
13.#push 多个面 14.#组的另类用法 15.#VCB 前字符的定义
  1. #菜单调用
  2. Example.name

  3. #简单if语句
  4. return nil if name.empty?

  5. #对选择的物体,判断种类是否为组或者组件
  6. def xxx
  7.     is_valid = nil
  8.     ss.each do |e|
  9.          if (e.kind_of? Sketchup::Group) or (e.kind_of? Sketchup::ComponentInstance)   
  10.             is_valid = true
  11.          else
  12.             is_valid = false
  13.          end
  14.     end
  15.     return is_valid
  16. end

  17. #SketchUp 中的对象类型
  18. def xxx
  19.     SketchUp::Group #组
  20.     SketchUp::ComponentInstance #组件
  21.     Sketchup::Face #面
  22.     Sketchup::Edge #边
  23. end

  24. #右键菜单调用方法
  25. UI.add_context_menu_handler do |menu|
  26.       menu.add_separator if  #命令,添加分隔符
  27.       menu.add_item("Menu_name") { Example.name } if Example.name1
  28. end

  29. #菜单命令的实现
  30. if (not file_loaded?("xx.rb"))
  31.     menu_ex=UI.menu("Plugins").add_submenu("Example")
  32.     menu_ex.add_item("Menu_ex") { def.name}     
  33. end

  34. #undo及redo运算
  35. def
  36.     model = Sketchup.active_model
  37.     model.start_operation "Menu_name"
  38.     model.commit_operation
  39. end

  40. #选择的对象
  41. sel = Sketchup.active_model.selection
复制代码

赞赏

4

查看全部评分

世上没有绝望的处境,只有对处境绝望的人。
SUAPP3.4

精彩评论

文明上网理性发言、请文明用语

7

主题

294

帖子

58

红宝石

SU初师(等级5)

Rank: 5Rank: 5

红宝石
58
waterwoodss 2012-12-19 13:20:53
留名 好帖子

15

主题

2179

帖子

91

红宝石

SU学师(等级6)

Rank: 6Rank: 6

红宝石
91

忠实粉丝积极讨论奖

aaccaaccaacc 2012-10-26 16:12:55
这。。。。。。。。  

6

主题

45

帖子

12

红宝石

SU游学(等级2)

Rank: 2

红宝石
12
星语新R 2010-11-30 16:09:18
去里雾里。。。。。。。。。

0

主题

24

帖子

0

红宝石

SU入学(等级1)

Rank: 1

红宝石
0
zhjjd 2010-9-13 12:59:11
:D谢谢哦,很好的东西

0

主题

47

帖子

0

红宝石

SU入学(等级1)

Rank: 1

红宝石
0
mole2100 2009-9-29 00:41:55
怎么没有下文了?

23

主题

725

帖子

199

红宝石

SU有道(等级7)

Rank: 7Rank: 7Rank: 7

红宝石
199

2012龙年春节团拜纪念邮宝石收藏家

jonewu 2009-5-17 01:31:00
thank you for your share !

0

主题

1

帖子

0

红宝石

SU入学(等级1)

Rank: 1

红宝石
0
wind34 2009-5-14 10:26:00
我想知道如果要通过编程自动在SU里生成三维模型,ruby怎样编程实现啊?有没有简单的例子,比如说是通过API编程实现立方体在指定位置的自动生成?

0

主题

26

帖子

0

红宝石

SU入学(等级1)

Rank: 1

红宝石
0
cdw1981 2009-5-14 09:31:00
对这个ruby一点概念都没有!

3

主题

270

帖子

16

红宝石

SU游学(等级2)

Rank: 2

红宝石
16
igrubby 2009-3-15 11:54:00
莫非计算机考过2级有用了 。。。
呵呵 我第一次听说这还有用呢~~~:-?

3

主题

63

帖子

3

红宝石

SU入学(等级1)

Rank: 1

红宝石
3
zqbxfev 2009-3-10 19:02:00
学习学习了。谢谢!
顶一下!

15

主题

1221

帖子

539

红宝石

超级版主

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

红宝石
539

宝石收藏家忠实粉丝热心助人奖

buchu 2009-2-28 03:07:00
现在在学习ruby中

0

主题

5

帖子

0

红宝石

SU入学(等级1)

Rank: 1

红宝石
0
miao_yu9527 2009-2-13 23:09:00

回复 6# powermedia 的帖子

谢谢你了,我的确是不懂……所以才会说外行话么,呵呵……
不过对这个ruby倒是很感兴趣
谢谢你的建议!

23

主题

816

帖子

1174

红宝石

技术版主

Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40

红宝石
1174

优秀点子奖优秀技术奖荣誉会员

QQ
powermedia 2009-2-13 21:37:00

回复 5# miao_yu9527 的帖子

首先更正你的一个观点:"sketchup ruby“没有这个东西。ruby是单独的概念,它是一门动态型脚本编程语言,只所以和sketchup扯上关系是因为,sketchup采用ruby为二次开发语言。
所以想学习sketchup的插件开发的话,首先自己要对编程语言有爱好。建议你开始学习c语言。这样其他的语言就会融汇贯通。ruby就更不在话下。

0

主题

5

帖子

0

红宝石

SU入学(等级1)

Rank: 1

红宝石
0
miao_yu9527 2009-2-13 20:36:00
求教sketchup ruby应该如何学习?从vb或者C++开始么?
ODM

128

主题

870

帖子

1129

红宝石

网站创始人

尘土

Rank: 29Rank: 29Rank: 29Rank: 29Rank: 29Rank: 29Rank: 29Rank: 29

红宝石
1129

SuBAR聚会纪念邮 成都站核心会员宝石收藏家SuBAR_CLT汉化团队忠实粉丝社区微博达人

QQ
ODM 2009-2-7 18:12:00
undefined
原帖由 powermedia 于 2009-2-7 14:05:00 发表 ODM:能否实现以下功能:在inputBox里,当第一个下拉菜单内容改变时,第二个下来菜单能根据第一个的改变而改变?
目前没有找到能在一个 Inputbox 中实现的好方法,因为只有执行确认以后才第二个才会接收。不过,我想可以分两步来实现。见如下代码:
  1. #定义第一个下拉菜单
  2. inputbox1 = %w[F1 F2 F3 F4].join("|")  
  3. dropdowns= [inputbox1]    #下选菜单,可以定义多个
  4. if !@val then @val = "F1" end  #定义默认选择的菜单   
  5. prompts = ["First Inputbox"] #定义提示参数
  6. values = [@val]    #定义默认值
  7. @val= inputbox prompts,values, dropdowns, "Title" #显示 inputbox 窗口
  8. return nil if not @val #假如没有选择返回

  9. #根据第一个下拉菜单的值,来改变以后的操作
  10. case @val[0]  #判断用户选择的值,分别执行不同的程序,可以实现多个
  11.   when "F1"
  12.     UI.messagebox "Inputbox 2"
  13.   when "F2"
  14.     UI.messagebox "Inputbox 3"
  15.   when "F3"
  16.     UI.messagebox "Inputbox 4"
  17.   else
  18.     UI.messagebox "Inputbox 5"
  19. end
复制代码

23

主题

816

帖子

1174

红宝石

技术版主

Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40

红宝石
1174

优秀点子奖优秀技术奖荣誉会员

QQ
powermedia 2009-2-7 14:05:00
ODM:能否实现以下功能:
在inputBox里,当第一个下拉菜单内容改变时,第二个下来菜单能根据第一个的改变而改变?
ODM

128

主题

870

帖子

1129

红宝石

网站创始人

尘土

Rank: 29Rank: 29Rank: 29Rank: 29Rank: 29Rank: 29Rank: 29Rank: 29

红宝石
1129

SuBAR聚会纪念邮 成都站核心会员宝石收藏家SuBAR_CLT汉化团队忠实粉丝社区微博达人

QQ
ODM 2009-2-7 13:24:00
本帖2#,ODM:
8.#运算时间的计算 9.#类型转换也可以这样用,长度转字符型
10.#打开面板选择输出的文件,标题、目录、文件名
11.#数学方程的应用,简单的方法定义  12.#for循环的应用
13.#push 多个面 14.#组的另类用法 15.#VCB 前字符的定义
  1. #运算时间的计算
  2. def
  3.   st = Time.new #获取开始时间,放在计算过程的前面
  4.   et = Time.new #获取结束时间,放在计算过程的结束
  5.   puts "#{et - st}" #输出两时间差,字符中的计算用: #(..)
  6. end

  7. #类型转换也可以这样用,长度转字符型
  8. def l2str(len)
  9.   if len < 0.0
  10.     aux_str = "-" + (-len).inch.to_s.to_f.to_s
  11.   else
  12.     aux_str = len.inch.to_s.to_f.to_s
  13.   end
  14.   return aux_str
  15. end

  16. #打开面板选择输出的文件,标题、目录、文件名
  17. def
  18.     value = UI.openpanel("Export title", "", "*.xx")
  19.     if value
  20.         file=File.new(value.to_s,"w") #新建文件
  21.         file.puts("code:...")
  22.         file.close
  23.     end
  24. end

  25. #数学方程的应用,简单的方法定义
  26. def cos_hip(x)
  27.     return (Math::exp(x) + Math::exp(-x))/2
  28. end

  29. #for循环的应用
  30. for example in (0..10)
  31.     ...
  32. end

  33. #push 多个面
  34. indexes.push(hight)

  35. #组的另类用法
  36. def
  37.     entities = Sketchup.active_model.entities
  38.     group = entities.add_group #增加组
  39.     group_ents = group.entities #得到组的实体信息
  40.     group_ents.add_faces_from_mesh(mesh_et) #对实体信息进行操作
  41. end

  42. #VCB 前字符的定义
  43. #语法:result = Sketchup.set_status_text “status text”  position
  44. #position的值:SB_PROMPT- 最左边的提示值,SB_VCB_LABEL -VCB提示值,SB_VCB_VALUE -VCB值
  45. def
  46.      Sketchup::set_status_text("str", 1) #SB_PROMPT为0,SB_VCB_LABEL为1,SB_VCB_VALUE为2
  47. end
复制代码
高级模式
您需要登录后才可以回帖 登录 | 立即加入SketchUp吧! 微信扫码登陆

本版积分规则

ODM

网站创始人

  • 主题

    128

  • 吧币

    218830

  • 红宝石

    1129

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 客服中心 搜索 官方QQ群
关于我们/小黑屋/手机app/国土人/SketchUp吧 /京ICP备16008035号/