Right now I have this script and it works perfectly in Editable Poly. But I decided to update it to work in Edit Poly as well.
It's not working very well :)
This is a smart script that I have assigned to a single key and does diferent things depending on subobject and number of things selected.
macroScript SuperSmartCreate
category:"Pedro Scripts"
toolTip:"Super Smart Create"
(
local curObj = modPanel.getCurrentObject()
Case (classOf curObj) of
(
Edit_Poly:
(Case subobjectlevel of
(
1: ($.modifiers[#Edit_Poly].ButtonOp #ConnectVertices)
2: (if (((curObj.getSelection #edge) as array).count == 0) then
(
messagebox "Put the create face code here."
)
local doBridgeConnect = false
Edgs = curObj.GetSelection #edge as array
case (Edgs.count) of
(
1: (
--Inserts a vertex in the selected edge
curObj.divideEdge (Edgs[1]) 0.5
curObj.commit()
subobjectLevel = 1
)
2: (
(
EdgA = PolyOp.getEdgeVerts curObj Edgs[1]
EdgB = PolyOp.getEdgeVerts curObj Edgs[2]
if (EdgA[2]==EdgB[1]) then
(
curObj.CreateFace #(EdgA[1],EdgA[2],EdgB[2])
) else
if (EdgB[2] == EdgA[1]) then
(
curObj.CreateFace #(EdgB[1],EdgB[2],EdgA[2])
) else
(
doBridgeConnect = true
)
)
)
default: ( doBridgeConnect = true )
)
if doBridgeConnect then
(
curObj.bridgeSelected = 1
if not (curObj.EditablePoly.Bridge()) then
(
--curObj.connectEdgeSegments = 1
$.modifiers[#Edit_Poly].ButtonOp #ConnectEdges
)
)
)
3: ($.modifiers[#Edit_Poly].ButtonOp #Cap)
4: (if (((curObj.getSelection #face) as array).count < 2) then
messagebox "Put the create face code here."
else
(
$.modifiers[#Edit_Poly].ButtonOp #BridgePolygon
)
)
5:()
)
)
Editable_poly:
(Case subobjectlevel of
(
1: (curObj.EditablePoly.ConnectVertices ())
2: (if (((polyop.getEdgeSelection $.baseobject) as array).count == 0) then
(
macros.run "Editable Polygon Object" "EPoly_ECreate"
)
local doBridgeConnect = false
Edgs = polyop.GetEdgeSelection $ as array
case (Edgs.count) of
(
1: (
--Inserts a vertex in the selected edge
curObj.EditablePoly.divideEdge (Edgs[1]) 0.5 select:on
subobjectLevel = 1
)
2: (
(
EdgA = PolyOp.getEdgeVerts curObj Edgs[1]
EdgB = PolyOp.getEdgeVerts curObj Edgs[2]
if (EdgA[2]==EdgB[1]) then
(
curObj.CreateFace #(EdgA[1],EdgA[2],EdgB[2])
) else
if (EdgB[2] == EdgA[1]) then
(
curObj.CreateFace #(EdgB[1],EdgB[2],EdgA[2])
) else
(
doBridgeConnect = true
)
)
)
default: ( doBridgeConnect = true )
)
if doBridgeConnect then
(
curObj.bridgeSelected = 1
if not (curObj.EditablePoly.Bridge()) then
(
curObj.connectEdgeSegments = 1
curObj.EditablePoly.ConnectEdges ()
)
)
)
3: (curObj.EditablePoly.capHoles #Edge)
4: (if ((($.GetSelection #Face) as array).count < 2) then
macros.run "Editable Polygon Object" "EPoly_Create"
else
(
$.bridgeSelected = 1
$.EditablePoly.Bridge ()
)
)
5:()
)
)
unwrap_uvw:
(Case SubobjectLevel of
(
1: ()
2: ()
3: ()
)
)
)
)