C4D插件
作用分类: |
变圆挖洞 |
插件分类: |
脚本 |
使用教程: |
含教程 |
支持(高版本请自测): |
R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 S22 R23 R24 R25 R26 |
支持语言: |
英文 |
支持系统: |
PC MAC |
出现位置: |
脚本菜单 |
检索码: |
- |
if(!IsCommandChecked(12187)) return;
var op = doc->GetActiveObject();
if(!op) return;
if(op->GetType()==Opolygon)
{
var bc = new(BaseContainer);
bc->SetData(MDATA_EXTRUDE_OFFSET, 0);
bc->SetData(MDATA_EXTRUDE_PRESERVEGROUPS, TRUE);
SendModelingCommand(ID_MODELING_EXTRUDE_TOOL, NULL, op, bc, MODIFY_POLYGONSELECTION);
bc->SetData(MDATA_CONVERTSELECTION_LEFT, 2);
bc->SetData(MDATA_CONVERTSELECTION_RIGHT ,0);
SendModelingCommand(MCOMMAND_CONVERTSELECTION, NULL, op, bc, MODIFY_POINTSELECTION);
CallCommand(1015924); // Collapse ID_MODELING_COLLAPSE_COMMAND
SendModelingCommand( MCOMMAND_SELECTALL, NULL, op, bc, MODIFY_POLYGONSELECTION);
var saveselection = op->GetPointSelection();
var i, collapsedpoint;
var select = op -> GetPointSelection();
for (i = 0; i < op->GetPointCount(); i++) {
if (select->IsSelected(i)){
collapsedpoint = i;
}
}
SendModelingCommand(MCOMMAND_SELECTGROW, NULL, op, bc, MODIFY_POINTSELECTION);
var found = 0;
var selectedpoint = new(array,op->GetPointCount());
var select = op -> GetPointSelection();
for (i = 0; i < op->GetPointCount(); i++) {
if (found >= select->GetCount()) break;
if (select->IsSelected(i)){
selectedpoint[found] = i;
found++;
}
}
var beveldistance = 0;
for(i = 0; i < found; i++) {
beveldistance += vlen(op->GetPoint(selectedpoint) - op->GetPoint(collapsedpoint));
}
op->SetPointSelection(saveselection);
bc->SetData(MDATA_BEVEL_OFFSET2 , (beveldistance / (found-1) ) /3);
SendModelingCommand(ID_MODELING_BEVEL_TOOL, NULL, op, bc, MODIFY_POINTSELECTION);
SendModelingCommand(MCOMMAND_SELECTINVERSE, NULL, op, bc, MODIFY_POLYGONSELECTION);
SendModelingCommand(MCOMMAND_DELETE, NULL, op, bc, MODIFY_POLYGONSELECTION);
非常好的打洞脚本,可惜C4D R16用不了,国外C4D网站(c4dnetwork)上有讲支持R12,放出来如有还在用12的同学可以去用。
脚本代码放出来,有能力的朋友,改一下吧,改成R16的也好。
MakeHole建模打孔教程
|
|