macroScript selectConvexEdges //定制快捷键栏目
category:"selectConvexEdges Script" //category层级
toolTip:"Quick Conver Edges Select" //Tip
macroScript selectConvexEdges
category:"selectConvexEdges Script"
toolTip:"Quick Conver Edges Select"
(
fn getConvexEdges node:selection[1] show:on threshold:45 ignoreHardEdges:off ignoreOpenEdges:on = if iskindof node Editable_Poly do
(
local edgeFaces = polyop.getedgefaces
local faceNormal = polyop.getfacenormal
local faceCenter = polyop.getfacecenter
local faceSmooth = polyop.getfacesmoothgroup
edges = #{}
for e in (node.edges as bitarray) do
(
ff = edgeFaces node e
if (not ignoreOpenEdges and ff.count != 2) or
(
(ff.count == 2) and
(
n1 = faceNormal node ff[1]
n2 = faceNormal node ff[2]
vc = faceCenter node ff[2] - faceCenter node ff[1]
(dot n1 vc <= 0) and (acos (dot n1 n2) > threshold) and
(
not ignoreHardEdges or (bit.and (faceSmooth node ff[1]) (faceSmooth node ff[2]) > 0)
)
)
)
do append edges e
)
if show do node.selectededges = edges
edges
)
getConvexEdges()
)

网友评论