BlenderCN论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2403|回复: 10

(原创插件,好用!)曲线断开BezierCurveSplit

[复制链接]
发表于 2013-7-22 15:14:42 | 显示全部楼层 |阅读模式
本帖最后由 luxuy 于 2013-7-24 13:34 编辑

不多说,直接上图。
pp2 .gif
文件在这:
http://vdisk.weibo.com/s/L0OpJ


 楼主| 发表于 2013-7-23 20:05:38 | 显示全部楼层
这么好的东西没人有兴趣?自己顶一下
回复 支持 反对

使用道具 举报

发表于 2013-7-24 09:39:11 | 显示全部楼层
这东西确实不错,传一个到论坛吧……

点评

文件上传始终不成功,我用的firefox,所以放微盘了。 贴代码吧:  详情 回复 发表于 2013-7-24 13:36
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-24 13:36:28 | 显示全部楼层
云风如我 发表于 2013-7-24 09:39
这东西确实不错,传一个到论坛吧……

文件上传始终不成功,我用的firefox,所以放微盘了。
贴代码吧:
  1. import bpy,math,mathutils
  2. from bpy.props import FloatProperty, IntProperty, BoolProperty,EnumProperty,StringProperty
  3. from mathutils import Matrix,Vector
  4. #----------------------------------------------------------------------                       
  5. class BezierCurveSplit(bpy.types.Operator):
  6.     bl_idname = "bpt.curve_split"
  7.     bl_label = "Curve Split"
  8.     bl_options = {'REGISTER', 'UNDO'}

  9.     @classmethod
  10.     def poll(cls, context):
  11.         cv=context.object
  12.         if  cv.type=='CURVE' and context.mode=='EDIT_CURVE':
  13.             return True
  14.         return False

  15.     def execute(self, context):
  16.         
  17.         cv=context.object
  18.         spl_pts=[]
  19.         sel_pts={}
  20.         j=0
  21.         for spl in cv.data.splines:
  22.             pts={}
  23.             sel_pts[j]=[len(spl.bezier_points)]
  24.             for i in range(len(spl.bezier_points)):
  25.                 bpt=spl.bezier_points[i]
  26.                
  27.                 pts[i]=[bpt.co[:],bpt.handle_left[:],bpt.handle_right[:]]
  28.                
  29.                
  30.                 if spl.bezier_points[i].select_control_point:
  31.                     print("sel pt !!")
  32.                     
  33.                     sel_pts[j].append(i)
  34.             j+=1
  35.             spl_pts.append(pts)

  36.         cv.data.splines.clear()
  37.         
  38.         for key in sel_pts:
  39.             
  40.             num=0
  41.             
  42.             if sel_pts[key][-1]==sel_pts[key][0]-1:
  43.                 sel_pts[key].pop()
  44.             for i in sel_pts[key][1:]+[sel_pts[key][0]-1]:
  45.                
  46.                 if i!=0:
  47.                     
  48.                     spl=cv.data.splines.new('BEZIER')
  49.                     spl.bezier_points.add(i-num)
  50.                   
  51.                     for j in range(num,i):
  52.                         bpt=spl.bezier_points[j-num]
  53.                        
  54.                         bpt.co=spl_pts[key][j][0]
  55.                         bpt.handle_left=spl_pts[key][j][1]
  56.                         bpt.handle_right=spl_pts[key][j][2]
  57.                     bpt=spl.bezier_points[-1]
  58.                     bpt.co=spl_pts[key][i][0]
  59.                     bpt.handle_left=spl_pts[key][i][1]
  60.                     bpt.handle_right=spl_pts[key][i][2]
  61.                     num=i
  62.    
  63.         return {'FINISHED'}
  64.         
  65. #==========================================================================================
  66. def register():
  67.     bpy.utils.register_module(__name__)
  68.    
  69. def unregister():
  70.     bpy.utils.unregister_module(__name__)

  71. if __name__ == "__main__":
  72.     register()
复制代码


点评

代码很有兴趣  详情 回复 发表于 2013-7-24 21:00
回复 支持 反对

使用道具 举报

发表于 2013-7-24 21:00:49 | 显示全部楼层
luxuy 发表于 2013-7-24 13:36
文件上传始终不成功,我用的firefox,所以放微盘了。
贴代码吧:

代码很有兴趣
回复 支持 反对

使用道具 举报

发表于 2013-7-25 15:34:46 | 显示全部楼层
果断顶一个!!
回复 支持 反对

使用道具 举报

发表于 2013-7-26 08:19:32 | 显示全部楼层
这个实用
回复 支持 反对

使用道具 举报

发表于 2013-7-28 00:20:52 | 显示全部楼层
真厉害....很实用的东东
回复 支持 反对

使用道具 举报

发表于 2014-1-7 13:16:36 | 显示全部楼层
很实用的,顶
回复 支持 反对

使用道具 举报

发表于 2014-4-26 08:13:41 | 显示全部楼层
今天一到这个板块发现无数惊喜啊 哈哈哈
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Blender最新中文教学视频|Blender头条|小黑屋|手机版|Archiver|Blender中国 ( 蜀ICP备17002929号 )360网站安全检测平台

GMT+8, 2019-6-18 17:45 , Processed in 0.019285 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表