Paste Code
Paste Blends
Paste Images
#20130610
bl_info = {
"name": "uv_tool",
"author": "imdjs",
"version": (2014,"1018"),
"blender": (2, 7, 0),
"api": 270,
"location": "IMAGE_EDITOR > UI ",
"description": "smooth selected uv line",
"warning": "",
"wiki_url": "http://blog.sina.com.cn/u/1325600780",
"tracker_url": "http://blog.sina.com.cn/s/blog_4f03100c01010wqb.html",
"category": "UV"}

import os,ctypes
import bpy, math, mathutils,bmesh
from ctypes import *
from bpy.props import *
from math import *
from mathutils import Vector

#//Function//////////////////////////////////////////////////////////////////
PI =3.14159;
PI2 = 6.2831;

class 卐DLL类型():
def __init__(self):
wm = bpy.context.window_manager;
self.DLL=None;
i左右不同点=0;i右点找不到左点数=0;b已经弹出窗口=False ;

def bΔΔ求圆心与半径坐标给f3四(f2头,f2尾,f2间,f3XYR):
k1=k2=0;
x1=(f2头[0]);y1=(f2头[1]);x2=(f2尾[0]);y2=(f2尾[1]);x3=(f2间[0]);y3=(f2间[1]);
#print("x1",x1,"y1",y1,"x2",x2,"y2",y2,"x3",x3,"y3",y3,)
if((y1==y2) and (y2==y3)):
#print("三点不构成圆\n");
return False ;

if((y1!=y2)and(y2!=y3)):
k1=(x2-x1)/(y2-y1);
k2=(x3-x2)/(y3-y2);
#print("k1=%f k2=%f\n",k1,k2);

if((0<=abs(k1-k2)) and (abs(k1-k2)<0.002)) :

#print("&#19977;&#28857;&#19981;&#26500;&#25104;&#22278;\n");
#&#916;&#916;&#24179;&#22343;&#25289;&#30452;()
return False ;

a=(2*(x2-x1));
b=(2*(y2-y1));
#print("a=%d\n",a,"b=%d\n",b);
c=(x2*x2+y2*y2-x1*x1-y1*y1);
d=(2*(x3-x2));
e=(2*(y3-y2));
f=(x3*x3+y3*y3-x2*x2-y2*y2);

x=(b*f-e*c)/(b*d-e*a);
y=(d*c-a*f)/(b*d-e*a);

#print("&#22278;&#24515;x&#20026;%d\n", x, "&#22278;&#24515;y&#20026;%d\n",y);
r=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
#print("&#21322;&#24452;&#20026;%d\n", r);
f3XYR[0]=x;f3XYR[1]=y;f3XYR[2]=r;
# return f3XYR;
return True ;


##---------------------------------------------------------------------------------------
def f&#916;&#916;&#30693;&#19977;&#28857;&#27714;&#23545;&#35282;&#24359;(f2&#22836;, f2&#23614;, f2&#22278;&#24515;):
f&#36793;&#19968;=sqrt( pow((f2&#22836;[0]-f2&#22278;&#24515;[0]),2)+pow((f2&#22836;[1]-f2&#22278;&#24515;[1]),2) ) ;
f&#36793;&#20108;=sqrt( pow((f2&#23614;[0]-f2&#22278;&#24515;[0]),2)+pow((f2&#23614;[1]-f2&#22278;&#24515;[1]),2) );
f&#23545;&#36793;=sqrt( pow((f2&#22836;[0]-f2&#23614;[0]),2)+pow((f2&#22836;[1]-f2&#23614;[1]),2));
cosA=( f&#36793;&#19968;*f&#36793;&#19968;+f&#36793;&#20108;*f&#36793;&#20108;-f&#23545;&#36793;*f&#23545;&#36793;)/(2*f&#36793;&#19968;*f&#36793;&#20108; );##&#35282;&#24230;&#21482;&#33021;&#20174;0&#21040;180&#24230; &#27809;&#26377;&#36127;&#35282;&#24230;
f&#23545;&#24359;=acos(cosA );##cos&#20540; &#20174;-1&#21040;1

#print("f&#23545;&#24359;C++&#65309;%d\n", f&#23545;&#24359;, "cosA&#65309;%d\n",cosA);
return f&#23545;&#24359;;##&#27714;&#30340;&#24359;&#27704;&#36828;&#23567;&#20110;&#21322;&#22278;

##---------------------------------------------------------------------------
def atan3(x, y):##&#27714;&#20986;360&#24230;&#20869;&#27491;&#24359;&#24230;
z=pow(x,2)+pow(y,2);
if(z==0):
z==0.000000001;

if(y>=0 ):##&#22312;&#8593;
return acos(x/sqrt(z));
else:##(y<0and x<=0)##&#22312;&#8601;
#print("y<=0\n");
c=acos(x/sqrt(z));
return c+(PI-c)*2;

def f&#916;&#916;&#27714;&#20004;&#30690;&#37327;&#22841;&#35282;&#24359;&#27491;(f2&#28857;&#19968;, f2&#28857;&#20108;):
# f2&#22278;&#24515;=0.0f,0.0f; f2&#22836;
f&#23545;&#24359;&#19968;=atan3(f2&#28857;&#19968;[0],f2&#28857;&#19968;[1]);## Y#X
f&#23545;&#24359;&#20108;=atan3(f2&#28857;&#20108;[0],f2&#28857;&#20108;[1]);
return abs(f&#23545;&#24359;&#19968;-f&#23545;&#24359;&#20108;);

def &#916;&#916;&#27714;&#35282;&#23545;&#36793;&#30690;&#37327;(f2&#37051;&#36793;&#30690;&#37327;, f2&#26012;&#36793;&#30690;&#37327;, f2&#23545;&#36793;&#30690;&#37327;):##&#27714;&#24471;&#23545;&#36793;&#30340;&#30690;&#37327;
f&#22841;&#35282;&#24359;=f&#916;&#916;&#27714;&#20004;&#30690;&#37327;&#22841;&#35282;&#24359;&#27491;(f2&#37051;&#36793;&#30690;&#37327;,f2&#26012;&#36793;&#30690;&#37327;);
f&#37051;&#36793;&#38271;=sqrt(pow(f2&#37051;&#36793;&#30690;&#37327;[0],2)+pow(f2&#37051;&#36793;&#30690;&#37327;[1],2));
f&#26012;&#36793;&#38271;=sqrt(pow(f2&#26012;&#36793;&#30690;&#37327;[0],2)+pow(f2&#26012;&#36793;&#30690;&#37327;[1],2));
f&#23545;&#36793;&#38271;=f&#26012;&#36793;&#38271;*cos(f&#22841;&#35282;&#24359;);
f&#37051;&#36793;&#27604;&#20363;=f&#23545;&#36793;&#38271;/f&#37051;&#36793;&#38271;;
f2&#23545;&#36793;&#30690;&#37327;[0]=f2&#37051;&#36793;&#30690;&#37327;[0]*f&#37051;&#36793;&#27604;&#20363;;f2&#23545;&#36793;&#30690;&#37327;[1]=f2&#37051;&#36793;&#30690;&#37327;[1]*f&#37051;&#36793;&#27604;&#20363;;
#memcpy(f2&#23545;&#36793;&#30690;&#37327;,Lf2uv&#36873;&#24207;[i&#24207;&#30495;],sizeof(f2&#23545;&#36793;&#30690;&#37327;));

#---------------------------------------------------------------------------------------

def f&#916;&#916;&#27714;&#21152;&#24359;&#27491;&#30495;(f2&#22836;, f2&#22278;&#24515;, f&#21152;&#24359;&#27491;, b&#39034;):
#fX&#22836;&#28187;,fY&#22836;&#28187;,f&#22836;&#24359;&#27491;,f&#21152;&#24359;&#27491;&#30495;;
fX&#22836;&#28187;=f2&#22836;[0]-f2&#22278;&#24515;[0]; fY&#22836;&#28187;=f2&#22836;[1]-f2&#22278;&#24515;[1];
f2XY=[fX&#22836;&#28187;,fY&#22836;&#28187;];
f&#22836;&#24359;&#27491;=atan3(f2XY[0],f2XY[1]);
#print("f&#22836;&#24359;&#27491;%d\n", f&#22836;&#24359;&#27491;, "&#35282;%d\n",degrees(f&#22836;&#24359;&#27491;))
if( b&#39034;):
if((f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)<PI2):f&#21152;&#24359;&#27491;&#30495;=f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;;
if((f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)>PI2):f&#21152;&#24359;&#27491;&#30495;=(f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)-PI2;
if((f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)>PI2*2):f&#21152;&#24359;&#27491;&#30495;=(f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)-PI2*2;
else:f&#21152;&#24359;&#27491;&#30495;=(f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)-PI2;

else:
if((f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)<PI2):f&#21152;&#24359;&#27491;&#30495;=-f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;;
if((f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)>PI2):f&#21152;&#24359;&#27491;&#30495;=(-f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)-PI2;
if((f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)>PI2*2):f&#21152;&#24359;&#27491;&#30495;=(-f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)-PI2*2;
else:f&#21152;&#24359;&#27491;&#30495;=(-f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)-PI2;

if (f&#21152;&#24359;&#27491;&#30495;<0):##&#22914;&#26524; &#24359;&#20026;&#36127;
f&#21152;&#24359;&#27491;&#30495;=f&#21152;&#24359;&#27491;&#30495;+PI2;
#print("f&#21152;&#24359;&#27491;&#30495;%d\n", f&#21152;&#24359;&#27491;&#30495;,"&#35282;%d\n",degrees(f&#21152;&#24359;&#27491;&#30495;) , "f&#21152;&#24359;&#27491;%d\n", f&#21152;&#24359;&#27491;,"&#35282;%d\n",degrees(f&#21152;&#24359;&#27491;) )
return f&#21152;&#24359;&#27491;&#30495;;


####################
def &#916;&#916;&#21644;&#32473;f2&#19977;(f2&#19968;, f2&#20108;, f2&#19977;): f2&#19977;[0]=f2&#19968;[0]+f2&#20108;[0];f2&#19977;[1]=f2&#19968;[1]+f2&#20108;[1];
def &#916;&#916;&#24046;&#32473;f2&#19977;(f2&#19968;, f2&#20108;, f2&#19977;):f2&#19977;[0]=f2&#19968;[0]-f2&#20108;[0];f2&#19977;[1]=f2&#19968;[1]-f2&#20108;[1];
def &#916;&#916;&#24046;&#32473;f3&#19977;(f3&#19968;, f3&#20108;, f3&#19977;):f3&#19977;[0]=f3&#19968;[0]-f3&#20108;[0];f3&#19977;[1]=f3&#19968;[1]-f3&#20108;[1];f3&#19977;[2]=f3&#19968;[2]-f3&#20108;[2];
def &#916;&#916;&#31215;&#32473;f2&#19977;(f2&#19968;, f, f2&#19977;): f2&#19977;[0]=f2&#19968;[0]*f;f2&#19977;[1]=f2&#19968;[1]*f;
def &#916;&#916;&#22797;f2&#19968;&#21046;f2&#20108;(f2&#19968;, f2&#20108;): f2&#20108;[0]=f2&#19968;[0];f2&#20108;[1]=f2&#19968;[1];

##--------&#25968;&#23398;&#20844;&#24335;--------------------------------------------------------------------------
def f&#916;&#916;&#27714;&#20004;&#28857;UV&#38271;(f2&#19968;, f2&#20108;):
f2&#19977;=[None,None];f2&#19977;[0]=f2&#19968;[0]-f2&#20108;[0];f2&#19977;[1]=f2&#19968;[1]-f2&#20108;[1];
fUV&#36317;&#31163;=sqrt(pow(f2&#19977;[0],2)+pow(f2&#19977;[1],2));
return fUV&#36317;&#31163;;


def f&#916;&#916;&#27714;&#20004;&#28857;&#23545;&#35282;&#32447;&#38271;(f3&#19968;, f3&#20108;):
f3&#38271;=[None,None,None];f3&#38271;[0]=f3&#19968;[0]-f3&#20108;[0];f3&#38271;[1]=f3&#19968;[1]-f3&#20108;[1];f3&#38271;[2]=f3&#19968;[2]-f3&#20108;[2];
f&#23545;&#35282;&#32447;&#38271;=sqrt(pow(f3&#38271;[0],2)+pow(f3&#38271;[1],2)+pow(f3&#38271;[2],2));
return f&#23545;&#35282;&#32447;&#38271;;

# operator + ( &f2&#19968;, &f2&#20108;)return f2&#19977;[f2&#19968;[0]+f2&#20108;[0]], f2&#19977;[f2&#19968;[1]+f2&#20108;[1]]
####################
def &#916;&#916;&#30693;&#24359;&#27714;&#28857;&#32473;f2&#22235;&#30495;(f&#21152;&#24359;&#27491;&#30495;, f&#33550;, f2&#22278;&#24515;, f2&#28857;&#30495;):
fX=f&#33550;*cos(f&#21152;&#24359;&#27491;&#30495;);fY=f&#33550;*sin(f&#21152;&#24359;&#27491;&#30495;);
f2&#28857;&#20551;=[fX,fY];
#print("fX", fX,"fY", fY )
if (fX and fY):
#f2&#28857;&#20551;[2]=fX,fY;
&#916;&#916;&#21644;&#32473;f2&#19977;(f2&#28857;&#20551;,f2&#22278;&#24515;,f2&#28857;&#30495;);
#print("f2&#20837;&#28857;&#20551;%d\n", f2&#28857;&#20551;, "f2&#20837;&#28857;&#30495;%d\n",f2&#28857;&#30495;);
#else
#print("&#27714;&#19981;&#21040;&#28857;f2&#30495;");


def b&#916;&#916;&#26816;&#27979;&#24635;&#24359;&#26159;&#21542;&#39034;&#26102;&#38024; (f2&#22836;, f2&#38388;, f2&#23614;, f2&#22278;&#24515; ):
f2&#28187;=[None,None];
&#916;&#916;&#24046;&#32473;f2&#19977;(f2&#22836;,f2&#22278;&#24515;,f2&#28187;);f&#22836;&#24359;&#27491;=atan3(f2&#28187;[0],f2&#28187;[1]);
&#916;&#916;&#24046;&#32473;f2&#19977;(f2&#38388;,f2&#22278;&#24515;,f2&#28187;);f&#20013;&#24359;&#27491;=atan3(f2&#28187;[0],f2&#28187;[1]);
&#916;&#916;&#24046;&#32473;f2&#19977;(f2&#23614;,f2&#22278;&#24515;,f2&#28187;);f&#23614;&#24359;&#27491;=atan3(f2&#28187;[0],f2&#28187;[1]);
if ((f&#22836;&#24359;&#27491;<f&#20013;&#24359;&#27491; and f&#20013;&#24359;&#27491;<f&#23614;&#24359;&#27491;)or( f&#20013;&#24359;&#27491;<f&#23614;&#24359;&#27491; and f&#23614;&#24359;&#27491;<f&#22836;&#24359;&#27491; )or( f&#23614;&#24359;&#27491;<f&#22836;&#24359;&#27491; and f&#22836;&#24359;&#27491; <f&#20013;&#24359;&#27491; )):
b&#39034;=True ;
else:
b&#39034;=False ;
return b&#39034;;

##---------------------------------------------------------------------------------------
def &#916;&#916;UV&#24179;&#28369;&#32473;Lf2&#20843; (ii&#36873;&#28857;&#24635;&#25968;, f&#36317;&#31163;&#21442;&#25968; , Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;, Lcf3&#32593;&#28857;Co&#24207;, Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;, Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;, Lf2uv&#36873;&#24207;, Lcf2UV&#24212;&#30495;&#24207;):
f3&#24046;=[None,None,None];f2&#21521;UV&#27573;&#21069;&#20943;&#21518;&#23454;=[None,None];f2UV&#21521;&#20559;&#31227;&#20551;=[None,None];f2UV&#24212;&#30495;=[None,None];
f&#24179;&#22343;uv&#38271;=0;f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;=0;f&#27604;&#20363;=0;f&#32047;&#20551;&#38271;&#27491;=0;f&#32047;&#27492;uv&#38271;&#27491;&#20551;=0;f&#27492;&#28857;uv&#23454;&#20943;&#24212;&#38271;&#27491;=0; f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;=0;f&#32047;uv&#36317;&#31163;&#27491;=0;
global f&#24179;&#34892;&#32593;&#24635;&#38271;G;
# *Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;=Lf&#20020;&#26102;&#19968;,*Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;=Lf&#20020;&#26102;&#20108;;##&#24517;&#39035;&#35201;&#36825;&#26679;&#25165;&#19981;&#20250;&#20986;&#38169;
##----&#27714;uv&#24179;&#22343;&#38271;---------------------------------------------------------------
for i in range( ii&#36873;&#28857;&#24635;&#25968;):##
if(i==0):continue;
i&#27492;&#24207;=i;i&#21069;&#24207;=i-1;
f&#36825;&#27573;uv&#36317;&#31163;&#27491;=f&#916;&#916;&#27714;&#20004;&#28857;UV&#38271;(Lf2uv&#36873;&#24207;[i&#27492;&#24207;],Lf2uv&#36873;&#24207;[i&#21069;&#24207;]);
Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;[i]=f&#36825;&#27573;uv&#36317;&#31163;&#27491;;###print("Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;=%f\n",Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;[i]);
f&#32047;uv&#36317;&#31163;&#27491;+=f&#36825;&#27573;uv&#36317;&#31163;&#27491;;
Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[i]=f&#32047;uv&#36317;&#31163;&#27491;;####print("f&#32047;&#27492;&#27573;uv&#38271;&#27491;&#23454;=%f\n",Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[i]);

&#916;&#916;&#24046;&#32473;f3&#19977;(Lcf3&#32593;&#28857;Co&#24207;[i&#27492;&#24207;],Lcf3&#32593;&#28857;Co&#24207;[i&#21069;&#24207;],f3&#24046;);
f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;=sqrt( pow(f3&#24046;[0],2)+pow(f3&#24046;[1],2)+pow(f3&#24046;[2],2) );
#print("f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;%f\n",f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;);
f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;+=f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;;
Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[i]=f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;;

#----------------------------------------------------------------------------
#print("ii&#36873;&#28857;&#24635;&#25968;DLL22==%d\n",ii&#36873;&#28857;&#24635;&#25968;);
f&#24179;&#22343;uv&#38271;=Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[ii&#36873;&#28857;&#24635;&#25968;-1]/(ii&#36873;&#28857;&#24635;&#25968;-1);
f&#24635;UV&#27604;&#24179;&#34892;&#32593;=Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[ii&#36873;&#28857;&#24635;&#25968;-1]/Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[ii&#36873;&#28857;&#24635;&#25968;-1];##&#24635;uv&#38271;:&#24635;&#32593;&#38271;
f&#24179;&#34892;&#32593;&#24635;&#38271;G=Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[ii&#36873;&#28857;&#24635;&#25968;-1];

#print("uv&#24635;&#38271;%f &#32593;&#24635;&#38271;%f\n",Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[ii&#36873;&#28857;&#24635;&#25968;-1],Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[ii&#36873;&#28857;&#24635;&#25968;-1]);
#print("f&#24179;&#22343;uv&#38271;%f\n",f&#24179;&#22343;uv&#38271;);
#print("f&#24635;UV&#27604;&#24179;&#34892;&#32593;%f\n",f&#24635;UV&#27604;&#24179;&#34892;&#32593;);##&#23545;

#print(" Lf&#27599;&#27573;&#32047;&#38271;&#27491;&#36127;&#19968;=%f\n", Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[-1] );
#print(" Lf&#27599;&#27573;&#32047;&#38271;&#27491;&#26368;&#21518;=%f\n", Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[ii&#36873;&#28857;&#24635;&#25968;-1] );
#print("f&#24179;&#22343;uv&#38271;=%f\n\n",f&#24179;&#22343;uv&#38271; );
#print("Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[-1]%d ii&#36873;&#28857;&#24635;&#25968;%d\n",Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[-1],ii&#36873;&#28857;&#24635;&#25968;-1);
#----------------------------------------------------------------------------
for i&#24207;&#30495; in range( ii&#36873;&#28857;&#24635;&#25968;):
if(i&#24207;&#30495;==0 or i&#24207;&#30495;==ii&#36873;&#28857;&#24635;&#25968;-1 ):
#memcpy(Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;],Lf2uv&#36873;&#24207;[i&#24207;&#30495;],sizeof(Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;]));##&#36825;&#20010;&#35201;&#27880;&#24847;&#19981;&#33021;sizeof(Lcf2UV&#24212;&#30495;&#24207;) &#25110;sizeof(Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;])*2
Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;]=Lf2uv&#36873;&#24207;[i&#24207;&#30495;];
continue;

i&#21069;&#24207;&#30495;=i&#24207;&#30495;-1;
#if (i&#21069;&#24207;&#30495;<0)i&#21069;&#24207;&#30495;=0;f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;=0;
#else
#print("fff",Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;);
f&#27492;&#27573;uv&#24212;&#38271;=(Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[i&#24207;&#30495;]-Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[i&#21069;&#24207;&#30495;]) *f&#24635;UV&#27604;&#24179;&#34892;&#32593;;
f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;+=( f&#24179;&#22343;uv&#38271;+( f&#27492;&#27573;uv&#24212;&#38271;-f&#24179;&#22343;uv&#38271; ) *f&#36317;&#31163;&#21442;&#25968; );
#print("f&#36317;&#31163;&#21442;&#25968;%f\n",f&#36317;&#31163;&#21442;&#25968;);
#print("Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;&#21069;%f Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;&#27492;%f\n",Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[i&#21069;&#24207;&#30495;],Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[i&#24207;&#30495;]);
#print("f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;%f &#24207;&#30495;%d\n",f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;,i&#24207;&#30495;);
#print("------------------\n");

for i&#24207;&#24212; in range( ii&#36873;&#28857;&#24635;&#25968;):
if(i&#24207;&#24212;==0):continue;
i&#21069;&#24207;&#20551;=i&#24207;&#24212;-1;
#if (i&#21069;&#24207;&#20551;<0)i&#21069;&#24207;&#20551;=0;
#print("f&#32047;&#27492;uv&#38271;&#27491;&#20551;%f\n",f&#32047;&#27492;uv&#38271;&#27491;&#20551;);##&#27491;&#30830;
f&#27492;&#28857;uv&#23454;&#20943;&#24212;&#38271;&#27491;=Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[i&#24207;&#24212;]-f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;;
#print("Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[i&#24207;&#24212;]=%f f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;=%f\n",Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[i&#24207;&#24212;],f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;);

if(f&#27492;&#28857;uv&#23454;&#20943;&#24212;&#38271;&#27491;>=0):

f&#27604;&#20363;=f&#27492;&#28857;uv&#23454;&#20943;&#24212;&#38271;&#27491;/Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;[i&#24207;&#24212;];##&#27604;&#20363; &#20915;&#23450;uv&#24212;&#20559;&#31227;&#37327;
#print("f&#27492;&#28857;uv&#23454;&#20943;&#24212;&#38271;&#27491;=%f Lf&#27599;&#27573;&#38271;&#27491;i&#24207;&#20551;=%f\n",f&#27492;&#28857;uv&#23454;&#20943;&#24212;&#38271;&#27491;,Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;[i&#24207;&#24212;]);
#print("f&#27604;&#20363;%f\n",f&#27604;&#20363;);
&#916;&#916;&#24046;&#32473;f2&#19977;(Lf2uv&#36873;&#24207;[i&#21069;&#24207;&#20551;],Lf2uv&#36873;&#24207;[i&#24207;&#24212;],f2&#21521;UV&#27573;&#21069;&#20943;&#21518;&#23454;);&#916;&#916;&#31215;&#32473;f2&#19977;(f2&#21521;UV&#27573;&#21069;&#20943;&#21518;&#23454;,f&#27604;&#20363;,f2UV&#21521;&#20559;&#31227;&#20551;);
#print("Lf2uv&#36873;&#24207;[i&#21069;&#24207;&#20551;]%f %f\n",Lf2uv&#36873;&#24207;[i&#21069;&#24207;&#20551;][0],Lf2uv&#36873;&#24207;[i&#21069;&#24207;&#20551;][1]);###print("Lf2uv&#36873;&#24207;[i&#24207;&#24212;]%f %f\n",Lf2uv&#36873;&#24207;[i&#24207;&#24212;][0],Lf2uv&#36873;&#24207;[i&#24207;&#24212;][1]);
&#916;&#916;&#21644;&#32473;f2&#19977;(Lf2uv&#36873;&#24207;[i&#24207;&#24212;],f2UV&#21521;&#20559;&#31227;&#20551;,Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;]);##&#916;&#916;&#22797;f2&#19968;&#21046;f2&#20108;(f2UV&#24212;&#30495;,Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;]);
#print("f2UV&#21521;&#20559;&#31227;&#20551;%f %f\n",f2UV&#21521;&#20559;&#31227;&#20551;[0],f2UV&#21521;&#20559;&#31227;&#20551;[1]);
#print("Lcf2UV&#24212;&#30495;&#24207;%f %f i&#24207;&#30495; %d i&#24207;&#24212; %d\n",Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;][0],Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;][1],i&#24207;&#30495;,i&#24207;&#24212;);
break;



##---------------------------------------------------------------------------------------
def &#916;&#916;&#25289;&#30452;UV&#32473;Lf2&#22235;(ii&#36873;&#28857;&#24635;&#25968;, f2UV&#22836;, f2UV&#23614;, Lcf2UV&#24212;&#30495;&#24207;):
f2UV&#21521;&#20559;&#31227;&#20551;=[None,None];f2UV&#24046;=[None,None];f2UV&#31215;=[None,None];
&#916;&#916;&#24046;&#32473;f2&#19977;(f2UV&#23614;,f2UV&#22836;,f2UV&#24046;);##&#27714;&#20174;&#38646;&#28857;&#24320;&#22987;&#30340;&#32447;&#24635;&#38271;&#30690;&#37327;
f&#24635;&#38271;=f&#916;&#916;&#27714;&#20004;&#28857;UV&#38271;(f2UV&#22836;,f2UV&#23614;); f&#24179;&#22343;uv&#38271;=f&#24635;&#38271;/(ii&#36873;&#28857;&#24635;&#25968;-1);
f&#24179;&#22343;&#38271;&#38500;&#20197;&#24635;&#38271;=f&#24179;&#22343;uv&#38271;/f&#24635;&#38271;;
for i in range(ii&#36873;&#28857;&#24635;&#25968;):
&#916;&#916;&#31215;&#32473;f2&#19977;(f2UV&#24046;,f&#24179;&#22343;&#38271;&#38500;&#20197;&#24635;&#38271;*i,f2UV&#31215;);##&#20174;&#38646;&#28857;&#24320;&#22987;&#30340;&#24403;&#21069;&#28857;&#32447;&#30690;&#37327;
&#916;&#916;&#21644;&#32473;f2&#19977;(f2UV&#31215;,f2UV&#22836;,Lcf2UV&#24212;&#30495;&#24207;[i]);##&#31227;&#21160;&#21040;uv&#22836;&#30340;&#24403;&#21069;&#28857;&#32447;&#30690;&#37327;

##&#916;&#916;&#25289;&#30452;UV&#32473;Lf2&#22235;


def f2&#916;&#916;&#27714;f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;(ii&#36873;&#28857;&#24635;&#25968;,i&#24635;&#23454;&#38469;&#23618;&#25968;,Lcf2UV&#24212;&#30495;&#24207;, Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;, cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;):
f2&#37051;&#36793;&#30690;&#37327;=[None,None];f2&#26012;&#36793;&#30690;&#37327;=[None,None];f2&#23545;&#36793;&#30690;&#37327;=[None,None];
global f&#24179;&#34892;&#32593;&#24635;&#38271;G;

&#916;&#916;&#24046;&#32473;f2&#19977;(Lcf2UV&#24212;&#30495;&#24207;[ii&#36873;&#28857;&#24635;&#25968;-1],Lcf2UV&#24212;&#30495;&#24207;[0],f2&#37051;&#36793;&#30690;&#37327;);#&#21363;&#31532;&#19968;&#34892;&#30340;&#24635;&#38271;&#30690;&#37327;
&#916;&#916;&#24046;&#32473;f2&#19977;(cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;,Lcf2UV&#24212;&#30495;&#24207;[0],f2&#26012;&#36793;&#30690;&#37327;);
&#916;&#916;&#27714;&#35282;&#23545;&#36793;&#30690;&#37327;(f2&#37051;&#36793;&#30690;&#37327;,f2&#26012;&#36793;&#30690;&#37327;,f2&#23545;&#36793;&#30690;&#37327;);
f2&#22402;&#30452;&#30456;&#20132;&#20301;&#32622;=[None,None];&#916;&#916;&#21644;&#32473;f2&#19977;(Lcf2UV&#24212;&#30495;&#24207;[0],f2&#23545;&#36793;&#30690;&#37327;,f2&#22402;&#30452;&#30456;&#20132;&#20301;&#32622;);#&#25226;f2&#23545;&#36793;&#30690;&#37327; &#31227;&#21040;&#23454;&#38469;&#20301;&#32622;
f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;=[None,None];&#916;&#916;&#24046;&#32473;f2&#19977;(cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;,f2&#22402;&#30452;&#30456;&#20132;&#20301;&#32622;,f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;);

#----&#27714;&#34394;&#25311;&#24212;&#20559;&#31227;&#30690;&#37327;----------------------------------------------------------------------
if(bpy.context.window_manager.bpXYwm and f&#24179;&#34892;&#32593;&#24635;&#38271;G):
f&#24635;&#20559;&#31227;&#30690;&#37327;&#38271;=f&#916;&#916;&#27714;&#20004;&#28857;UV&#38271;([0,0], f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;);
f&#22402;&#30452;&#32593;&#24635;&#38271;=Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[i&#24635;&#23454;&#38469;&#23618;&#25968;-2];
f&#22402;&#30452;&#32593;&#27604;&#24179;&#34892;&#32593;=f&#22402;&#30452;&#32593;&#24635;&#38271;/f&#24179;&#34892;&#32593;&#24635;&#38271;G;f&#24179;&#34892;UV&#24635;&#38271;=f&#916;&#916;&#27714;&#20004;&#28857;UV&#38271;([0,0], f2&#37051;&#36793;&#30690;&#37327;);
f&#34394;&#25311;&#20559;&#31227;&#27604;&#23454;&#24212;&#20559;&#31227;=(f&#24179;&#34892;UV&#24635;&#38271;*f&#22402;&#30452;&#32593;&#27604;&#24179;&#34892;&#32593;)/f&#24635;&#20559;&#31227;&#30690;&#37327;&#38271;;
#print("TOTAL UV==",f&#24635;&#20559;&#31227;&#30690;&#37327;&#38271;,f&#24179;&#34892;UV&#24635;&#38271;);
f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;=[f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;[0]*f&#34394;&#25311;&#20559;&#31227;&#27604;&#23454;&#24212;&#20559;&#31227;,f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;[1]*f&#34394;&#25311;&#20559;&#31227;&#27604;&#23454;&#24212;&#20559;&#31227;];
#print("TOTAL OFFSET==",f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;);

return f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;;

def &#916;&#916;&#20256;&#25773;&#27599;&#34892;&#24179;&#34892;&#28857;(ii&#36873;&#28857;&#24635;&#25968;,i&#24635;&#23454;&#38469;&#23618;&#25968;, ii&#24403;&#21069;&#23618;&#25968;,f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;, Lcf2UV&#24212;&#30495;&#24207;, b&#26159;&#21542;&#22402;&#30452;,Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491; , Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;):

f2&#27599;&#20010;&#32452;&#20559;&#31227;&#30690;&#37327;=[0.0,0.0];
if(b&#26159;&#21542;&#22402;&#30452;):
#print("Lay1 LayAll",ii&#24403;&#21069;&#23618;&#25968;,i&#24635;&#23454;&#38469;&#23618;&#25968;,Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;);
f&#27492;&#27573;&#27604;&#20363;=Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[ii&#24403;&#21069;&#23618;&#25968;-1]/Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[i&#24635;&#23454;&#38469;&#23618;&#25968;-2];#
f2&#27599;&#20010;&#32452;&#20559;&#31227;&#30690;&#37327;[0]=f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;[0]*f&#27492;&#27573;&#27604;&#20363;;f2&#27599;&#20010;&#32452;&#20559;&#31227;&#30690;&#37327;[1]=f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;[1]*f&#27492;&#27573;&#27604;&#20363;;
else:
f2&#27599;&#20010;&#32452;&#20559;&#31227;&#30690;&#37327;[0]=f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;[0]/(i&#24635;&#23454;&#38469;&#23618;&#25968;-1)*ii&#24403;&#21069;&#23618;&#25968;;f2&#27599;&#20010;&#32452;&#20559;&#31227;&#30690;&#37327;[1]=f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;[1]/(i&#24635;&#23454;&#38469;&#23618;&#25968;-1)*ii&#24403;&#21069;&#23618;&#25968;;

for i&#32452; in range(ii&#36873;&#28857;&#24635;&#25968;):
&#916;&#916;&#21644;&#32473;f2&#19977;(Lcf2UV&#24212;&#30495;&#24207;[i&#32452;],f2&#27599;&#20010;&#32452;&#20559;&#31227;&#30690;&#37327;,Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;[i&#32452;]);


##---------------------------------------------------------------------------------------
def &#916;&#916;&#33258;&#21160;&#23545;&#40784;UV&#32473;Lf2&#22235;(ii&#36873;&#28857;&#24635;&#25968;, f2UV&#22836;, f2UV&#23614;, Lcf2UV&#24212;&#30495;&#24207;) :
f2UV&#21521;&#20559;&#31227;&#20551;=[None,None];f2UV&#24046;=[None,None];f2UV&#31215;=[None,None];f&#24635;&#38271;=0.00000001;
&#916;&#916;&#24046;&#32473;f2&#19977;(f2UV&#23614;,f2UV&#22836;,f2UV&#24046;);#&#27714;&#20174;&#38646;&#28857;&#24320;&#22987;&#30340;&#32447;&#24635;&#38271;&#30690;&#37327;
#print("f2UV&#22836;&#21069; %f %f\n",f2UV&#22836;[0],f2UV&#22836;[1]);
if(f2UV&#24046;[0]==0):
f2UV&#24046;[0]=0.0001;
fAtan=(f2UV&#24046;[1]/f2UV&#24046;[0]);
#print("f2UV&#24046;&#21069;%f %f ",f2UV&#24046;[0],f2UV&#24046;[1]);

if(1>fAtan and fAtan >=-1):##&#22312;&#8592;&#8594;
f&#24635;&#38271;=abs(f2UV&#24046;[0]);f2UV&#22836;[1]+=(f2UV&#24046;[1]/2);f2UV&#24046;[1]=0;##&#24402;&#38646;UVx &#25226;uv&#22836;&#31227;&#21160;&#22836;&#23614;&#20004;&#28857;&#36724;&#30340;&#20013;&#38388;#print("&#22312;&#8592;&#8594; ");
else:#&#22312;&#8593;&#8595;
f&#24635;&#38271;=abs(f2UV&#24046;[1]);f2UV&#22836;[0]+=(f2UV&#24046;[0]/2);f2UV&#24046;[0]=0;##&#24402;&#38646;UVy#print("&#22312;&#8593;&#8595; ");

f&#24179;&#22343;uv&#38271;=f&#24635;&#38271;/(ii&#36873;&#28857;&#24635;&#25968;-1);
f&#24179;&#22343;&#38271;&#38500;&#20197;&#24635;&#38271;=f&#24179;&#22343;uv&#38271;/f&#24635;&#38271;;####print("f&#24179;&#22343;&#38271;&#38500;&#20197;&#24635;&#38271; &#19982;&#24635;&#38271;%f %f\n",f&#24179;&#22343;&#38271;&#38500;&#20197;&#24635;&#38271;,f&#24635;&#38271;);
#print("f2UV&#24046;&#21518;%f %f\n",f2UV&#24046;[0],f2UV&#24046;[1]);
#print("f2UV&#22836;&#21518; %f %f\n",f2UV&#22836;[0],f2UV&#22836;[1]);

for i in range( ii&#36873;&#28857;&#24635;&#25968;):
&#916;&#916;&#31215;&#32473;f2&#19977;(f2UV&#24046;,f&#24179;&#22343;&#38271;&#38500;&#20197;&#24635;&#38271;*i,f2UV&#31215;);##&#20174;&#38646;&#28857;&#24320;&#22987;&#30340;&#24403;&#21069;&#28857;&#32447;&#30690;&#37327;
#print("f2UV&#31215;=%f %f\n",f2UV&#31215;[0],f2UV&#31215;[1]);
&#916;&#916;&#21644;&#32473;f2&#19977;(f2UV&#31215;,f2UV&#22836;,Lcf2UV&#24212;&#30495;&#24207;[i]);##&#31227;&#21160;&#21040;uv&#22836;&#30340;&#24403;&#21069;&#28857;&#32447;&#30690;&#37327;
#print("Lcf2UV&#24212;&#30495;&#24207;[i]=%f %f\n",Lcf2UV&#24212;&#30495;&#24207;[i][0],Lcf2UV&#24212;&#30495;&#24207;[i][1]);

#////////////////////////////////////////////////////////////////////////

#print ("DLL&#26159;-----------------",D.DLL)
def cf2&#916;&#916;&#36716;uv&#20026;cf2(uv):
return (c_float*2)(uv[0],uv[1]);


def LLcf3&#916;&#916;&#24471;&#36873;&#28857;&#32593;co&#21015;&#34920; (ii&#36873;&#28857;&#24635;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;):
#ii&#36873;&#28857;&#24635;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]);
ii&#23618;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;)-1;
Lcf3&#32593;&#28857;Co&#24207;=((c_float*3)*ii&#36873;&#28857;&#24635;&#25968;)();
#Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;=((c_float*3)*(ii&#23618;&#25968;+int(b&#36873;&#28857;&#20840;&#23553;&#38381;G)))();
Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;=[[None,None,None] for f in range(ii&#23618;&#25968;+int(b&#36873;&#28857;&#20840;&#23553;&#38381;G))];
id= bpy.context.active_object.data ; #:type: id
Lmuvl = id.uv_layers.active.data ;
Lmv=id.vertices;

for i&#24207; in range( ii&#36873;&#28857;&#24635;&#25968;):
#print("PointIndex==",L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][i&#24207;]);
mv=Lmv[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][i&#24207;][2]];
Lcf3&#32593;&#28857;Co&#24207;[i&#24207;]=(c_float*3)( mv.co.x, mv.co.y, mv.co.z );
for i&#23618; in range(ii&#23618;&#25968;):#&#25214;&#21040;&#27599;&#23618;&#31532;&#19968;&#20010;&#28857;&#20301;
#print("PointIndex==",L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[i&#23618;][0][2]);
mv=Lmv[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[i&#23618;][0][2]];
Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#23618;]=(c_float*3)( mv.co.x, mv.co.y, mv.co.z );
#print("CoX==",mv.co.x,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#23618;][0]);

global b&#36873;&#28857;&#20840;&#23553;&#38381;G;
if(b&#36873;&#28857;&#20840;&#23553;&#38381;G):
#print("ALL CLOSE",);
if(i&#28857;&#32034;&#22278;&#24515;G!=None):
mv=Lmv[i&#28857;&#32034;&#22278;&#24515;G];
Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[len(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;)-1]=( mv.co.x, mv.co.y, mv.co.z );
else:
v&#32047;&#21152;=Vector((0,0,0));
for i&#28857;&#32034;&#24207;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate( L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;-1]):#&#35745;&#31639;&#26368;&#21518;&#19968;&#23618;&#30340;&#28857;&#20301;&#24179;&#22343;&#20540;&#12290;
mv=Lmv[LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[2]];
v&#32047;&#21152;+=mv.co;
v&#24179;&#22343;=v&#32047;&#21152;/(ii&#36873;&#28857;&#24635;&#25968;);
Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[len(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;)-1]=( v&#24179;&#22343;[0], v&#24179;&#22343;[1], v&#24179;&#22343;[2] );
#print("LAYER==",ii&#23618;&#25968;,len(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;));
Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;.reverse();
return (Lcf3&#32593;&#28857;Co&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;);

#覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
def b&#916;&#916;&#25214;&#21040;&#36830;&#36143;&#32447;&#36873;(id,Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#25152;&#26377;&#19977;&#35282;&#38754;&#32452;,Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;,Ds&#20840;&#37096;&#29615;i&#32452;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;):
#---&#25226;&#30456;&#21516;&#20301;&#32622;&#29615;&#21152;&#20837;&#32452;--------------------------------------------------------------
i&#32452;&#25968;=0;Li&#24050;&#20837;&#32452;&#30340;&#29615;=[];LLi&#29615;f2UV&#20840;&#37096;=[];LLi&#29615;f2UV&#20840;&#37096;&#27604;&#36739;=[];
global b&#19977;&#35282;&#38754;G;
#---&#26597;&#25214;Di&#20840;&#37096;&#29615;i&#32452; ----------------------------------------
#&#20808;&#25214;&#20986;&#22235;&#20010;&#20849;&#38754;&#30340;&#32452;&#65292;&#28982;&#21518;&#20877;&#25226;&#23569;&#20110;&#22235;&#20010;&#20849;&#38754;&#30340;&#32452;&#26681;&#25454;uv&#20998;&#32452;
Di&#20840;&#37096;&#28857;&#32034;Li&#29615;={};
#---&#26816;&#27979;&#31532;&#19968;&#32452;&#26377;&#26080;&#19977;&#35282;&#38754;--------------------------------------------------------------------
if(Ds&#20840;&#37096;&#29615;i&#32452;=={}):
if(not bpy.context.window_manager.bp&#20256;&#25773;wm):
for i&#38754;&#32034;,mp&#20840;&#37096; in enumerate(id.polygons):
b&#32447;&#36873;=False;i&#36793;&#25968;=len(mp&#20840;&#37096;.loop_indices);
if(b&#19977;&#35282;&#38754;G):
break;
if(not b&#19977;&#35282;&#38754;G and i&#36793;&#25968;==3):
for i&#27493;3 in range(i&#36793;&#25968;): #&#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3&#65292;
i&#27493;3&#19979;&#27493; = (i&#27493;3+1) % i&#36793;&#25968;;
i&#28857;&#32034; = mp&#20840;&#37096;.vertices[i&#27493;3];#Vertex indices &#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3
i&#28857;&#32034;&#19979; = mp&#20840;&#37096;.vertices[i&#27493;3&#19979;&#27493;];
i&#29615;=mp&#20840;&#37096;.loop_indices[i&#27493;3];
i&#29615;&#19979;=mp&#20840;&#37096;.loop_indices[i&#27493;3&#19979;&#27493;];

b&#36873;muvl&#19968; = False;b&#36873;muvl&#20108;=False ;
if(bpy.context.scene.tool_settings.use_uv_select_sync== True):
b&#36873;muvl&#19968;= id.vertices[i&#28857;&#32034;].select;
b&#36873;muvl&#20108;= id.vertices[i&#28857;&#32034;&#19979;].select;
else:
b&#36873;muvl&#19968;= Lmuvl[i&#29615;].select; #mp&#20840;&#37096;.loop_indices[i&#27493;3] &#20026;MeshUVLoop&#30340;&#32034;&#24341;
b&#36873;muvl&#20108;= Lmuvl[i&#29615;&#19979;].select;

if (b&#36873;muvl&#19968; and b&#36873;muvl&#20108;):# &#22914;&#26524;&#19968;&#26465;&#32447;&#20004;&#28857;&#34987;&#36873;&#20013;
b&#19977;&#35282;&#38754;G=True;##print("TRIANGLE",);
break;

#----------------------------------------------------------------------------
for i&#38754;&#32034;,mp&#20840;&#37096; in enumerate(id.polygons):
b&#32447;&#36873;=False;i&#36793;&#25968;=len(mp&#20840;&#37096;.loop_indices);
for i&#27493;3 in range(i&#36793;&#25968;): #&#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3&#65292;
i&#27493;3&#19979;&#27493; = (i&#27493;3+1) % i&#36793;&#25968;;
i&#28857;&#32034; = mp&#20840;&#37096;.vertices[i&#27493;3];#Vertex indices &#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3
i&#28857;&#32034;&#19979; = mp&#20840;&#37096;.vertices[i&#27493;3&#19979;&#27493;];
i&#29615;=mp&#20840;&#37096;.loop_indices[i&#27493;3];
i&#29615;&#19979;=mp&#20840;&#37096;.loop_indices[i&#27493;3&#19979;&#27493;];

b&#36873;muvl&#19968; = False;b&#36873;muvl&#20108;=False ;
if(bpy.context.scene.tool_settings.use_uv_select_sync== True):
b&#36873;muvl&#19968;= id.vertices[i&#28857;&#32034;].select;
b&#36873;muvl&#20108;= id.vertices[i&#28857;&#32034;&#19979;].select;
else:
b&#36873;muvl&#19968;= Lmuvl[i&#29615;].select; #mp&#20840;&#37096;.loop_indices[i&#27493;3] &#20026;MeshUVLoop&#30340;&#32034;&#24341;
b&#36873;muvl&#20108;= Lmuvl[i&#29615;&#19979;].select;

if(bpy.context.window_manager.bp&#20256;&#25773;wm or b&#19977;&#35282;&#38754;G==True):
if(i&#28857;&#32034; not in Di&#20840;&#37096;&#28857;&#32034;Li&#29615;):
Di&#20840;&#37096;&#28857;&#32034;Li&#29615;[i&#28857;&#32034;]=[];
if(i&#29615; not in Di&#20840;&#37096;&#28857;&#32034;Li&#29615;[i&#28857;&#32034;]):
Di&#20840;&#37096;&#28857;&#32034;Li&#29615;[i&#28857;&#32034;].append(i&#29615;);#{i&#32452;:[i&#29615;,i&#29615;]}
elif(not bpy.context.window_manager.bp&#20256;&#25773;wm ):
if (b&#36873;muvl&#19968;):# &#22914;&#26524;&#26377;&#19968;&#28857;&#34987;&#36873;&#20013;
if(i&#28857;&#32034; not in Di&#20840;&#37096;&#28857;&#32034;Li&#29615;):
Di&#20840;&#37096;&#28857;&#32034;Li&#29615;[i&#28857;&#32034;]=[];
if(i&#29615; not in Di&#20840;&#37096;&#28857;&#32034;Li&#29615;[i&#28857;&#32034;]):
Di&#20840;&#37096;&#28857;&#32034;Li&#29615;[i&#28857;&#32034;].append(i&#29615;);#{i&#32452;:[i&#29615;,i&#29615;]}

#----------------------------------------------------------------------------
if(str(i&#29615;) not in Ds&#20840;&#37096;&#29615;i&#28857;&#32034;):
Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(i&#29615;)]=i&#28857;&#32034;;

#print("D All IP,R",Di&#20840;&#37096;&#28857;&#32034;Li&#29615;);

#---&#26681;&#25454;uv&#20301;&#32622;&#20998;&#32452;-----------------------------------------------------------------

for i&#28857;&#32034;,Li&#29615; in Di&#20840;&#37096;&#28857;&#32034;Li&#29615;.items():
LLi&#30456;&#21516;UV&#29615;=[];i&#21516;&#28857;&#19981;&#21516;uv&#32452;&#25968;=0;Li&#28857;&#20869;&#24050;&#32463;&#27604;&#36739;&#29615;=[];
for i&#27604;&#36739;&#27493;,i&#27604;&#36739;&#29615; in enumerate(Li&#29615;):#&#36845;&#20195;&#19968;&#20010;&#28857;&#20869;&#30340;&#22810;&#20010;&#29615;
if(i&#27604;&#36739;&#29615; in Li&#28857;&#20869;&#24050;&#32463;&#27604;&#36739;&#29615;):#&#22914;&#26524;&#24050;&#32463;&#25214;&#21040;&#19982;&#27604;&#36739;&#29615;&#30456;&#31561;&#30340;&#29615;&#65292;&#23601;&#19981;&#29992;&#20877;&#26032;&#24314;&#27604;&#36739;&#29615;
continue;
uv&#27604;&#36739;&#29615;=Lmuvl[i&#27604;&#36739;&#29615;].uv;LLi&#30456;&#21516;UV&#29615;.append([]);#&#26032;&#20960;&#20010;&#34920;&#31034;&#20849;&#26377;&#20960;&#32452;&#29615; &#19981;&#30456;&#31561;
LLi&#30456;&#21516;UV&#29615;[i&#21516;&#28857;&#19981;&#21516;uv&#32452;&#25968;].append(i&#27604;&#36739;&#29615;);
Li&#28857;&#20869;&#24050;&#32463;&#27604;&#36739;&#29615;.append(i&#27604;&#36739;&#29615;);
for i&#27493;,i&#29615; in enumerate(Li&#29615;):#&#36845;&#20195;&#19968;&#20010;&#28857;&#20869;&#30340;&#22810;&#20010;&#29615;
if(i&#27604;&#36739;&#27493;!=i&#27493; and uv&#27604;&#36739;&#29615;==Lmuvl[i&#29615;].uv and i&#29615; not in Li&#28857;&#20869;&#24050;&#32463;&#27604;&#36739;&#29615;):#&#25214;&#21040;&#19968;&#20010;&#19982;&#27604;&#36739;&#29615;&#30456;&#31561;&#30340;&#29615;
LLi&#30456;&#21516;UV&#29615;[i&#21516;&#28857;&#19981;&#21516;uv&#32452;&#25968;].append(i&#29615;);#[[i&#29615;,i&#29615;],[i&#29615;,i&#29615;]]
Li&#28857;&#20869;&#24050;&#32463;&#27604;&#36739;&#29615;.append(i&#29615;);
i&#21516;&#28857;&#19981;&#21516;uv&#32452;&#25968;+=1;

if(len(LLi&#30456;&#21516;UV&#29615;)<2 ):#&#22914;&#26524;&#27492;&#28857;&#24102;&#22235;&#20010;&#29615;
for i&#27493;,i&#29615; in enumerate(Li&#29615;):
Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#29615;)]=i&#32452;&#25968;;
i&#32452;&#25968;+=1;#&#22686;&#21152;&#19968;&#20010;&#32452;

else:#&#26377;&#22810;&#20010;&#19981;&#21516;uv&#30340;&#29615;
for i&#32452;,Li&#30456;&#21516;UV&#29615; in enumerate(LLi&#30456;&#21516;UV&#29615;):
for i&#30456;&#21516;UV&#29615; in Li&#30456;&#21516;UV&#29615;:
Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#30456;&#21516;UV&#29615;)]=i&#32452;&#25968;;
i&#32452;&#25968;+=1;#&#22686;&#21152;&#19968;&#20010;&#32452;
#---&#35760;&#24405;&#21040;&#32593;&#26684;&#23646;&#24615;-----------------------------------------------------------------
"""
id["UV_TOOL"]["fUV"]=Lmuvl[0].uv[0];
id["UV_TOOL"]["iPOLY"]=len(id.polygons);
id["UV_TOOL"]["ALL_R_G"]=Ds&#20840;&#37096;&#29615;i&#32452;;
id["UV_TOOL"]["ALL_R_IP"]=Ds&#20840;&#37096;&#29615;i&#28857;&#32034;;
"""

#print("D All R:G==",Ds&#20840;&#37096;&#29615;i&#32452;);
#return ;
#---&#22635;&#20805; ----------------------------------------
for i&#38754;&#32034;,mp&#20840;&#37096; in enumerate(id.polygons):
b&#32447;&#36873;=False;i&#36793;&#25968;=len(mp&#20840;&#37096;.loop_indices);
for i&#27493;3 in range(i&#36793;&#25968;): #&#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3&#65292;
#i&#27493;=None;i&#27493;=None;i&#27493;=None;i&#27493;=None;
i&#27493;3&#19979;&#27493; = (i&#27493;3+1) %i&#36793;&#25968;;#3%4=3 ; 4%3=1;4%4=0
i&#28857;&#32034; = mp&#20840;&#37096;.vertices[i&#27493;3];#Vertex indices &#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3
i&#28857;&#32034;&#19979; = mp&#20840;&#37096;.vertices[i&#27493;3&#19979;&#27493;];
i&#29615;=mp&#20840;&#37096;.loop_indices[i&#27493;3];
i&#29615;&#19979;=mp&#20840;&#37096;.loop_indices[i&#27493;3&#19979;&#27493;];
b&#36873;muvl&#19968; = False;b&#36873;muvl&#20108;=False ;
if(bpy.context.scene.tool_settings.use_uv_select_sync== True):
b&#36873;muvl&#19968;= id.vertices[i&#28857;&#32034;].select;
b&#36873;muvl&#20108;= id.vertices[i&#28857;&#32034;&#19979;].select;
else:
b&#36873;muvl&#19968;= Lmuvl[i&#29615;].select; #mp&#20840;&#37096;.loop_indices[i&#27493;3] &#20026;MeshUVLoop&#30340;&#32034;&#24341;
b&#36873;muvl&#20108;= Lmuvl[i&#29615;&#19979;].select;
#--------------------------------------------------------------------------
if(bpy.context.window_manager.bp&#20256;&#25773;wm or b&#19977;&#35282;&#38754;G==True):
i&#32452;&#36716;=Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#29615;)];
i&#32452;&#19979;&#36716;=Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#29615;&#19979;)];

if(i&#32452;&#36716; not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;):
Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;]=[[],[]];#{i&#32452;&#36716;:[[i&#38754;&#32034;,i&#38754;&#32034;],[i&#29615;,i&#29615;]],}
if(i&#38754;&#32034; not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][0]):
Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][0].append(i&#38754;&#32034;);
#print("G",i&#32452;&#36716;,"F",i&#38754;&#32034;);
if(mp&#20840;&#37096;.loop_indices[i&#27493;3] not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][1]):
Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][1].append(mp&#20840;&#37096;.loop_indices[i&#27493;3]);

else:
if (b&#36873;muvl&#19968;):# &#22914;&#26524;&#19968;&#28857;&#34987;&#36873;&#20013;
i&#32452;&#36716;=Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#29615;)];

if(i&#32452;&#36716; not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;):
Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;]=[[],[]];#{i&#32452;&#36716;:[[i&#38754;&#32034;,i&#38754;&#32034;],[i&#29615;,i&#29615;]],}
if(i&#38754;&#32034; not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][0]):
Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][0].append(i&#38754;&#32034;);
#if(i&#38754;&#32034; not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;&#36716;][0]):
#Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;&#36716;][0].append(i&#38754;&#32034;);
#print("G",i&#32452;&#36716;,"F",i&#38754;&#32034;);
if(i&#29615; not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][1]):
Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][1].append(i&#29615;);

if (b&#36873;muvl&#19968; and b&#36873;muvl&#20108;):# &#22914;&#26524;&#19968;&#26465;&#32447;&#20004;&#28857;&#34987;&#36873;&#20013;
i&#32452;&#19979;&#36716;=Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#29615;&#19979;)];
b&#32447;&#36873;=True;
if(i&#32452;&#36716; not in Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;):#{i&#32452;&#27492;:[i&#32452;&#24038;,i&#32452;&#21491;],}
Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#36716;]=[];
if(i&#32452;&#19979;&#36716; not in Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;):
Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#19979;&#36716;]=[];
if(i&#32452;&#36716; not in Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#19979;&#36716;]):
Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#19979;&#36716;].append(i&#32452;&#36716;);
if(i&#32452;&#19979;&#36716; not in Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#36716;]):
Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#36716;].append(i&#32452;&#19979;&#36716;);

#{ i&#32452;&#36716;:[ [i&#29615;,i&#29615;],[i&#38754;&#32034;,i&#38754;&#32034;] ],i&#32452;&#36716;:[[i&#29615;,i&#29615;],] }

#---&#25214;&#20986;&#31532;&#19968;&#23618;&#30340;&#21069;&#20004;&#20010;&#32452;-------------------------------------------------------------------
#print("D LR==",Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;);
if(len(Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;)<2):#&#30830;&#23450;&#26159;&#21542;&#36873;&#20102;&#20004;&#28857;&#20197;&#19978;
return False;
#print("D all G,LLiFiR==",Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;);
i&#32452;&#38543;&#26426;=None;b&#38381;&#21512;=True;L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;.append([]);#&#31532;&#19968;&#23618;
for i&#32452;&#27492;, Li&#32452;&#24038;&#21491; in Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;.items():#&#36820;&#22238; &#38190;&#19982;&#20540;&#30340;&#21015;&#34920;
i&#32452;&#38543;&#26426;=i&#32452;&#27492;;
if (len(Li&#32452;&#24038;&#21491;)==1):#&#27492;&#28857;&#27809;&#26377;&#24038;&#21491;&#20004;&#28857; {i&#32452;&#27492;:[i&#32452;&#24038;]}
Li&#21516;&#20301;&#32622;&#29615;1=Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#27492;][1];
#print("Li1=",Li&#21516;&#20301;&#32622;&#29615;1);
L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0].append([ Li&#21516;&#20301;&#32622;&#29615;1,i&#32452;&#27492;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(Li&#21516;&#20301;&#32622;&#29615;1[0])]]); #&#20854;&#20013;&#19968;&#20010;&#32456;&#32452; [[i&#32452;&#27492;,i&#38754;&#32034;]]
Li&#21516;&#20301;&#32622;&#29615;2=Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[Li&#32452;&#24038;&#21491;[0]][1];
L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0].append([ Li&#21516;&#20301;&#32622;&#29615;2 ,Li&#32452;&#24038;&#21491;[0], Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(Li&#21516;&#20301;&#32622;&#29615;2[0])]]);# [[i&#32452;&#27492;,i&#38754;&#32034;],[i&#32452;&#24038;,i&#38754;&#32034;]] &#28155;&#21152;&#31532;&#20108;&#20010;&#32452;
b&#38381;&#21512;=False;
break;

if(b&#38381;&#21512;==True):
Li&#21516;&#20301;&#32622;&#29615;1=Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#38543;&#26426;][1];Li&#32452;&#24038;&#21491;=Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#38543;&#26426;];
Li&#21516;&#20301;&#32622;&#29615;2=Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[Li&#32452;&#24038;&#21491;[0]][1];
L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0].append([ Li&#21516;&#20301;&#32622;&#29615;1,i&#32452;&#38543;&#26426;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(Li&#21516;&#20301;&#32622;&#29615;1[0]) ]]) #&#22836;&#19968;&#20010;&#28857;
L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0].append([ Li&#21516;&#20301;&#32622;&#29615;2 ,Li&#32452;&#24038;&#21491;[0], Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(Li&#21516;&#20301;&#32622;&#29615;2[0])]])#&#31532;&#20108;&#20010;&#28857;


#--------------------------------------------------------------------------
#print("0LayADD 2 RingGroup",len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]),L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]);
return True;
#print("DigroupLR==",Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;);
#print("DiAllGroup Face_Ring==",Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;);

#return (ii&#23618;&#25968;G,L&#23618;Di&#20840;&#37096;&#36873;&#28857;&#32034;Li&#29615;);


#----------------------------------------------------------------------------
def LLLi&#916;&#916;&#916;&#36873;&#20013;&#28857;&#25490;&#21015;():
bpy.ops.object.mode_set(mode='OBJECT');
id = bpy.context.active_object.data ;
if (not id.uv_layers.active):
return (None,None,None);
Lmuvl = id.uv_layers.active.data ;#UVLoopLayers.MeshUVLoopLayer.LMeshUVLoop
L&#23618;Di&#36873;&#28857;&#32034;&#27492;Li&#28857;&#32034;&#24038;&#21491;=[];L&#23618;Di&#20840;&#37096;&#36873;&#28857;&#32034;Li&#29615;=[];Li&#25152;&#26377;&#19977;&#35282;&#38754;&#32452;=[];
Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;={};Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;={};
L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;=[];#[[[i&#29615;,i&#29615;],i&#32452;&#36716;],[[i&#29615;,i&#29615;i,&#29615;,i&#29615;],i&#32452;&#36716;]]
Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;=[];Li&#29615;&#22278;&#24515;=[];
b&#38381;=None;b&#20840;&#38381;=None ;
global b&#36873;&#28857;&#20840;&#23553;&#38381;G;b&#36873;&#28857;&#20840;&#23553;&#38381;G=False;
global ii&#23618;&#25968;G;ii&#23618;&#25968;G=0;
global i&#32452;&#22278;&#24515;G;i&#32452;&#22278;&#24515;G=None;
global i&#28857;&#32034;&#22278;&#24515;G;i&#28857;&#32034;&#22278;&#24515;G=None;
global b&#19977;&#35282;&#38754;G;b&#19977;&#35282;&#38754;G=False;

Ds&#20840;&#37096;&#29615;i&#32452;={};
Ds&#20840;&#37096;&#29615;i&#28857;&#32034;={};
"""
if("UV_TOOL" not in id.keys()):
id["UV_TOOL"]={};
Ds&#20840;&#37096;&#29615;i&#32452;={};
Ds&#20840;&#37096;&#29615;i&#28857;&#32034;={};
print("NEW",);
else:
fUVx=Lmuvl[0].uv[0];
if(id["UV_TOOL"]["iPOLY"]==len(id.polygons) and (fUVx-0.01)<id["UV_TOOL"]["fUV"]<(fUVx+0.01)):
Ds&#20840;&#37096;&#29615;i&#32452;=id["UV_TOOL"]["ALL_R_G"];
Ds&#20840;&#37096;&#29615;i&#28857;&#32034;=id["UV_TOOL"]["ALL_R_IP"];
else:
Ds&#20840;&#37096;&#29615;i&#32452;={};
Ds&#20840;&#37096;&#29615;i&#28857;&#32034;={};
print("RENEW",);
"""
b&#26159;&#21542;&#25214;&#21040;=b&#916;&#916;&#25214;&#21040;&#36830;&#36143;&#32447;&#36873;(id,Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#25152;&#26377;&#19977;&#35282;&#38754;&#32452;,Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;,Ds&#20840;&#37096;&#29615;i&#32452;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;);
if(not b&#26159;&#21542;&#25214;&#21040;):
return (None,None,None);
#&#916;&#916;&#21028;&#26029;&#26159;&#21542;&#23553;&#38381;(ii&#23618;&#25968;G,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;,L&#23618;Di&#20840;&#37096;&#36873;&#28857;&#32034;Li&#29615;);
#return (Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#29615;&#22278;&#24515;);
#---&#25490;&#21015;&#31532;&#19968;&#23618;&#30340;&#32452;-L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]-----------------------------------------------
if (len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])>1):#&#22914;&#26524; &#36873;&#20102;&#20004;&#20010;&#32452;&#20197;&#19978;
i&#35745;&#25968; = len(Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;);
#print ("iCount",i&#35745;&#25968;)
b&#36830;&#32493; = True ;i&#31532;&#19968;&#20010;&#32452;=None;
while (b&#36830;&#32493;==True and 0 < i&#35745;&#25968;):
Li&#32452;&#24038;&#21491; = Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][1]];#&#21018;&#24320;&#22987;Li&#32452;&#24038;&#21491;&#26159;&#31532;&#20108;&#20010;&#28857;&#30340;&#32452;&#24038;&#21491;&#65292;&#21363;&#31532;&#19968;&#28857;&#19982;&#31532;&#19977;&#28857;
#print ("Li&#32452;&#24038;&#21491;",Li&#32452;&#24038;&#21491;)
#print("L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-1]", L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-1])
for i, i&#32452;&#24038;&#21491; in enumerate( Li&#32452;&#24038;&#21491;): #&#21018;&#24320;&#22987; i&#32452;&#24038;&#21491;&#26159;&#31532;&#19968;&#20010;&#28857; &#25110; &#31532;&#19977;&#28857;
if ( i&#32452;&#24038;&#21491; == L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-2][1]):#&#22914;&#26524; i&#32452;&#24038;&#21491; &#26159; &#27492;&#28857;&#30340;&#21069;&#19968;&#20010;&#28857;# &#21018;&#24320;&#22987;&#26159;&#31532;&#19968;&#20010;&#28857;
if(i&#35745;&#25968; == len(Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;)):
i&#31532;&#19968;&#20010;&#32452;=i&#32452;&#24038;&#21491;;
#print("FirstG==",i&#31532;&#19968;&#20010;&#32452;);
#print ("i&#32452;&#24038;&#21491; == L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-2]",i&#32452;&#24038;&#21491;, L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-2])

if(len(Li&#32452;&#24038;&#21491;)>1 and Li&#32452;&#24038;&#21491;[i-1]==i&#31532;&#19968;&#20010;&#32452; and i&#35745;&#25968;<len(Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;)):#&#23494;&#23553;&#22278; &#26368;&#21518;&#19968;&#32452;&#20026;&#31532;&#19968;&#32452;
#print("LastGroup",);
i&#32452;&#24038;&#21491; = Li&#32452;&#24038;&#21491;[i-1];
b&#36830;&#32493;= False;
break;

elif (len(Li&#32452;&#24038;&#21491;)>1): #&#22914;&#26524; &#36825;&#28857;&#36830;&#24102;&#20004;&#20010;&#28857;&#25110;&#20197;&#19978;# &#36830;&#32493;&#36873;&#36793;
#print ("1 < len(Li&#32452;&#24038;&#21491;)")
#else:
i&#32452;&#24038;&#21491;= Li&#32452;&#24038;&#21491;[i-1];#&#25226;&#27492;&#28857;&#21518;&#19968;&#20010;&#28857; &#20316;&#20026; i&#32452;&#24038;&#21491;#&#21018;&#24320;&#22987;&#26159;&#31532;&#19977;&#20010;&#28857;
#print ("Li&#32452;&#24038;&#21491;",Li&#32452;&#24038;&#21491;)
#print ("L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;=",L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;)
else:#&#27492;&#28857; &#36830;&#24102; &#19968;&#20010;&#28857;
i&#32452;&#24038;&#21491; = None;
b&#36830;&#32493;= False;
#print ("i&#32452;&#24038;&#21491; = None")
break;
i&#35745;&#25968; -= 1;
#----------------------------------------------------------------------------
if (i&#32452;&#24038;&#21491; !=None ):#&#22914;&#26524;&#28857;&#32034;&#20026;0 &#21487;&#33021;&#34987;&#35748;&#20026;False
Li&#21516;&#20301;&#32622;&#29615;=Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#24038;&#21491;][1];
L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0].append([ Li&#21516;&#20301;&#32622;&#29615; ,i&#32452;&#24038;&#21491;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(Li&#21516;&#20301;&#32622;&#29615;[0])]]);
#print ("Li&#32452;&#24038;&#21491;=",Li&#32452;&#24038;&#21491;,"Li&#28857;&#32034;&#20174;&#22836;&#21040;&#23614;&#36873;&#21069;=",L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,"i&#32452;&#22836;=",i&#32452;&#22836;)
#print ("i&#28857;&#32034;&#27604;&#36739;append",i&#32452;&#24038;&#21491;)
#b&#36830;&#32493;= True;

#print("01LayRingGroupIndex",len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]),L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]);
if(bpy.context.window_manager.bp&#20256;&#25773;wm):
&#916;&#916;&#25214;&#21040;&#24179;&#34892;&#32447;(id,Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;,Ds&#20840;&#37096;&#29615;i&#32452;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;);

if (L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][1]==L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][1]): #&#20840;&#23553;&#38381;
b&#36873;&#28857;&#20840;&#23553;&#38381;G=True;##print("ALL CLOSE 2",);
if(i&#32452;&#22278;&#24515;G):
Li&#29615;&#22278;&#24515;=Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#22278;&#24515;G][1];
i&#28857;&#32034;&#22278;&#24515;G=Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(Li&#29615;&#22278;&#24515;[0])];
#print("LiHartRing==",Li&#29615;&#22278;&#24515;,"iHart",i&#32452;&#22278;&#24515;G,ii&#23618;&#25968;G);
#print("ALLLayRingGroupIndex",len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]),L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
return (Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#29615;&#22278;&#24515;);

#覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
def &#916;&#916;&#25214;&#21040;&#24179;&#34892;&#32447;(id,Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;,Ds&#20840;&#37096;&#29615;i&#32452;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;):
b&#24179;&#34892;=True;b&#20004;&#20849;&#38754;=False;b&#26368;&#21518;&#19968;&#23618;=False;b&#26368;&#21518;&#19968;&#28857;=False;b&#27809;&#26377;&#25214;&#22278;&#24515;=False;Li&#19977;&#35282;&#38754;&#32452;=[];
global ii&#23618;&#25968;G;global i&#32452;&#22278;&#24515;G;
#----&#26681;&#25454;&#36825;&#23618;&#32452;&#25214;&#20986;&#19979;&#19968;&#23618;&#32452;-----------------------------------------------------------------
#print("LAYER------------",ii&#23618;&#25968;G);
if(len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])<1):#&#22914;&#26524;&#36873;&#28857;&#23569;&#20110;&#20004;&#28857;
return ;
for i&#24207;,Li&#21516;&#20301;&#32622;&#29615;_i&#32452;&#24207; in enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G]):#&#36845;&#20195;&#19979;&#19968;&#23618;&#30340;&#21508;&#20010;&#32452;
#print("GROUP",i&#24207;);
#if(i&#24207;==len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G])-1):#&#22914;&#26524;&#26159;&#26368;&#21518;&#19968;&#32452;
#continue;
#print("Order==",i&#24207;);
#---&#25214;&#21040;&#20849;&#38754;&#32034;------------------------------------------------------------
i&#32452;=Li&#21516;&#20301;&#32622;&#29615;_i&#32452;&#24207;[1];
if(i&#24207;==len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G])-1):#&#22914;&#26524;&#26159;&#26368;&#21518;&#19968;&#32452;
i&#32452;&#19979;=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G][i&#24207;-1][1];#&#25226;&#20498;&#25968;&#31532;&#20108;&#32452;&#20026;&#32452;&#19979;
#print("LastShareFace ,Layer ,Len,Gpre",Li&#20849;&#38754;&#32034;,ii&#23618;&#25968;G,len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G]),i&#32452;&#19979;);
if(b&#26368;&#21518;&#19968;&#23618;==True):
b&#26368;&#21518;&#19968;&#28857;=True;
#print("Is LastLay&Order",i&#24207;);

elif(not b&#26368;&#21518;&#19968;&#23618;):
i&#32452;&#19979;=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G][i&#24207;+1][1];

Li&#20849;&#38754;&#32034;=[i&#38754;&#32034; for i&#38754;&#32034; in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[ i&#32452; ][0] if ( i&#38754;&#32034; in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;][0] and i&#38754;&#32034; not in Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;)];#&#21069;&#21518;&#20004;&#32452;&#30340;&#20849;&#38754;&#32034;
if(ii&#23618;&#25968;G!=0 and( len(Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;][0])<3 and len(Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;][0])<3)):#&#26368;&#21518;&#19968;&#23618;&#26368;&#22823;&#20849;&#38754;&#32034;&#23569;&#20110;3
b&#26368;&#21518;&#19968;&#23618;=True;

#print("IS LastLayerZZZZZZZ",);
""""""
#print("G,Face ",i&#32452;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[ i&#32452; ][0] )
#print("G,FaceNext ",i&#32452;&#19979;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;][0])

#print("FaceRecorded ",Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;);
#print("ShareFace---",Li&#20849;&#38754;&#32034;);

#print("GROUP",L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G][i&#24207;][1]);
if(b&#26368;&#21518;&#19968;&#23618;==True and not b&#26368;&#21518;&#19968;&#28857;):#&#26368;&#21518;&#19968;&#23618;

i&#32452;&#19979;=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G][i&#24207;+1][1];
Li&#20849;&#38754;&#32034;=[i&#38754;&#32034; for i&#38754;&#32034; in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[ i&#32452; ][0] if ( i&#38754;&#32034; in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;][0] )];
if(not Li&#20849;&#38754;&#32034; or len(Li&#20849;&#38754;&#32034;)>1):
"""
if(not Li&#20849;&#38754;&#32034; ):
#print("NOT_SHARE_FACE2",);
else:
#print("SHARE_FACE >1",);
"""
b&#20004;&#20849;&#38754;=True ;b&#24179;&#34892;=False ;
""""""
#print("G,FaceE ",i&#32452;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[ i&#32452; ][0] )
#print("G,FaceNextE ",i&#32452;&#19979;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;][0])
#print("ShareFaceE---",Li&#20849;&#38754;&#32034;);

if(not Li&#20849;&#38754;&#32034; or len(Li&#20849;&#38754;&#32034;)>1):
""""""
if(not Li&#20849;&#38754;&#32034; ):
pass;
#print("NOT_SHARE_FACE",);
else:
pass;
#print("SHARE_FACE >1",);
#print("NO BALLANCE",);

b&#20004;&#20849;&#38754;=True ;b&#24179;&#34892;=False ;break;
#----------------------------------------------------------------------------
try:
L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G+1];
except:
L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;.append([]);#&#22686;&#21152;&#19968;&#23618;
if(Li&#20849;&#38754;&#32034;[0] not in Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;):
Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;.append(Li&#20849;&#38754;&#32034;[0]);

mp&#20004;&#32452;&#20849;&#38754;=id.polygons[Li&#20849;&#38754;&#32034;[0]];
B=False;
if(len(mp&#20004;&#32452;&#20849;&#38754;.loop_indices)!=4 and len(mp&#20004;&#32452;&#20849;&#38754;.loop_indices)==3):
for i&#27493;3,i&#29615; in enumerate(mp&#20004;&#32452;&#20849;&#38754;.loop_indices):
Li&#19977;&#35282;&#38754;&#32452;.append(int(Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#29615;)]));
#print("NOT QUAT",);#&#24403;&#36935;&#21040;&#19977;&#35282;&#38754;&#26102; &#26368;&#21518;&#19968;&#23618;&#20026;&#31354;[]
b&#24179;&#34892;=False;break;

for i&#27493;3 in range(len(mp&#20004;&#32452;&#20849;&#38754;.loop_indices)):#&#25214;&#21040;&#24182;&#25490;&#21015;&#19979;&#19968;&#23618;&#32452;

i&#27493;3&#19979;&#27493; = (i&#27493;3+1) % len(mp&#20004;&#32452;&#20849;&#38754;.loop_indices);#3%4=3 ; 4%3=1;4%4=0
i&#28857;&#32034; = mp&#20004;&#32452;&#20849;&#38754;.vertices[i&#27493;3];#Vertex indices &#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3
i&#28857;&#32034;&#19979; = mp&#20004;&#32452;&#20849;&#38754;.vertices[i&#27493;3&#19979;&#27493;]
i&#32452;&#36716;=int(Ds&#20840;&#37096;&#29615;i&#32452;[str(mp&#20004;&#32452;&#20849;&#38754;.loop_indices[i&#27493;3])]);
i&#32452;&#19979;&#36716;=int(Ds&#20840;&#37096;&#29615;i&#32452;[str(mp&#20004;&#32452;&#20849;&#38754;.loop_indices[i&#27493;3&#19979;&#27493;])]);
""""""
#-----&#22914;&#26524;&#26159;&#26368;&#21518;&#31532;&#19968;&#32452;------------------------------------------------------------
if(i&#24207;==len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G])-1):
#print("While Last Group,GroupNext==",i&#32452;,i&#32452;&#19979;);
if(i&#32452;==i&#32452;&#36716; and i&#32452;&#19979;!=i&#32452;&#19979;&#36716;):#&#39034;&#8594;
#print("exeLast",);
L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G+1].append([Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;&#36716;][1],i&#32452;&#19979;&#36716;,i&#28857;&#32034;&#19979;]);B=True;break;#
elif(i&#32452;==i&#32452;&#19979;&#36716; and i&#32452;&#19979;!=i&#32452;&#36716;):#&#36870;&#8592;
#print("exeLast",);
L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G+1].append([Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][1],i&#32452;&#36716;,i&#28857;&#32034;]);B=True; break;#

#----&#27491;&#24120;&#30340;&#32452;-------------------------------------------------------------
if(i&#32452;==i&#32452;&#36716; and i&#32452;&#19979;!=i&#32452;&#19979;&#36716;):#&#39034;&#8594;
L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G+1].append([Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;&#36716;][1],i&#32452;&#19979;&#36716;,i&#28857;&#32034;&#19979;]);B=True;break;
elif(i&#32452;==i&#32452;&#19979;&#36716; and i&#32452;&#19979;!=i&#32452;&#36716;):#&#36870;&#8592;
L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G+1].append([Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][1],i&#32452;&#36716;,i&#28857;&#32034;]);B=True;break;


#if(not B):
#print("NO NO NO NO,Order==,",i&#24207;);
#------&#25214;&#22278;&#24515;-------------------------------------------------------------
if(b&#27809;&#26377;&#25214;&#22278;&#24515;==False):
i&#32452;1=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G][0][1];i&#32452;2=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G][1][1];#&#36825;&#26159;&#26410;ii&#23618;&#25968;+1&#26102;&#28155;&#21152;&#30340;&#32452;
Li&#22278;&#24515;=[i for i in Li&#19977;&#35282;&#38754;&#32452; if(i!=i&#32452;1 and i!=i&#32452;2)];
if(Li&#22278;&#24515;):
i&#32452;&#22278;&#24515;G=Li&#22278;&#24515;[0];
b&#27809;&#26377;&#25214;&#22278;&#24515;=True;
#print("HartGroup==",i&#32452;&#22278;&#24515;G);
#print("Group1==",i&#32452;1,"Group2==",i&#32452;2);
#print("Glen,Llen,Layer",len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G]),L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,ii&#23618;&#25968;G);
if(b&#24179;&#34892;==True and b&#20004;&#20849;&#38754;==False and b&#26368;&#21518;&#19968;&#23618;==False and b&#26368;&#21518;&#19968;&#28857;==False):
ii&#23618;&#25968;G+=1;
&#916;&#916;&#25214;&#21040;&#24179;&#34892;&#32447;(id,Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;,Ds&#20840;&#37096;&#29615;i&#32452;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;);


#----------------------------------------------------------------------------
def Lb_Lf&#916;&#916;&#35745;&#31639;&#32593;&#22402;&#30452;&#38271;(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;):
b&#26159;&#21542;&#22402;&#30452;=bpy.context.window_manager.bp&#22402;&#30452;&#36317;&#31163;wm ;

Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;=[];
if(b&#26159;&#21542;&#22402;&#30452;):
f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;=0;f3&#24046;=[None,None,None];
for i&#24207;,cf3&#22402;&#30452;&#32593;&#28857;Co&#24207; in enumerate(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;):
if(i&#24207;==0):continue;
i&#27492;&#24207;=i&#24207;;i&#21069;&#24207;=i&#24207;-1;
&#916;&#916;&#24046;&#32473;f3&#19977;(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#27492;&#24207;],Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#21069;&#24207;],f3&#24046;);
f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;=sqrt( pow(f3&#24046;[0],2)+pow(f3&#24046;[1],2)+pow(f3&#24046;[2],2) );
#print("f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491; ",f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;,i&#21069;&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#21069;&#24207;][0],Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#27492;&#24207;][0]);
f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;+=f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;;
#Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;.append(f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;);#&#31532;&#19968;&#28857;&#19981;&#31639;

if((len(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;)-1)==0):
f&#24179;&#22343;&#27573;&#32593;&#38271;=f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;;
else:
f&#24179;&#22343;&#27573;&#32593;&#38271;=f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;/(len(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;)-1);

f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;=0;
for i&#24207;,cf3&#22402;&#30452;&#32593;&#28857;Co&#24207; in enumerate(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;):
if(i&#24207;==0):continue;
i&#27492;&#24207;=i&#24207;;i&#21069;&#24207;=i&#24207;-1;
&#916;&#916;&#24046;&#32473;f3&#19977;(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#27492;&#24207;],Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#21069;&#24207;],f3&#24046;);
f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;=sqrt( pow(f3&#24046;[0],2)+pow(f3&#24046;[1],2)+pow(f3&#24046;[2],2) );
#print("f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491; ",f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;,i&#21069;&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#21069;&#24207;][0],Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#27492;&#24207;][0]);

f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;+=(f&#24179;&#22343;&#27573;&#32593;&#38271;+(f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;-f&#24179;&#22343;&#27573;&#32593;&#38271;)*bpy.context.scene.fp&#21442;&#25968;s2);
Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;.append(f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;);#&#31532;&#19968;&#28857;&#19981;&#31639;
#--------------------------------------------------------------------------
return (b&#26159;&#21542;&#22402;&#30452;,Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;);

def &#916;&#916;&#36171;&#20540;&#32447;uv(Lmuvl,ii&#36873;&#28857;&#24635;&#25968;,ii&#23618;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;,Lcf2UV&#24212;&#30495;&#24207;,Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;):

global b&#36873;&#28857;&#20840;&#23553;&#38381;G;global f&#24179;&#34892;&#32593;&#24635;&#38271;G;
if (L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][1]==L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][1]): #&#20840;&#23553;&#38381;
b&#36873;&#28857;&#20840;&#23553;&#38381;G=True;###print("ALL CLOSE",);

if(b&#36873;&#28857;&#20840;&#23553;&#38381;G ):#&#36825;&#31181;&#24773;&#20917;&#19981;&#33021;&#36816;&#34892;&#21542;&#21017;&#20250;&#20986;&#38169;
return ;
#ii&#36873;&#28857;&#24635;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);ii&#23618;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
#-----&#36171;&#20540;&#32473;&#31532;&#19968;&#23618;uv---------------------------------------------------------------
for i&#24207;, LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]):#&#20808;&#25490;&#21015;&#31532;&#19968;&#23618;
uv&#27492;&#28857;&#30495;=Vector((Lcf2UV&#24212;&#30495;&#24207;[i&#24207;][0],Lcf2UV&#24212;&#30495;&#24207;[i&#24207;][1]))#&#27492;&#28857;&#32034;&#30340;uv
for i&#29615;&#27493; in range( len(LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]) ):#&#36845;&#20195; &#27492;&#28857;&#25152;&#26377; &#29615;
Lmuvl[ LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][i&#29615;&#27493;] ].uv=uv&#27492;&#28857;&#30495;;

#-----&#36171;&#20540;&#32473;&#24179;&#34892;&#23618;uv------------------------------------------------------------
#for i&#23618;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;):
#print("Lay, LiR,G,IP==",i&#23618;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);

i&#24635;&#23454;&#38469;&#23618;&#25968;=ii&#23618;&#25968;-1;
#print("LayerCount==",ii&#23618;&#25968;,i&#24635;&#23454;&#38469;&#23618;&#25968;);
if((not bpy.context.window_manager.bp&#20256;&#25773;wm or i&#24635;&#23454;&#38469;&#23618;&#25968;<1) or b&#19977;&#35282;&#38754;G==True):
cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;=(c_float*2)(0,0);
elif(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-1]==[]):#&#26368;&#21518;&#19968;&#23618;&#20026;&#31354; &#36935;&#21040;&#19977;&#35282;&#24418; &#22810;&#24314;&#19968;&#23618;
cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;=cf2&#916;&#916;&#36716;uv&#20026;cf2(Lmuvl[ L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-2][0][0][0] ].uv);#&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;
#print("Last Group==", L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-2][0][1] );
else:#&#26368;&#21518;&#19968;&#23618;&#20026;&#20498;&#25968;&#31532;&#20108;&#23618;
cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;=cf2&#916;&#916;&#36716;uv&#20026;cf2(Lmuvl[ L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-2][0][0][0] ].uv);#&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;
#print("Last Group==", L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-2][0][1] );

#print("LayLen==",i&#24635;&#23454;&#38469;&#23618;&#25968;);
#----&#35745;&#31639;&#22402;&#30452;--------------------------------------------------------------------
b&#26159;&#21542;&#22402;&#30452;,Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;=Lb_Lf&#916;&#916;&#35745;&#31639;&#32593;&#22402;&#30452;&#38271;(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;);


#----------------------------------------------------------------------------
f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;=f2&#916;&#916;&#27714;f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;(ii&#36873;&#28857;&#24635;&#25968;,i&#24635;&#23454;&#38469;&#23618;&#25968;,Lcf2UV&#24212;&#30495;&#24207;, Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;, cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;);

for ii&#24403;&#21069;&#23618;&#25968;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;):
#print("Lay, LiR,G,IP==",ii&#24403;&#21069;&#23618;&#25968;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
#if((not bpy.context.window_manager.bp&#20256;&#25773;wm or ii&#23618;&#25968;<4) and ii&#24403;&#21069;&#23618;&#25968;==0):#&#22914;&#26524;&#21482;&#26377;&#20004;&#23618;
#break;
if(ii&#24403;&#21069;&#23618;&#25968;==0 or ii&#24403;&#21069;&#23618;&#25968;==i&#24635;&#23454;&#38469;&#23618;&#25968;):#&#20174;&#31532;&#20108;&#23618;&#31639;&#36215;&#20316;&#31532;&#19968;&#23618; &#20498;&#25968;&#19968;&#23618;&#19981;&#29992;&#31639;&#65292;&#22240;&#20026;&#36208;&#26368;&#21518;&#19968;&#23618;&#26102;&#35760;&#24405;&#20102;&#20498;&#25968;&#31532;&#20108;&#23618;&#65292;&#36208;&#20498;&#25968;&#31532;&#20108;&#23618;&#26102;&#35760;&#24405;&#20102;&#26368;&#21518;&#19968;&#23618;
continue;

&#916;&#916;&#20256;&#25773;&#27599;&#34892;&#24179;&#34892;&#28857;(ii&#36873;&#28857;&#24635;&#25968;,i&#24635;&#23454;&#38469;&#23618;&#25968;, ii&#24403;&#21069;&#23618;&#25968;,f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;, Lcf2UV&#24212;&#30495;&#24207;, b&#26159;&#21542;&#22402;&#30452;,Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491; , Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;);
#print("APPLY LAYER",ii&#24403;&#21069;&#23618;&#25968;);
for i&#24207;, Li&#21516;&#20301;&#32622;&#29615;_i&#32452;&#24207; in enumerate(LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;):#&#20808;&#25490;&#21015;&#31532;&#19968;&#23618;
uv&#27492;&#28857;&#30495;=Vector((Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;[i&#24207;][0],Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;[i&#24207;][1]));#&#27492;&#28857;&#32034;&#30340;uv
for i&#29615;&#27493; in range( len(Li&#21516;&#20301;&#32622;&#29615;_i&#32452;&#24207;[0]) ):#&#36845;&#20195; &#27492;&#28857;&#25152;&#26377; &#29615;
Lmuvl[ Li&#21516;&#20301;&#32622;&#29615;_i&#32452;&#24207;[0][i&#29615;&#27493;] ].uv=uv&#27492;&#28857;&#30495;;


class &#21328;UV&#22278;&#28369;&#21328;Operator(bpy.types.Operator):
bl_idname = 'uv.circle'
bl_label = 'circle '
bl_options = {'REGISTER', 'UNDO'}
bl_description = "arrange the uv in a precise circle"

@classmethod
def poll(cls, context):
return (context.mode == 'EDIT_MESH');

def execute(self, context):
#if(context.scene.tool_settings.use_uv_select_sync== True):
#context.scene.tool_settings.use_uv_select_sync= False;return {'FINISHED'};
#print ("&#21328;UV&#22278;&#28369;&#21328;Operator")
#LLLi&#916;&#916;&#916;&#36873;&#20013;&#28857;&#25490;&#21015;();bpy.ops.object.mode_set(mode='EDIT');return {'FINISHED'}
Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#29615;&#22278;&#24515;=LLLi&#916;&#916;&#916;&#36873;&#20013;&#28857;&#25490;&#21015;();
if(Lmuvl==None):
self.report({"ERROR"},"you only select one vertex");
return {'FINISHED'};
#for i, LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;):
#print("LayRingGroup",len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;),len(LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;),LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);

""""""
global b&#36873;&#28857;&#20840;&#23553;&#38381;G;
if(b&#36873;&#28857;&#20840;&#23553;&#38381;G):
#if (L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][1]==L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][1]): #&#20840;&#23553;&#38381;
uv&#22836;=Lmuvl[ L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][0][0] ].uv;#[i&#28857;&#32034;,[i&#29615;&#36873;0,-1,i&#29615;&#36873;2,-1]]
uv&#23614;=Lmuvl[ L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][1][0][0] ].uv;
#b&#36873;&#28857;&#20840;&#23553;&#38381;G=True;##print("ALL CLOSE 2",);

else: #&#27491;&#24120;&#28857;
#print("i face==",i&#20010;&#38754;&#20849;&#28857;);
uv&#22836;=Lmuvl[ L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][0][0] ].uv;#[i&#28857;&#32034;,[i&#29615;&#36873;0,i&#29615;&#36873;2,]]
uv&#23614;=Lmuvl[ L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][0][0] ].uv;

uv&#20013;=Lmuvl[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])//2][0][0]].uv;

#cf2&#22836;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#22836;);cf2&#23614;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#23614;);cf2&#20013;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#20013;);#&#9679;&#9679;
#cf3XYR=(c_float*3)();#&#9679;&#9679;
cf3XYR=[None,None,None];
#D.DLL.b&#916;&#916;&#27714;&#22278;&#24515;&#19982;&#21322;&#24452;&#22352;&#26631;&#32473;f3&#22235; .argtypes = [c_float, c_float,c_float,c_float] # &#21442;&#25968;&#31867;&#22411;&#65292;&#20004;&#20010;float&#65288;c_float&#20869;ctypes&#31867;&#22411;&#65289;
#D.DLL.b&#916;&#916;&#27714;&#22278;&#24515;&#19982;&#21322;&#24452;&#22352;&#26631;&#32473;f3&#22235;.restype = c_bool;
#b&#26377;&#22278;&#24515;=D.DLL.b&#916;&#916;&#27714;&#22278;&#24515;&#19982;&#21322;&#24452;&#22352;&#26631;&#32473;f3&#22235;(cf2&#22836;,cf2&#23614;,cf2&#20013;,cf3XYR);
b&#26377;&#22278;&#24515;=b&#916;&#916;&#27714;&#22278;&#24515;&#19982;&#21322;&#24452;&#22352;&#26631;&#32473;f3&#22235;(uv&#22836;,uv&#23614;,uv&#20013;,cf3XYR)
#print("HAEV HART==",b&#26377;&#22278;&#24515;);
if(b&#26377;&#22278;&#24515;==False ):
#print ("&#22278;&#24515;&#25104;&#19968;&#30452;&#32447;",b&#26377;&#22278;&#24515;)
&#21328;UV&#24179;&#28369;&#21328;Operator.execute(self, context);
bpy.ops.object.mode_set(mode='EDIT');
return {'FINISHED'};
#print ("&#26377;&#22278;&#24515;",b&#26377;&#22278;&#24515;)
#uv&#22278;&#24515;=Vector((cf3XYR[0],cf3XYR[1]));
f&#21322;&#24452;=cf3XYR[2];
#cf2&#22278;&#24515;=(c_float*2)(cf3XYR[0],cf3XYR[1]);#&#9679;&#9679;
cf2&#22278;&#24515;=[cf3XYR[0],cf3XYR[1]];
#print("HART==",cf3XYR[0],cf3XYR[1]);#&#27491;&#30830;

#D.DLL.f&#916;&#916;&#30693;&#19977;&#28857;&#27714;&#23545;&#35282;&#24359;.restype = c_float ;D.DLL.b&#916;&#916;&#26816;&#27979;&#24635;&#24359;&#26159;&#21542;&#39034;&#26102;&#38024;.restype = c_bool;#&#9679;&#9679;
#b&#39034;=D.DLL.b&#916;&#916;&#26816;&#27979;&#24635;&#24359;&#26159;&#21542;&#39034;&#26102;&#38024;(cf2&#22836;,cf2&#20013;, cf2&#23614;, cf2&#22278;&#24515;);#&#9679;&#9679;
b&#39034;=b&#916;&#916;&#26816;&#27979;&#24635;&#24359;&#26159;&#21542;&#39034;&#26102;&#38024;(uv&#22836;,uv&#20013;, uv&#23614;, cf2&#22278;&#24515;);
#print("bORDER==", b&#39034;);

#f&#23545;&#35282;&#24359;=D.DLL.f&#916;&#916;&#30693;&#19977;&#28857;&#27714;&#23545;&#35282;&#24359;(cf2&#22836;,cf2&#23614;,cf2&#22278;&#24515;);#&#9679;&#9679;
f&#23545;&#35282;&#24359;=f&#916;&#916;&#30693;&#19977;&#28857;&#27714;&#23545;&#35282;&#24359;(uv&#22836;,uv&#23614;,cf2&#22278;&#24515;);
#f&#20013;&#24359;=D.DLL.f&#916;&#916;&#30693;&#19977;&#28857;&#27714;&#23545;&#35282;&#24359;(cf2&#22836;,cf2&#23614;,cf2&#20013;);#&#9679;&#9679;
f&#20013;&#24359;=f&#916;&#916;&#30693;&#19977;&#28857;&#27714;&#23545;&#35282;&#24359;(uv&#22836;,uv&#23614;,uv&#20013;);
if(f&#20013;&#24359;<pi/2):#&#36825;&#26159;&#22823;&#20110;&#21322;&#22278;&#30340;&#24359;
f&#23545;&#35282;&#24359;=2*pi-f&#23545;&#35282;&#24359;;#&#21462;&#21453;&#24359;&#24230;

if(b&#36873;&#28857;&#20840;&#23553;&#38381;G==True):#&#20840;&#23553;&#38381;
f&#23545;&#35282;&#24359;=-2*pi;
#f&#24179;&#22343;&#24359;=f&#23545;&#35282;&#24359;/(len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])-1);

#else:
f&#24179;&#22343;&#24359;=f&#23545;&#35282;&#24359;/(len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])-1);

#print ("fHU==",f&#23545;&#35282;&#24359;,f&#20013;&#24359;);
#----&#36171;&#20540;uv------------------------------------------------------------------
#----&#35745;&#31639;&#22402;&#30452;--------------------------------------------------------------------
ii&#36873;&#28857;&#24635;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]);
Lcf3&#32593;&#28857;Co&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;=LLcf3&#916;&#916;&#24471;&#36873;&#28857;&#32593;co&#21015;&#34920;(ii&#36873;&#28857;&#24635;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
b&#26159;&#21542;&#22402;&#30452;,Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;=Lb_Lf&#916;&#916;&#35745;&#31639;&#32593;&#22402;&#30452;&#38271;(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;);
if(b&#36873;&#28857;&#20840;&#23553;&#38381;G==True and context.window_manager.bp&#20256;&#25773;wm):
for i in range( len(Li&#29615;&#22278;&#24515;)):#&#36845;&#20195; &#27492;&#28857;&#25152;&#26377;uv loop &#36171;&#20540;&#22278;&#24515;
Lmuvl[Li&#29615;&#22278;&#24515;[i]].uv=Vector((cf2&#22278;&#24515;[0],cf2&#22278;&#24515;[1]));

ii&#23618;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
i&#23618;&#25968;&#23454;&#38469;=ii&#23618;&#25968;-1;
uv&#21322;&#24452;&#30690;&#37327;=uv&#22836;-Vector((cf2&#22278;&#24515;[0],cf2&#22278;&#24515;[1]));
if(not context.window_manager.bp&#20256;&#25773;wm):
f&#27599;&#27573;&#27604;&#20363;=f&#27599;&#27573;&#21322;&#24452;=0;
else:
f&#27599;&#27573;&#21322;&#24452;=f&#21322;&#24452;/(i&#23618;&#25968;&#23454;&#38469;);
f&#27599;&#27573;&#27604;&#20363;=f&#27599;&#27573;&#21322;&#24452;/uv&#21322;&#24452;&#30690;&#37327;.length;

for i&#23618;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;) :
if(b&#36873;&#28857;&#20840;&#23553;&#38381;G==False and i&#23618;>0):
break;
if(not context.window_manager.bp&#20256;&#25773;wm and i&#23618;>0):#&#22914;&#26524;&#19981;&#20256;&#25773; &#31532;&#20108;&#23618;&#23601; break;
break;
#print("APPLY Layer,LL==",i&#23618;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
if(ii&#23618;&#25968;>1 and i&#23618;==ii&#23618;&#25968;-1):#&#26368;&#21518;&#19968;&#23618;&#19981;&#29992;&#31639;&#65292;&#20174;&#31532;&#20108;&#23618;&#31639;&#36215;&#20316;&#31532;&#19968;&#23618; &#22240;&#20026;&#36208;&#26368;&#21518;&#19968;&#23618;&#26102;&#35760;&#24405;&#20102;&#20498;&#25968;&#31532;&#20108;&#23618;
continue;

if(b&#26159;&#21542;&#22402;&#30452;):
i&#32047;&#38271;&#24230;=len(Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;);
#print("LEN LfLei,Layer==",i&#32047;&#38271;&#24230;,i&#23618;&#25968;&#23454;&#38469;);
if(Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[i&#32047;&#38271;&#24230;-1]==0):
Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[i&#32047;&#38271;&#24230;-1]=0.0000001;b&#26159;&#21542;&#22402;&#30452;=False;
#print("LEN Lf,Lay-3==",ii&#23618;&#25968;-3-i&#23618;,i&#32047;&#38271;&#24230;,ii&#23618;&#25968;-3);
i&#27492;&#24207;=i&#32047;&#38271;&#24230;-1-i&#23618;;
f&#27492;&#27573;&#27604;&#20363;=Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[i&#27492;&#24207;]/Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[i&#32047;&#38271;&#24230;-1];
#print("Portion==",f&#27492;&#27573;&#27604;&#20363;);
#if(i&#28857;&#32034;&#22278;&#24515;G==None and i&#23618;==i&#23618;&#25968;&#23454;&#38469;):


for i&#24207;, Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;):
if (b&#36873;&#28857;&#20840;&#23553;&#38381;G and (i&#24207;==0 or i&#24207;==len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])-1)): #&#22914;&#26524;&#26159;&#22836;&#25110;&#23614;&#28857; &#24182;&#23553;&#38381;
if(b&#26159;&#21542;&#22402;&#30452;):
uv&#22836;&#30495;=uv&#21322;&#24452;&#30690;&#37327;*f&#27492;&#27573;&#27604;&#20363;+Vector((cf2&#22278;&#24515;[0],cf2&#22278;&#24515;[1]));
else:
uv&#22836;&#30495;=uv&#21322;&#24452;&#30690;&#37327;-uv&#21322;&#24452;&#30690;&#37327;*f&#27599;&#27573;&#27604;&#20363;*i&#23618;+Vector((cf2&#22278;&#24515;[0],cf2&#22278;&#24515;[1]));
for i in range( len(Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])):#&#36845;&#20195; &#27492;&#28857;&#25152;&#26377;uv loop
Lmuvl[Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][i]].uv=Vector((uv&#22836;&#30495;[0],uv&#22836;&#30495;[1]));
continue;
if(b&#36873;&#28857;&#20840;&#23553;&#38381;G==False and (i&#24207;==0 or i&#24207;==len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])-1)):#&#22914;&#26524; &#21482;&#26159;&#32447;&#36873;
continue;
#print ("i&#28857;&#32034;&#24207;&#36873;",Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;)
#cf&#21152;&#24359;&#27491;=c_float(f&#24179;&#22343;&#24359;*i&#24207;);#&#9679;&#9679;
cf&#21152;&#24359;&#27491;=f&#24179;&#22343;&#24359;*i&#24207;;
#D.DLL.f&#916;&#916;&#27714;&#21152;&#24359;&#27491;&#30495;.restype = c_float ;#&#9679;&#9679;
#f&#21152;&#24359;&#27491;&#30495;=D.DLL.f&#916;&#916;&#27714;&#21152;&#24359;&#27491;&#30495;(cf2&#22836;,cf2&#22278;&#24515;, cf&#21152;&#24359;&#27491;,b&#39034; );#&#9679;&#9679;
f&#21152;&#24359;&#27491;&#30495;=f&#916;&#916;&#27714;&#21152;&#24359;&#27491;&#30495;(uv&#22836;,cf2&#22278;&#24515;, cf&#21152;&#24359;&#27491;,b&#39034;);
#cf2&#22278;&#27492;&#28857;&#30495;=(c_float*2)();#&#9679;&#9679;
cf2&#22278;&#27492;&#28857;&#30495;=[None,None];
#cf&#21152;&#24359;&#27491;&#30495;=c_float(f&#21152;&#24359;&#27491;&#30495;);cf&#21322;&#24452;=c_float(f&#21322;&#24452;-(f&#27599;&#27573;&#21322;&#24452;*i&#23618;));#&#9679;&#9679;
cf&#21152;&#24359;&#27491;&#30495;=f&#21152;&#24359;&#27491;&#30495;;
if(b&#26159;&#21542;&#22402;&#30452;):
cf&#21322;&#24452;=f&#21322;&#24452;*f&#27492;&#27573;&#27604;&#20363;;

else:
cf&#21322;&#24452;=f&#21322;&#24452;-(f&#27599;&#27573;&#21322;&#24452;*i&#23618;);
#D.DLL.&#916;&#916;&#30693;&#24359;&#27714;&#28857;&#32473;f2&#22235;&#30495;(cf&#21152;&#24359;&#27491;&#30495;,cf&#21322;&#24452;, cf2&#22278;&#24515;,cf2&#22278;&#27492;&#28857;&#30495;);#&#9679;&#9679;
&#916;&#916;&#30693;&#24359;&#27714;&#28857;&#32473;f2&#22235;&#30495;(cf&#21152;&#24359;&#27491;&#30495;,cf&#21322;&#24452;, cf2&#22278;&#24515;,cf2&#22278;&#27492;&#28857;&#30495;);

for i in range( len(Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])):#&#36845;&#20195; &#27492;&#28857;&#25152;&#26377;uv loop
Lmuvl[Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][i]].uv=Vector((cf2&#22278;&#27492;&#28857;&#30495;[0],cf2&#22278;&#27492;&#28857;&#30495;[1]));

bpy.ops.object.mode_set(mode='EDIT');
return {'FINISHED'};

#覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
global f&#36317;&#31163;&#21442;&#25968;G;f&#36317;&#31163;&#21442;&#25968;G=None;
global L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G;L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G=[];
global b&#19977;&#20493;&#24179;&#28369;G; b&#19977;&#20493;&#24179;&#28369;G=False ;

def Lmuvl&#916;&#916;&#36820;&#22238;Lmuvl():# &#36825;&#20010;&#21482;&#33021;&#22312;&#29289;&#20307;&#27169;&#24335;&#19979;&#25165;&#33021;&#35760;&#24405;&#25968;&#25454;
bpy.ops.object.mode_set(mode='OBJECT');
id = bpy.context.active_object.data ;
if (not id.uv_layers.active):
return {'FINISHED'};
id=bpy.context.active_object.data;
return id.uv_layers.active.data ;


class &#21328;UV&#24179;&#28369;&#21328;Operator(bpy.types.Operator):
bl_idname = 'uv.smooth'
bl_label = 'smooth'
bl_options = {'REGISTER', 'UNDO'}
bl_description = "smooth uv while preserving the shape"

cf&#36317;&#31163;&#21442;&#25968;=None;
@classmethod
def poll(cls, context):
return True # (context.mode == 'EDIT_MESH');

def execute(self, context):
#if(context.scene.tool_settings.use_uv_select_sync== True):
#context.scene.tool_settings.use_uv_select_sync= False;return {'FINISHED'};
global f&#36317;&#31163;&#21442;&#25968;G;
#print("G==",f&#36317;&#31163;&#21442;&#25968;G);
self.cf&#36317;&#31163;&#21442;&#25968;=f&#36317;&#31163;&#21442;&#25968;G;
if(self.cf&#36317;&#31163;&#21442;&#25968;==None):
#print("G==None",self.cf&#36317;&#31163;&#21442;&#25968;);
#self.cf&#36317;&#31163;&#21442;&#25968;=c_float(bpy.context.scene.fp&#21442;&#25968;s2);#&#9679;&#9679;
self.cf&#36317;&#31163;&#21442;&#25968;=context.scene.fp&#21442;&#25968;s2;
#----&#36733;&#20837;&#25968;&#25454;----------------------------------------------------------------
#global L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;&#21069;G;
global L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G;
global b&#19977;&#20493;&#24179;&#28369;G;

id=bpy.context.active_object.data;

L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;=[];
if(b&#19977;&#20493;&#24179;&#28369;G and L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G):
Lmuvl=Lmuvl&#916;&#916;&#36820;&#22238;Lmuvl();
#L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G;
#print("HAVE DATA",Lmuvl);
else:
Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G,Li&#29615;&#22278;&#24515;=LLLi&#916;&#916;&#916;&#36873;&#20013;&#28857;&#25490;&#21015;();
if(Lmuvl==None):
self.report({"ERROR"},"you only select one vertex");
return {'FINISHED'};
#L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G;

#----------------------------------------------------------------------------
global b&#36873;&#28857;&#20840;&#23553;&#38381;G;
if(b&#36873;&#28857;&#20840;&#23553;&#38381;G):return {'FINISHED'};
ii&#23618;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G);
ii&#36873;&#28857;&#24635;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G[0]);

Lcf2uv&#36873;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();Lcf2UV&#24212;&#30495;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();

for i&#24207;, Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G[0]):#&#31532;&#19968;&#23618;
#try:
uv=Lmuvl[Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0]].uv;
#except:
#print("Wrong LLLiii2",Lmuvl);return {'FINISHED'};
#print("uv loop==",LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0],LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0]);
#Luv&#24207;.append(uv)
cf2UV=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv);
Lcf2uv&#36873;&#24207;[i&#24207;]=cf2UV;
#print("Right LLLiii",Lmuvl);
#print ("Luv&#24207;",Luv&#24207;,"i&#20010;&#38754;&#20849;&#28857;",i&#20010;&#38754;&#20849;&#28857;)
#Lcf&#27599;&#27573;&#38271;&#27491;=(c_float*ii&#36873;&#28857;&#24635;&#25968;)();Lcf&#27599;&#27573;&#32047;&#38271;&#27491;=(c_float*ii&#36873;&#28857;&#24635;&#25968;)();#&#9679;&#9679;
Lcf&#27599;&#27573;&#38271;&#27491;=[0 for f in range(ii&#36873;&#28857;&#24635;&#25968;)];Lcf&#27599;&#27573;&#32047;&#38271;&#27491;=[0 for f in range(ii&#36873;&#28857;&#24635;&#25968;)];
#Lcf&#32593;&#27599;&#27573;&#32047;&#38271;&#27491;=(c_float*ii&#36873;&#28857;&#24635;&#25968;)();#&#9679;&#9679;
Lcf&#32593;&#27599;&#27573;&#32047;&#38271;&#27491;=[0 for f in range(ii&#36873;&#28857;&#24635;&#25968;)];
#print ("Lmuvl&#19968;",Lmuvl)#&#20026;&#20160;&#20040;Lmuvl&#20026;&#26377;
Lcf3&#32593;&#28857;Co&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;=LLcf3&#916;&#916;&#24471;&#36873;&#28857;&#32593;co&#21015;&#34920;(ii&#36873;&#28857;&#24635;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G);#&#36825;&#20010;&#25226;Lmuvl&#24324;&#27809;&#20102;
#Lcf3&#32593;&#28857;Co&#24207;=((c_float*3)*ii&#36873;&#28857;&#24635;&#25968;)();
#for i in Lcf3&#32593;&#28857;Co&#24207;: #print ("iCO==",i[0],i[1],i[2]);#co&#22352;&#26631;
#for i in Lcf2uv&#36873;&#24207;: #print ("fuv==",i[0],i[1]);#uv&#22352;&#26631;
#print ("iiPoint==",ii&#36873;&#28857;&#24635;&#25968;)
#D.DLL.&#916;&#916;UV&#24179;&#28369;&#32473;Lf2&#20843;(ii&#36873;&#28857;&#24635;&#25968;,self.cf&#36317;&#31163;&#21442;&#25968;,Lcf&#32593;&#27599;&#27573;&#32047;&#38271;&#27491;,Lcf3&#32593;&#28857;Co&#24207;,Lcf&#27599;&#27573;&#38271;&#27491;,Lcf&#27599;&#27573;&#32047;&#38271;&#27491;,Lcf2uv&#36873;&#24207;, Lcf2UV&#24212;&#30495;&#24207;);#&#9679;&#9679;
&#916;&#916;UV&#24179;&#28369;&#32473;Lf2&#20843;(ii&#36873;&#28857;&#24635;&#25968;,self.cf&#36317;&#31163;&#21442;&#25968;,Lcf&#32593;&#27599;&#27573;&#32047;&#38271;&#27491;,Lcf3&#32593;&#28857;Co&#24207;,Lcf&#27599;&#27573;&#38271;&#27491;,Lcf&#27599;&#27573;&#32047;&#38271;&#27491;,Lcf2uv&#36873;&#24207;, Lcf2UV&#24212;&#30495;&#24207;);

#--&#36171;&#20540;&#32473;uv------------------------------------------------------------------

&#916;&#916;&#36171;&#20540;&#32447;uv(Lmuvl,ii&#36873;&#28857;&#24635;&#25968;,ii&#23618;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;,Lcf2UV&#24212;&#30495;&#24207;,Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;);

bpy.ops.object.mode_set(mode='EDIT');
f&#36317;&#31163;&#21442;&#25968;G=None;
return {'FINISHED'};

#覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
class &#21328;UV&#19977;&#20493;&#24179;&#28369;&#21328;Operator(bpy.types.Operator):
bl_idname = 'uv.smooth3'
bl_label = 'smooth'
bl_options = {'REGISTER', 'UNDO'}
bl_description = "smooth uv heavier"

@classmethod
def poll(cls, context):
return (context.mode == 'EDIT_MESH');

def execute(self, context):
global f&#36317;&#31163;&#21442;&#25968;G;
global b&#19977;&#20493;&#24179;&#28369;G;
global L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G;

b&#19977;&#20493;&#24179;&#28369;G=True ;L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G=[];
#for cf&#36317;&#31163;&#21442;&#25968; in [c_float(0.0),c_float(1.0),c_float(0.5),c_float(bpy.context.scene.fp&#21442;&#25968;s2)]:#&#9679;&#9679;
for cf&#36317;&#31163;&#21442;&#25968; in [0.0,1.0,0.5,bpy.context.scene.fp&#21442;&#25968;s2]:
#&#21328;UV&#24179;&#28369;=&#21328;UV&#24179;&#28369;&#21328;Operator("OPERATOR");
#&#21328;UV&#24179;&#28369;.cf&#36317;&#31163;&#21442;&#25968;=cf&#36317;&#31163;&#21442;&#25968;;

f&#36317;&#31163;&#21442;&#25968;G=cf&#36317;&#31163;&#21442;&#25968;;
#&#21328;UV&#24179;&#28369;&#21328;Operator.execute(self, context);
bpy.ops.uv.smooth('INVOKE_DEFAULT',);
print("EXE count",);
#----------------------------------------------------------------------------
b&#19977;&#20493;&#24179;&#28369;G=False ;L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G=[];
return {'FINISHED'};

#覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
class &#21328;&#25289;&#30452;&#21328;Operator(bpy.types.Operator):
bl_idname = 'straight.uv'
bl_label = 'straight'
bl_options = {'REGISTER', 'UNDO'}
bl_description = "straithen uv and homogeneous alignment "
bl_register = True
bl_undo = True

@classmethod
def poll(cls, context):
return (context.mode == 'EDIT_MESH');
def execute(self, context):
#if(context.scene.tool_settings.use_uv_select_sync== True):
#context.scene.tool_settings.use_uv_select_sync= False;return {'FINISHED'};
Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#29615;&#22278;&#24515;=LLLi&#916;&#916;&#916;&#36873;&#20013;&#28857;&#25490;&#21015;();
if(Lmuvl==None):
self.report({"ERROR"},"you only select one vertex");
return {'FINISHED'};
global b&#36873;&#28857;&#20840;&#23553;&#38381;G;
if(b&#36873;&#28857;&#20840;&#23553;&#38381;G):return {'FINISHED'};
#return {'FINISHED'}
ii&#36873;&#28857;&#24635;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]);
ii&#23618;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);

uv&#22836;=Lmuvl[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][0][0]].uv; #[i&#28857;&#32034;,[i&#29615;&#36873;0,i&#29615;&#36873;2,]]
uv&#23614;=Lmuvl[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][0][0]].uv;

#cf2UV&#22836;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#22836;);cf2UV&#23614;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#23614;);#&#9679;&#9679;
#Lcf2UV&#24212;&#30495;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();#&#9679;&#9679;
Lcf2UV&#24212;&#30495;&#24207;=[[None,None] for f in range(ii&#36873;&#28857;&#24635;&#25968;)];Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;=[[None,None] for f in range(ii&#36873;&#28857;&#24635;&#25968;)];
#D.DLL.&#916;&#916;&#25289;&#30452;UV&#32473;Lf2&#22235;(ii&#36873;&#28857;&#24635;&#25968;,cf2UV&#22836;,cf2UV&#23614;,Lcf2UV&#24212;&#30495;&#24207;); #&#9679;&#9679;
Lcf3&#32593;&#28857;Co&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;=LLcf3&#916;&#916;&#24471;&#36873;&#28857;&#32593;co&#21015;&#34920;(ii&#36873;&#28857;&#24635;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
&#916;&#916;&#25289;&#30452;UV&#32473;Lf2&#22235;(ii&#36873;&#28857;&#24635;&#25968;,uv&#22836;,uv&#23614;,Lcf2UV&#24212;&#30495;&#24207;);

&#916;&#916;&#36171;&#20540;&#32447;uv(Lmuvl,ii&#36873;&#28857;&#24635;&#25968;,ii&#23618;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;,Lcf2UV&#24212;&#30495;&#24207;,Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;);
if(context.window_manager.bp&#20256;&#25773;wm and context.window_manager.bp&#22402;&#30452;&#36317;&#31163;wm):
return bpy.ops.uv.smooth('INVOKE_DEFAULT',);
bpy.ops.object.mode_set(mode='EDIT');
return {'FINISHED'}


#覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
class &#21328;&#33258;&#21160;&#23545;&#40784;&#21328;Operator(bpy.types.Operator):
bl_idname = 'align.uv'
bl_label = 'align'
bl_options = {'REGISTER', 'UNDO'}
bl_description = "align uv in X or Y axis and homogeneous alignment "

@classmethod
def poll(cls, context):
return (context.mode == 'EDIT_MESH');
def execute(self, context):
#if(context.scene.tool_settings.use_uv_select_sync== True):
#context.scene.tool_settings.use_uv_select_sync= False;return {'FINISHED'};
Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#29615;&#22278;&#24515;=LLLi&#916;&#916;&#916;&#36873;&#20013;&#28857;&#25490;&#21015;();
if(Lmuvl==None):
self.report({"ERROR"},"you only select one vertex");
return {'FINISHED'};
global b&#36873;&#28857;&#20840;&#23553;&#38381;G;
if(b&#36873;&#28857;&#20840;&#23553;&#38381;G):return {'FINISHED'};

ii&#23618;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
ii&#36873;&#28857;&#24635;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]);

uv&#22836;=Lmuvl[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][0][0]].uv; #[i&#28857;&#32034;,[i&#29615;&#36873;0,i&#29615;&#36873;2,]]
uv&#23614;=Lmuvl[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][0][0]].uv;
#print("Head Tail==",uv&#22836;,uv&#23614;);
#cf2UV&#22836;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#22836;);cf2UV&#23614;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#23614;);#&#9679;&#9679;
#Lcf2UV&#24212;&#30495;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();#&#9679;&#9679;
Lcf2UV&#24212;&#30495;&#24207;=[[None,None] for f in range(ii&#36873;&#28857;&#24635;&#25968;)];Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;=[[None,None] for f in range(ii&#36873;&#28857;&#24635;&#25968;)];
#D.DLL.&#916;&#916;&#33258;&#21160;&#23545;&#40784;UV&#32473;Lf2&#22235;(ii&#36873;&#28857;&#24635;&#25968;,cf2UV&#22836;,cf2UV&#23614;,Lcf2UV&#24212;&#30495;&#24207;);#&#9679;&#9679;
Lcf3&#32593;&#28857;Co&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;=LLcf3&#916;&#916;&#24471;&#36873;&#28857;&#32593;co&#21015;&#34920;(ii&#36873;&#28857;&#24635;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
&#916;&#916;&#33258;&#21160;&#23545;&#40784;UV&#32473;Lf2&#22235;(ii&#36873;&#28857;&#24635;&#25968;,uv&#22836;,uv&#23614;,Lcf2UV&#24212;&#30495;&#24207;);

&#916;&#916;&#36171;&#20540;&#32447;uv(Lmuvl,ii&#36873;&#28857;&#24635;&#25968;,ii&#23618;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;,Lcf2UV&#24212;&#30495;&#24207;,Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;);

if(context.window_manager.bp&#20256;&#25773;wm and context.window_manager.bp&#22402;&#30452;&#36317;&#31163;wm):
bpy.ops.uv.smooth('INVOKE_DEFAULT',);
bpy.ops.object.mode_set(mode='EDIT');
return {'FINISHED'}

#覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧

#覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
#////////////////////////////////////////////////////////////////////////
"""
class &#21328;&#36733;&#20837;DLL&#21328;Operator(bpy.types.Operator):
bl_idname = 'loaddll.uv';
bl_label = '&#36733;&#20837;dll';
bl_options = {'REGISTER', 'UNDO'};

@classmethod
def poll(cls, context):
return True; #(obj and obj.type == 'MESH')
def execute(self, context):
#D=&#21328;DLL&#31867;&#22411;();
try:
D.DLL = CDLL(dllpath32E);
except:
D.DLL = CDLL(dllpath64E);
return {'FINISHED'};

class &#21328;&#21024;&#38500;DLL&#21328;Operator(bpy.types.Operator):
'''&#21024;&#38500;dll'''
bl_idname = 'deldll.uv'
bl_label = 'deldll'
bl_options = {'REGISTER', 'UNDO'}
@classmethod
def poll(cls, context):
obj = context.active_object
return (obj and obj.type == 'MESH')
def execute(self, context):
#if(D.DLL):
windll.kernel32.FreeLibrary(D.DLL._handle)#&#37322;&#25918;dll
#bpy.utils.unregister_module(__name__)
#print ("&#24050;&#32463;&#21024;&#38500;DLL")
#print ("fp=",context.scene.fp&#21442;&#25968;s2)
return {'FINISHED'}
"""
#/////////////////////////////////////////////////////////////////////////
class &#21328;Panel(bpy.types.Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'UI'
bl_idname = '&#24179;&#28369;uv'
bl_label = "uv_tool"
bl_context = "objectmode"
#bpy.types.UVLoopLayers.fp&#21442;&#25968;uvll=FloatProperty(name="fp&#21442;&#25968;s2", description="--", default=0.0, min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, step=3, precision=2)
#bl_options = {'DEFAULT_CLOSED'}
def draw(self, context):
uil&#30028; = self.layout
uil&#21015;&#19968;= uil&#30028;.column(align=True)
uil&#21015;&#20108;=uil&#21015;&#19968;.split(0.2)
uil&#21015;&#20108;.operator(&#21328;UV&#22278;&#28369;&#21328;Operator.bl_idname, text="Circle",icon="SPHERECURVE")
uil&#21015;&#20108;.operator(&#21328;UV&#24179;&#28369;&#21328;Operator.bl_idname, text="Smooth",icon="SMOOTHCURVE")
uil&#21015;&#20108;.operator(&#21328;UV&#19977;&#20493;&#24179;&#28369;&#21328;Operator.bl_idname, text="smooth*3")
uil&#34892;=uil&#30028;.row(align=True);
uil&#34892;.prop( context.scene, "fp&#21442;&#25968;s2", text = "mesh distance", slider = True,);
uil&#34892;=uil&#30028;.row(align=True);
uil&#34892;.prop( context.window_manager, "bp&#20256;&#25773;wm", text = "transmission", toggle=True);
uil&#34892;.prop( context.window_manager, "bp&#22402;&#30452;&#36317;&#31163;wm", text = "vertical", toggle=True);
uil&#34892;.prop( context.window_manager, "bpXYwm", text = "XY", toggle=False);
#uil&#30028;.separator();
uil&#21015;&#20108;=uil&#30028;.column(align=True).split(0.5);
uil&#21015;&#20108;.operator(&#21328;&#25289;&#30452;&#21328;Operator.bl_idname, text="Straighten",icon="LINCURVE");
uil&#21015;&#20108;.operator(&#21328;&#33258;&#21160;&#23545;&#40784;&#21328;Operator.bl_idname, text="Align",icon="NOCURVE");

"""
separator();
uil&#21015;&#20108;=uil&#30028;.column(align=True).split(0.5);
uil&#21015;&#20108;.operator(&#21328;&#36733;&#20837;DLL&#21328;Operator.bl_idname, text="load dll")
uil&#21015;&#20108;.operator(&#21328;&#21024;&#38500;DLL&#21328;Operator.bl_idname, text="unload dll&unregister")
"""
def UPDATE1(self, context):
if(context.window_manager.bp&#20256;&#25773;wm==False):
context.window_manager.bp&#22402;&#30452;&#36317;&#31163;wm=False;

def UPDATE2(self, context):
if(context.window_manager.bp&#22402;&#30452;&#36317;&#31163;wm==True):
context.window_manager.bp&#20256;&#25773;wm=True;

def UPDATE3(self, context):
if(context.window_manager.bpXYwm==True):
context.window_manager.bp&#20256;&#25773;wm=True;
context.window_manager.bp&#22402;&#30452;&#36317;&#31163;wm=True;

def register():
bpy.utils.register_module(__name__)
bpy.types.Scene.fp&#21442;&#25968;s2=FloatProperty(name="fp&#21442;&#25968;s2", description="this will effect the uv according to the mesh shape", default=0.5, min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, step=3, precision=2);
bpy.types.WindowManager.bp&#20256;&#25773;wm=BoolProperty(name="transmission", description="transmission", default=False,update=UPDATE1);
bpy.types.WindowManager.bp&#22402;&#30452;&#36317;&#31163;wm=BoolProperty(name="vertical", description="vertical Proportion", default=False,update=UPDATE2);
bpy.types.WindowManager.bpXYwm=BoolProperty(name="XY Proportion", description="XY Proportion", default=False,update=UPDATE3);
def unregister():
#bpy.ops.deldll.uv('INVOKE_DEFAULT',);
del bpy.types.Scene.fp&#21442;&#25968;s2;
del bpy.types.WindowManager.bp&#20256;&#25773;wm;
del bpy.types.WindowManager.bp&#22402;&#30452;&#36317;&#31163;wm;
del bpy.types.WindowManager.bpXYwm;

bpy.utils.unregister_module(__name__);

if __name__ == "__main__":
register()
b&#38381;=True
#//////////////////////////////////////////////////////////////////////
  1. #20130610
  2. bl_info = {
  3.     "name": "uv_tool",
  4.     "author": "imdjs",
  5.     "version": (2014,"1018"),
  6.     "blender": (2, 7, 0),
  7.     "api": 270,
  8.     "location": "IMAGE_EDITOR > UI ",
  9.     "description": "smooth selected uv line",
  10.     "warning": "",
  11.     "wiki_url": "http://blog.sina.com.cn/u/1325600780",
  12.     "tracker_url": "http://blog.sina.com.cn/s/blog_4f03100c01010wqb.html",
  13.     "category": "UV"}
  14.  
  15. import os,ctypes
  16. import bpy, math,  mathutils,bmesh
  17. from ctypes import *
  18. from bpy.props import *
  19. from math import *
  20. from mathutils import Vector
  21.  
  22. #//Function//////////////////////////////////////////////////////////////////
  23. PI  =3.14159;
  24. PI2 = 6.2831;
  25.  
  26. class  &#21328;DLL&#31867;&#22411;():
  27.     def __init__(self):
  28.         wm = bpy.context.window_manager;
  29.         self.DLL=None;
  30.     i&#24038;&#21491;&#19981;&#21516;&#28857;=0;i&#21491;&#28857;&#25214;&#19981;&#21040;&#24038;&#28857;&#25968;=0;b&#24050;&#32463;&#24377;&#20986;&#31383;&#21475;=False ;
  31.    
  32. def  b&#916;&#916;&#27714;&#22278;&#24515;&#19982;&#21322;&#24452;&#22352;&#26631;&#32473;f3&#22235;(f2&#22836;,f2&#23614;,f2&#38388;,f3XYR):
  33.     k1=k2=0;
  34.     x1=(f2&#22836;[0]);y1=(f2&#22836;[1]);x2=(f2&#23614;[0]);y2=(f2&#23614;[1]);x3=(f2&#38388;[0]);y3=(f2&#38388;[1]);
  35.     #print("x1",x1,"y1",y1,"x2",x2,"y2",y2,"x3",x3,"y3",y3,)
  36.     if((y1==y2) and (y2==y3)):
  37.         #print("&#19977;&#28857;&#19981;&#26500;&#25104;&#22278;\n");        
  38.         return  False ;
  39.        
  40.     if((y1!=y2)and(y2!=y3)):
  41.         k1=(x2-x1)/(y2-y1);
  42.         k2=(x3-x2)/(y3-y2);
  43.         #print("k1=%f  k2=%f\n",k1,k2);
  44.        
  45.     if((0<=abs(k1-k2)) and (abs(k1-k2)<0.002)) :
  46.        
  47.         #print("&#19977;&#28857;&#19981;&#26500;&#25104;&#22278;\n");
  48.         #&#916;&#916;&#24179;&#22343;&#25289;&#30452;()
  49.         return False  ;
  50.        
  51.     a=(2*(x2-x1));
  52.     b=(2*(y2-y1));
  53.     #print("a=%d\n",a,"b=%d\n",b);
  54.     c=(x2*x2+y2*y2-x1*x1-y1*y1);
  55.     d=(2*(x3-x2));
  56.     e=(2*(y3-y2));
  57.     f=(x3*x3+y3*y3-x2*x2-y2*y2);
  58.  
  59.     x=(b*f-e*c)/(b*d-e*a);
  60.     y=(d*c-a*f)/(b*d-e*a);
  61.  
  62.     #print("&#22278;&#24515;x&#20026;%d\n", x, "&#22278;&#24515;y&#20026;%d\n",y);
  63.     r=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
  64.     #print("&#21322;&#24452;&#20026;%d\n", r);
  65.     f3XYR[0]=x;f3XYR[1]=y;f3XYR[2]=r;
  66.     # return  f3XYR;
  67.     return True ;
  68.        
  69.    
  70. ##---------------------------------------------------------------------------------------
  71. def  f&#916;&#916;&#30693;&#19977;&#28857;&#27714;&#23545;&#35282;&#24359;(f2&#22836;, f2&#23614;, f2&#22278;&#24515;):  
  72.     f&#36793;&#19968;=sqrt( pow((f2&#22836;[0]-f2&#22278;&#24515;[0]),2)+pow((f2&#22836;[1]-f2&#22278;&#24515;[1]),2) ) ;
  73.     f&#36793;&#20108;=sqrt( pow((f2&#23614;[0]-f2&#22278;&#24515;[0]),2)+pow((f2&#23614;[1]-f2&#22278;&#24515;[1]),2) );
  74.     f&#23545;&#36793;=sqrt( pow((f2&#22836;[0]-f2&#23614;[0]),2)+pow((f2&#22836;[1]-f2&#23614;[1]),2));
  75.     cosA=( f&#36793;&#19968;*f&#36793;&#19968;+f&#36793;&#20108;*f&#36793;&#20108;-f&#23545;&#36793;*f&#23545;&#36793;)/(2*f&#36793;&#19968;*f&#36793;&#20108; );##&#35282;&#24230;&#21482;&#33021;&#20174;0&#21040;180&#24230; &#27809;&#26377;&#36127;&#35282;&#24230;
  76.     f&#23545;&#24359;=acos(cosA );##cos&#20540; &#20174;-1&#21040;1
  77.    
  78.     #print("f&#23545;&#24359;C++&#65309;%d\n", f&#23545;&#24359;, "cosA&#65309;%d\n",cosA);
  79.     return f&#23545;&#24359;;##&#27714;&#30340;&#24359;&#27704;&#36828;&#23567;&#20110;&#21322;&#22278;
  80.  
  81. ##---------------------------------------------------------------------------
  82. def  atan3(x, y):##&#27714;&#20986;360&#24230;&#20869;&#27491;&#24359;&#24230;  
  83.     z=pow(x,2)+pow(y,2);
  84.     if(z==0):
  85.         z==0.000000001;
  86.        
  87.     if(y>=0 ):##&#22312;&#8593;
  88.         return acos(x/sqrt(z));
  89.     else:##(y<0and x<=0)##&#22312;&#8601;    
  90.         #print("y<=0\n");
  91.         c=acos(x/sqrt(z));
  92.         return c+(PI-c)*2;
  93.        
  94. def  f&#916;&#916;&#27714;&#20004;&#30690;&#37327;&#22841;&#35282;&#24359;&#27491;(f2&#28857;&#19968;, f2&#28857;&#20108;):  
  95.     # f2&#22278;&#24515;=0.0f,0.0f; f2&#22836;
  96.     f&#23545;&#24359;&#19968;=atan3(f2&#28857;&#19968;[0],f2&#28857;&#19968;[1]);##  Y#X
  97.     f&#23545;&#24359;&#20108;=atan3(f2&#28857;&#20108;[0],f2&#28857;&#20108;[1]);
  98.     return abs(f&#23545;&#24359;&#19968;-f&#23545;&#24359;&#20108;);
  99.    
  100. def &#916;&#916;&#27714;&#35282;&#23545;&#36793;&#30690;&#37327;(f2&#37051;&#36793;&#30690;&#37327;, f2&#26012;&#36793;&#30690;&#37327;, f2&#23545;&#36793;&#30690;&#37327;):##&#27714;&#24471;&#23545;&#36793;&#30340;&#30690;&#37327;
  101.     f&#22841;&#35282;&#24359;=f&#916;&#916;&#27714;&#20004;&#30690;&#37327;&#22841;&#35282;&#24359;&#27491;(f2&#37051;&#36793;&#30690;&#37327;,f2&#26012;&#36793;&#30690;&#37327;);
  102.     f&#37051;&#36793;&#38271;=sqrt(pow(f2&#37051;&#36793;&#30690;&#37327;[0],2)+pow(f2&#37051;&#36793;&#30690;&#37327;[1],2));    
  103.     f&#26012;&#36793;&#38271;=sqrt(pow(f2&#26012;&#36793;&#30690;&#37327;[0],2)+pow(f2&#26012;&#36793;&#30690;&#37327;[1],2));    
  104.     f&#23545;&#36793;&#38271;=f&#26012;&#36793;&#38271;*cos(f&#22841;&#35282;&#24359;);
  105.     f&#37051;&#36793;&#27604;&#20363;=f&#23545;&#36793;&#38271;/f&#37051;&#36793;&#38271;;
  106.     f2&#23545;&#36793;&#30690;&#37327;[0]=f2&#37051;&#36793;&#30690;&#37327;[0]*f&#37051;&#36793;&#27604;&#20363;;f2&#23545;&#36793;&#30690;&#37327;[1]=f2&#37051;&#36793;&#30690;&#37327;[1]*f&#37051;&#36793;&#27604;&#20363;;
  107.     #memcpy(f2&#23545;&#36793;&#30690;&#37327;,Lf2uv&#36873;&#24207;[i&#24207;&#30495;],sizeof(f2&#23545;&#36793;&#30690;&#37327;));
  108.    
  109. #---------------------------------------------------------------------------------------
  110.  
  111. def  f&#916;&#916;&#27714;&#21152;&#24359;&#27491;&#30495;(f2&#22836;, f2&#22278;&#24515;, f&#21152;&#24359;&#27491;, b&#39034;):    
  112.     #fX&#22836;&#28187;,fY&#22836;&#28187;,f&#22836;&#24359;&#27491;,f&#21152;&#24359;&#27491;&#30495;;
  113.     fX&#22836;&#28187;=f2&#22836;[0]-f2&#22278;&#24515;[0]; fY&#22836;&#28187;=f2&#22836;[1]-f2&#22278;&#24515;[1];
  114.     f2XY=[fX&#22836;&#28187;,fY&#22836;&#28187;];
  115.     f&#22836;&#24359;&#27491;=atan3(f2XY[0],f2XY[1]);
  116.     #print("f&#22836;&#24359;&#27491;%d\n", f&#22836;&#24359;&#27491;,  "&#35282;%d\n",degrees(f&#22836;&#24359;&#27491;))
  117.     if( b&#39034;):      
  118.         if((f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)<PI2):f&#21152;&#24359;&#27491;&#30495;=f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;;
  119.         if((f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)>PI2):f&#21152;&#24359;&#27491;&#30495;=(f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)-PI2;
  120.         if((f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)>PI2*2):f&#21152;&#24359;&#27491;&#30495;=(f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)-PI2*2;
  121.         else:f&#21152;&#24359;&#27491;&#30495;=(f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)-PI2;
  122.        
  123.     else:
  124.         if((f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)<PI2):f&#21152;&#24359;&#27491;&#30495;=-f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;;
  125.         if((f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)>PI2):f&#21152;&#24359;&#27491;&#30495;=(-f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)-PI2;
  126.         if((f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)>PI2*2):f&#21152;&#24359;&#27491;&#30495;=(-f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)-PI2*2;
  127.         else:f&#21152;&#24359;&#27491;&#30495;=(-f&#21152;&#24359;&#27491;+f&#22836;&#24359;&#27491;)-PI2;
  128.        
  129.     if (f&#21152;&#24359;&#27491;&#30495;<0):##&#22914;&#26524;  &#24359;&#20026;&#36127;
  130.         f&#21152;&#24359;&#27491;&#30495;=f&#21152;&#24359;&#27491;&#30495;+PI2;
  131.     #print("f&#21152;&#24359;&#27491;&#30495;%d\n", f&#21152;&#24359;&#27491;&#30495;,"&#35282;%d\n",degrees(f&#21152;&#24359;&#27491;&#30495;) , "f&#21152;&#24359;&#27491;%d\n", f&#21152;&#24359;&#27491;,"&#35282;%d\n",degrees(f&#21152;&#24359;&#27491;) )
  132.     return f&#21152;&#24359;&#27491;&#30495;;
  133.    
  134.    
  135. ####################
  136. def  &#916;&#916;&#21644;&#32473;f2&#19977;(f2&#19968;,  f2&#20108;,  f2&#19977;): f2&#19977;[0]=f2&#19968;[0]+f2&#20108;[0];f2&#19977;[1]=f2&#19968;[1]+f2&#20108;[1];
  137. def  &#916;&#916;&#24046;&#32473;f2&#19977;(f2&#19968;,  f2&#20108;,  f2&#19977;):f2&#19977;[0]=f2&#19968;[0]-f2&#20108;[0];f2&#19977;[1]=f2&#19968;[1]-f2&#20108;[1];
  138. def  &#916;&#916;&#24046;&#32473;f3&#19977;(f3&#19968;,  f3&#20108;,  f3&#19977;):f3&#19977;[0]=f3&#19968;[0]-f3&#20108;[0];f3&#19977;[1]=f3&#19968;[1]-f3&#20108;[1];f3&#19977;[2]=f3&#19968;[2]-f3&#20108;[2];
  139. def  &#916;&#916;&#31215;&#32473;f2&#19977;(f2&#19968;,  f,  f2&#19977;): f2&#19977;[0]=f2&#19968;[0]*f;f2&#19977;[1]=f2&#19968;[1]*f;
  140. def  &#916;&#916;&#22797;f2&#19968;&#21046;f2&#20108;(f2&#19968;,  f2&#20108;): f2&#20108;[0]=f2&#19968;[0];f2&#20108;[1]=f2&#19968;[1];
  141.  
  142. ##--------&#25968;&#23398;&#20844;&#24335;--------------------------------------------------------------------------
  143. def f&#916;&#916;&#27714;&#20004;&#28857;UV&#38271;(f2&#19968;,  f2&#20108;):  
  144.     f2&#19977;=[None,None];f2&#19977;[0]=f2&#19968;[0]-f2&#20108;[0];f2&#19977;[1]=f2&#19968;[1]-f2&#20108;[1];
  145.     fUV&#36317;&#31163;=sqrt(pow(f2&#19977;[0],2)+pow(f2&#19977;[1],2));
  146.     return fUV&#36317;&#31163;;
  147.    
  148.  
  149. def f&#916;&#916;&#27714;&#20004;&#28857;&#23545;&#35282;&#32447;&#38271;(f3&#19968;,  f3&#20108;):
  150.     f3&#38271;=[None,None,None];f3&#38271;[0]=f3&#19968;[0]-f3&#20108;[0];f3&#38271;[1]=f3&#19968;[1]-f3&#20108;[1];f3&#38271;[2]=f3&#19968;[2]-f3&#20108;[2];
  151.     f&#23545;&#35282;&#32447;&#38271;=sqrt(pow(f3&#38271;[0],2)+pow(f3&#38271;[1],2)+pow(f3&#38271;[2],2));
  152.     return f&#23545;&#35282;&#32447;&#38271;;
  153.    
  154. #  operator + ( &f2&#19968;, &f2&#20108;)return  f2&#19977;[f2&#19968;[0]+f2&#20108;[0]], f2&#19977;[f2&#19968;[1]+f2&#20108;[1]]
  155. ####################
  156. def &#916;&#916;&#30693;&#24359;&#27714;&#28857;&#32473;f2&#22235;&#30495;(f&#21152;&#24359;&#27491;&#30495;, f&#33550;,  f2&#22278;&#24515;, f2&#28857;&#30495;):
  157.     fX=f&#33550;*cos(f&#21152;&#24359;&#27491;&#30495;);fY=f&#33550;*sin(f&#21152;&#24359;&#27491;&#30495;);
  158.     f2&#28857;&#20551;=[fX,fY];
  159.     #print("fX", fX,"fY", fY )
  160.     if (fX and fY):  
  161.         #f2&#28857;&#20551;[2]=fX,fY;
  162.         &#916;&#916;&#21644;&#32473;f2&#19977;(f2&#28857;&#20551;,f2&#22278;&#24515;,f2&#28857;&#30495;);
  163.         #print("f2&#20837;&#28857;&#20551;%d\n", f2&#28857;&#20551;, "f2&#20837;&#28857;&#30495;%d\n",f2&#28857;&#30495;);
  164.     #else          
  165.         #print("&#27714;&#19981;&#21040;&#28857;f2&#30495;");
  166.    
  167.    
  168. def  b&#916;&#916;&#26816;&#27979;&#24635;&#24359;&#26159;&#21542;&#39034;&#26102;&#38024;  (f2&#22836;, f2&#38388;, f2&#23614;, f2&#22278;&#24515; ):
  169.     f2&#28187;=[None,None];
  170.     &#916;&#916;&#24046;&#32473;f2&#19977;(f2&#22836;,f2&#22278;&#24515;,f2&#28187;);f&#22836;&#24359;&#27491;=atan3(f2&#28187;[0],f2&#28187;[1]);
  171.     &#916;&#916;&#24046;&#32473;f2&#19977;(f2&#38388;,f2&#22278;&#24515;,f2&#28187;);f&#20013;&#24359;&#27491;=atan3(f2&#28187;[0],f2&#28187;[1]);
  172.     &#916;&#916;&#24046;&#32473;f2&#19977;(f2&#23614;,f2&#22278;&#24515;,f2&#28187;);f&#23614;&#24359;&#27491;=atan3(f2&#28187;[0],f2&#28187;[1]);
  173.     if ((f&#22836;&#24359;&#27491;<f&#20013;&#24359;&#27491; and f&#20013;&#24359;&#27491;<f&#23614;&#24359;&#27491;)or( f&#20013;&#24359;&#27491;<f&#23614;&#24359;&#27491; and f&#23614;&#24359;&#27491;<f&#22836;&#24359;&#27491; )or( f&#23614;&#24359;&#27491;<f&#22836;&#24359;&#27491; and f&#22836;&#24359;&#27491; <f&#20013;&#24359;&#27491;  )):
  174.        b&#39034;=True ;
  175.     else:
  176.        b&#39034;=False ;
  177.     return b&#39034;;
  178.    
  179. ##---------------------------------------------------------------------------------------
  180. def &#916;&#916;UV&#24179;&#28369;&#32473;Lf2&#20843;   (ii&#36873;&#28857;&#24635;&#25968;, f&#36317;&#31163;&#21442;&#25968; , Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;, Lcf3&#32593;&#28857;Co&#24207;, Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;, Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;, Lf2uv&#36873;&#24207;, Lcf2UV&#24212;&#30495;&#24207;):
  181.     f3&#24046;=[None,None,None];f2&#21521;UV&#27573;&#21069;&#20943;&#21518;&#23454;=[None,None];f2UV&#21521;&#20559;&#31227;&#20551;=[None,None];f2UV&#24212;&#30495;=[None,None];
  182.     f&#24179;&#22343;uv&#38271;=0;f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;=0;f&#27604;&#20363;=0;f&#32047;&#20551;&#38271;&#27491;=0;f&#32047;&#27492;uv&#38271;&#27491;&#20551;=0;f&#27492;&#28857;uv&#23454;&#20943;&#24212;&#38271;&#27491;=0; f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;=0;f&#32047;uv&#36317;&#31163;&#27491;=0;
  183.     global f&#24179;&#34892;&#32593;&#24635;&#38271;G;
  184.     # *Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;=Lf&#20020;&#26102;&#19968;,*Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;=Lf&#20020;&#26102;&#20108;;##&#24517;&#39035;&#35201;&#36825;&#26679;&#25165;&#19981;&#20250;&#20986;&#38169;  
  185.     ##----&#27714;uv&#24179;&#22343;&#38271;---------------------------------------------------------------
  186.     for i in range( ii&#36873;&#28857;&#24635;&#25968;):##
  187.         if(i==0):continue;
  188.         i&#27492;&#24207;=i;i&#21069;&#24207;=i-1;
  189.         f&#36825;&#27573;uv&#36317;&#31163;&#27491;=f&#916;&#916;&#27714;&#20004;&#28857;UV&#38271;(Lf2uv&#36873;&#24207;[i&#27492;&#24207;],Lf2uv&#36873;&#24207;[i&#21069;&#24207;]);
  190.         Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;[i]=f&#36825;&#27573;uv&#36317;&#31163;&#27491;;###print("Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;=%f\n",Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;[i]);      
  191.         f&#32047;uv&#36317;&#31163;&#27491;+=f&#36825;&#27573;uv&#36317;&#31163;&#27491;;
  192.         Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[i]=f&#32047;uv&#36317;&#31163;&#27491;;####print("f&#32047;&#27492;&#27573;uv&#38271;&#27491;&#23454;=%f\n",Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[i]);
  193.                
  194.         &#916;&#916;&#24046;&#32473;f3&#19977;(Lcf3&#32593;&#28857;Co&#24207;[i&#27492;&#24207;],Lcf3&#32593;&#28857;Co&#24207;[i&#21069;&#24207;],f3&#24046;);
  195.         f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;=sqrt( pow(f3&#24046;[0],2)+pow(f3&#24046;[1],2)+pow(f3&#24046;[2],2) );
  196.         #print("f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;%f\n",f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;);
  197.         f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;+=f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;;
  198.         Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[i]=f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;;
  199.        
  200.     #----------------------------------------------------------------------------
  201.     #print("ii&#36873;&#28857;&#24635;&#25968;DLL22==%d\n",ii&#36873;&#28857;&#24635;&#25968;);
  202.     f&#24179;&#22343;uv&#38271;=Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[ii&#36873;&#28857;&#24635;&#25968;-1]/(ii&#36873;&#28857;&#24635;&#25968;-1);
  203.     f&#24635;UV&#27604;&#24179;&#34892;&#32593;=Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[ii&#36873;&#28857;&#24635;&#25968;-1]/Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[ii&#36873;&#28857;&#24635;&#25968;-1];##&#24635;uv&#38271;:&#24635;&#32593;&#38271;
  204.     f&#24179;&#34892;&#32593;&#24635;&#38271;G=Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[ii&#36873;&#28857;&#24635;&#25968;-1];
  205.  
  206.     #print("uv&#24635;&#38271;%f &#32593;&#24635;&#38271;%f\n",Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[ii&#36873;&#28857;&#24635;&#25968;-1],Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[ii&#36873;&#28857;&#24635;&#25968;-1]);
  207.     #print("f&#24179;&#22343;uv&#38271;%f\n",f&#24179;&#22343;uv&#38271;);
  208.     #print("f&#24635;UV&#27604;&#24179;&#34892;&#32593;%f\n",f&#24635;UV&#27604;&#24179;&#34892;&#32593;);##&#23545;
  209.  
  210.     #print(" Lf&#27599;&#27573;&#32047;&#38271;&#27491;&#36127;&#19968;=%f\n", Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[-1] );
  211.     #print(" Lf&#27599;&#27573;&#32047;&#38271;&#27491;&#26368;&#21518;=%f\n", Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[ii&#36873;&#28857;&#24635;&#25968;-1] );
  212.     #print("f&#24179;&#22343;uv&#38271;=%f\n\n",f&#24179;&#22343;uv&#38271; );
  213.     #print("Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[-1]%d ii&#36873;&#28857;&#24635;&#25968;%d\n",Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[-1],ii&#36873;&#28857;&#24635;&#25968;-1);
  214.     #----------------------------------------------------------------------------
  215.     for i&#24207;&#30495; in range( ii&#36873;&#28857;&#24635;&#25968;):
  216.         if(i&#24207;&#30495;==0 or i&#24207;&#30495;==ii&#36873;&#28857;&#24635;&#25968;-1 ):    
  217.             #memcpy(Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;],Lf2uv&#36873;&#24207;[i&#24207;&#30495;],sizeof(Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;]));##&#36825;&#20010;&#35201;&#27880;&#24847;&#19981;&#33021;sizeof(Lcf2UV&#24212;&#30495;&#24207;) &#25110;sizeof(Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;])*2
  218.             Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;]=Lf2uv&#36873;&#24207;[i&#24207;&#30495;];
  219.             continue;
  220.            
  221.         i&#21069;&#24207;&#30495;=i&#24207;&#30495;-1;
  222.         #if (i&#21069;&#24207;&#30495;<0)i&#21069;&#24207;&#30495;=0;f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;=0;
  223.         #else
  224.         #print("fff",Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;);
  225.         f&#27492;&#27573;uv&#24212;&#38271;=(Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[i&#24207;&#30495;]-Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[i&#21069;&#24207;&#30495;]) *f&#24635;UV&#27604;&#24179;&#34892;&#32593;;
  226.         f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;+=( f&#24179;&#22343;uv&#38271;+( f&#27492;&#27573;uv&#24212;&#38271;-f&#24179;&#22343;uv&#38271; ) *f&#36317;&#31163;&#21442;&#25968; );
  227.         #print("f&#36317;&#31163;&#21442;&#25968;%f\n",f&#36317;&#31163;&#21442;&#25968;);
  228.         #print("Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;&#21069;%f      Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;&#27492;%f\n",Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[i&#21069;&#24207;&#30495;],Lf&#32047;&#27599;&#27573;&#32593;&#38271;&#27491;[i&#24207;&#30495;]);
  229.         #print("f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;%f &#24207;&#30495;%d\n",f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;,i&#24207;&#30495;);
  230.         #print("------------------\n");
  231.        
  232.         for i&#24207;&#24212; in range( ii&#36873;&#28857;&#24635;&#25968;):      
  233.             if(i&#24207;&#24212;==0):continue;
  234.             i&#21069;&#24207;&#20551;=i&#24207;&#24212;-1;
  235.             #if (i&#21069;&#24207;&#20551;<0)i&#21069;&#24207;&#20551;=0;
  236.             #print("f&#32047;&#27492;uv&#38271;&#27491;&#20551;%f\n",f&#32047;&#27492;uv&#38271;&#27491;&#20551;);##&#27491;&#30830;    
  237.             f&#27492;&#28857;uv&#23454;&#20943;&#24212;&#38271;&#27491;=Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[i&#24207;&#24212;]-f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;;        
  238.             #print("Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[i&#24207;&#24212;]=%f  f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;=%f\n",Lf&#32047;&#27599;&#27573;uv&#38271;&#27491;&#23454;[i&#24207;&#24212;],f&#32047;&#27492;&#28857;uv&#24212;&#38271;&#27491;);
  239.            
  240.             if(f&#27492;&#28857;uv&#23454;&#20943;&#24212;&#38271;&#27491;>=0):
  241.                    
  242.                 f&#27604;&#20363;=f&#27492;&#28857;uv&#23454;&#20943;&#24212;&#38271;&#27491;/Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;[i&#24207;&#24212;];##&#27604;&#20363; &#20915;&#23450;uv&#24212;&#20559;&#31227;&#37327;
  243.                 #print("f&#27492;&#28857;uv&#23454;&#20943;&#24212;&#38271;&#27491;=%f     Lf&#27599;&#27573;&#38271;&#27491;i&#24207;&#20551;=%f\n",f&#27492;&#28857;uv&#23454;&#20943;&#24212;&#38271;&#27491;,Lf&#27599;&#27573;uv&#38271;&#27491;&#23454;[i&#24207;&#24212;]);
  244.                 #print("f&#27604;&#20363;%f\n",f&#27604;&#20363;);    
  245.                 &#916;&#916;&#24046;&#32473;f2&#19977;(Lf2uv&#36873;&#24207;[i&#21069;&#24207;&#20551;],Lf2uv&#36873;&#24207;[i&#24207;&#24212;],f2&#21521;UV&#27573;&#21069;&#20943;&#21518;&#23454;);&#916;&#916;&#31215;&#32473;f2&#19977;(f2&#21521;UV&#27573;&#21069;&#20943;&#21518;&#23454;,f&#27604;&#20363;,f2UV&#21521;&#20559;&#31227;&#20551;);
  246.                 #print("Lf2uv&#36873;&#24207;[i&#21069;&#24207;&#20551;]%f  %f\n",Lf2uv&#36873;&#24207;[i&#21069;&#24207;&#20551;][0],Lf2uv&#36873;&#24207;[i&#21069;&#24207;&#20551;][1]);###print("Lf2uv&#36873;&#24207;[i&#24207;&#24212;]%f  %f\n",Lf2uv&#36873;&#24207;[i&#24207;&#24212;][0],Lf2uv&#36873;&#24207;[i&#24207;&#24212;][1]);
  247.                 &#916;&#916;&#21644;&#32473;f2&#19977;(Lf2uv&#36873;&#24207;[i&#24207;&#24212;],f2UV&#21521;&#20559;&#31227;&#20551;,Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;]);##&#916;&#916;&#22797;f2&#19968;&#21046;f2&#20108;(f2UV&#24212;&#30495;,Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;]);
  248.                 #print("f2UV&#21521;&#20559;&#31227;&#20551;%f     %f\n",f2UV&#21521;&#20559;&#31227;&#20551;[0],f2UV&#21521;&#20559;&#31227;&#20551;[1]);
  249.                 #print("Lcf2UV&#24212;&#30495;&#24207;%f    %f   i&#24207;&#30495;  %d  i&#24207;&#24212;  %d\n",Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;][0],Lcf2UV&#24212;&#30495;&#24207;[i&#24207;&#30495;][1],i&#24207;&#30495;,i&#24207;&#24212;);
  250.                 break;
  251.                
  252.                
  253.  
  254. ##---------------------------------------------------------------------------------------
  255. def  &#916;&#916;&#25289;&#30452;UV&#32473;Lf2&#22235;(ii&#36873;&#28857;&#24635;&#25968;, f2UV&#22836;, f2UV&#23614;, Lcf2UV&#24212;&#30495;&#24207;):
  256.     f2UV&#21521;&#20559;&#31227;&#20551;=[None,None];f2UV&#24046;=[None,None];f2UV&#31215;=[None,None];
  257.     &#916;&#916;&#24046;&#32473;f2&#19977;(f2UV&#23614;,f2UV&#22836;,f2UV&#24046;);##&#27714;&#20174;&#38646;&#28857;&#24320;&#22987;&#30340;&#32447;&#24635;&#38271;&#30690;&#37327;
  258.     f&#24635;&#38271;=f&#916;&#916;&#27714;&#20004;&#28857;UV&#38271;(f2UV&#22836;,f2UV&#23614;);  f&#24179;&#22343;uv&#38271;=f&#24635;&#38271;/(ii&#36873;&#28857;&#24635;&#25968;-1);
  259.     f&#24179;&#22343;&#38271;&#38500;&#20197;&#24635;&#38271;=f&#24179;&#22343;uv&#38271;/f&#24635;&#38271;;
  260.     for i in range(ii&#36873;&#28857;&#24635;&#25968;):
  261.         &#916;&#916;&#31215;&#32473;f2&#19977;(f2UV&#24046;,f&#24179;&#22343;&#38271;&#38500;&#20197;&#24635;&#38271;*i,f2UV&#31215;);##&#20174;&#38646;&#28857;&#24320;&#22987;&#30340;&#24403;&#21069;&#28857;&#32447;&#30690;&#37327;
  262.         &#916;&#916;&#21644;&#32473;f2&#19977;(f2UV&#31215;,f2UV&#22836;,Lcf2UV&#24212;&#30495;&#24207;[i]);##&#31227;&#21160;&#21040;uv&#22836;&#30340;&#24403;&#21069;&#28857;&#32447;&#30690;&#37327;
  263.  
  264.     ##&#916;&#916;&#25289;&#30452;UV&#32473;Lf2&#22235;
  265.    
  266.    
  267. def  f2&#916;&#916;&#27714;f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;(ii&#36873;&#28857;&#24635;&#25968;,i&#24635;&#23454;&#38469;&#23618;&#25968;,Lcf2UV&#24212;&#30495;&#24207;, Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;, cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;):
  268.     f2&#37051;&#36793;&#30690;&#37327;=[None,None];f2&#26012;&#36793;&#30690;&#37327;=[None,None];f2&#23545;&#36793;&#30690;&#37327;=[None,None];
  269.     global f&#24179;&#34892;&#32593;&#24635;&#38271;G;
  270.    
  271.     &#916;&#916;&#24046;&#32473;f2&#19977;(Lcf2UV&#24212;&#30495;&#24207;[ii&#36873;&#28857;&#24635;&#25968;-1],Lcf2UV&#24212;&#30495;&#24207;[0],f2&#37051;&#36793;&#30690;&#37327;);#&#21363;&#31532;&#19968;&#34892;&#30340;&#24635;&#38271;&#30690;&#37327;
  272.     &#916;&#916;&#24046;&#32473;f2&#19977;(cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;,Lcf2UV&#24212;&#30495;&#24207;[0],f2&#26012;&#36793;&#30690;&#37327;);
  273.     &#916;&#916;&#27714;&#35282;&#23545;&#36793;&#30690;&#37327;(f2&#37051;&#36793;&#30690;&#37327;,f2&#26012;&#36793;&#30690;&#37327;,f2&#23545;&#36793;&#30690;&#37327;);
  274.     f2&#22402;&#30452;&#30456;&#20132;&#20301;&#32622;=[None,None];&#916;&#916;&#21644;&#32473;f2&#19977;(Lcf2UV&#24212;&#30495;&#24207;[0],f2&#23545;&#36793;&#30690;&#37327;,f2&#22402;&#30452;&#30456;&#20132;&#20301;&#32622;);#&#25226;f2&#23545;&#36793;&#30690;&#37327; &#31227;&#21040;&#23454;&#38469;&#20301;&#32622;
  275.     f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;=[None,None];&#916;&#916;&#24046;&#32473;f2&#19977;(cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;,f2&#22402;&#30452;&#30456;&#20132;&#20301;&#32622;,f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;);
  276.    
  277.     #----&#27714;&#34394;&#25311;&#24212;&#20559;&#31227;&#30690;&#37327;----------------------------------------------------------------------
  278.     if(bpy.context.window_manager.bpXYwm  and f&#24179;&#34892;&#32593;&#24635;&#38271;G):
  279.         f&#24635;&#20559;&#31227;&#30690;&#37327;&#38271;=f&#916;&#916;&#27714;&#20004;&#28857;UV&#38271;([0,0],  f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;);
  280.         f&#22402;&#30452;&#32593;&#24635;&#38271;=Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[i&#24635;&#23454;&#38469;&#23618;&#25968;-2];
  281.         f&#22402;&#30452;&#32593;&#27604;&#24179;&#34892;&#32593;=f&#22402;&#30452;&#32593;&#24635;&#38271;/f&#24179;&#34892;&#32593;&#24635;&#38271;G;f&#24179;&#34892;UV&#24635;&#38271;=f&#916;&#916;&#27714;&#20004;&#28857;UV&#38271;([0,0],  f2&#37051;&#36793;&#30690;&#37327;);
  282.         f&#34394;&#25311;&#20559;&#31227;&#27604;&#23454;&#24212;&#20559;&#31227;=(f&#24179;&#34892;UV&#24635;&#38271;*f&#22402;&#30452;&#32593;&#27604;&#24179;&#34892;&#32593;)/f&#24635;&#20559;&#31227;&#30690;&#37327;&#38271;;
  283.         #print("TOTAL UV==",f&#24635;&#20559;&#31227;&#30690;&#37327;&#38271;,f&#24179;&#34892;UV&#24635;&#38271;);
  284.         f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;=[f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;[0]*f&#34394;&#25311;&#20559;&#31227;&#27604;&#23454;&#24212;&#20559;&#31227;,f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;[1]*f&#34394;&#25311;&#20559;&#31227;&#27604;&#23454;&#24212;&#20559;&#31227;];
  285.         #print("TOTAL OFFSET==",f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;);
  286.        
  287.     return f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;;
  288.    
  289. def &#916;&#916;&#20256;&#25773;&#27599;&#34892;&#24179;&#34892;&#28857;(ii&#36873;&#28857;&#24635;&#25968;,i&#24635;&#23454;&#38469;&#23618;&#25968;, ii&#24403;&#21069;&#23618;&#25968;,f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;, Lcf2UV&#24212;&#30495;&#24207;, b&#26159;&#21542;&#22402;&#30452;,Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491; , Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;):
  290.  
  291.     f2&#27599;&#20010;&#32452;&#20559;&#31227;&#30690;&#37327;=[0.0,0.0];
  292.     if(b&#26159;&#21542;&#22402;&#30452;):
  293.         #print("Lay1 LayAll",ii&#24403;&#21069;&#23618;&#25968;,i&#24635;&#23454;&#38469;&#23618;&#25968;,Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;);
  294.         f&#27492;&#27573;&#27604;&#20363;=Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[ii&#24403;&#21069;&#23618;&#25968;-1]/Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[i&#24635;&#23454;&#38469;&#23618;&#25968;-2];#
  295.         f2&#27599;&#20010;&#32452;&#20559;&#31227;&#30690;&#37327;[0]=f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;[0]*f&#27492;&#27573;&#27604;&#20363;;f2&#27599;&#20010;&#32452;&#20559;&#31227;&#30690;&#37327;[1]=f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;[1]*f&#27492;&#27573;&#27604;&#20363;;    
  296.     else:
  297.         f2&#27599;&#20010;&#32452;&#20559;&#31227;&#30690;&#37327;[0]=f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;[0]/(i&#24635;&#23454;&#38469;&#23618;&#25968;-1)*ii&#24403;&#21069;&#23618;&#25968;;f2&#27599;&#20010;&#32452;&#20559;&#31227;&#30690;&#37327;[1]=f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;[1]/(i&#24635;&#23454;&#38469;&#23618;&#25968;-1)*ii&#24403;&#21069;&#23618;&#25968;;
  298.  
  299.     for i&#32452; in range(ii&#36873;&#28857;&#24635;&#25968;):    
  300.         &#916;&#916;&#21644;&#32473;f2&#19977;(Lcf2UV&#24212;&#30495;&#24207;[i&#32452;],f2&#27599;&#20010;&#32452;&#20559;&#31227;&#30690;&#37327;,Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;[i&#32452;]);
  301.  
  302.    
  303. ##---------------------------------------------------------------------------------------
  304. def  &#916;&#916;&#33258;&#21160;&#23545;&#40784;UV&#32473;Lf2&#22235;(ii&#36873;&#28857;&#24635;&#25968;, f2UV&#22836;, f2UV&#23614;, Lcf2UV&#24212;&#30495;&#24207;) :
  305.     f2UV&#21521;&#20559;&#31227;&#20551;=[None,None];f2UV&#24046;=[None,None];f2UV&#31215;=[None,None];f&#24635;&#38271;=0.00000001;
  306.     &#916;&#916;&#24046;&#32473;f2&#19977;(f2UV&#23614;,f2UV&#22836;,f2UV&#24046;);#&#27714;&#20174;&#38646;&#28857;&#24320;&#22987;&#30340;&#32447;&#24635;&#38271;&#30690;&#37327;
  307.     #print("f2UV&#22836;&#21069; %f    %f\n",f2UV&#22836;[0],f2UV&#22836;[1]);
  308.     if(f2UV&#24046;[0]==0):
  309.         f2UV&#24046;[0]=0.0001;
  310.     fAtan=(f2UV&#24046;[1]/f2UV&#24046;[0]);
  311.     #print("f2UV&#24046;&#21069;%f  %f    ",f2UV&#24046;[0],f2UV&#24046;[1]);
  312.  
  313.     if(1>fAtan and fAtan >=-1):##&#22312;&#8592;&#8594;
  314.         f&#24635;&#38271;=abs(f2UV&#24046;[0]);f2UV&#22836;[1]+=(f2UV&#24046;[1]/2);f2UV&#24046;[1]=0;##&#24402;&#38646;UVx &#25226;uv&#22836;&#31227;&#21160;&#22836;&#23614;&#20004;&#28857;&#36724;&#30340;&#20013;&#38388;#print("&#22312;&#8592;&#8594;     ");      
  315.     else:#&#22312;&#8593;&#8595;
  316.         f&#24635;&#38271;=abs(f2UV&#24046;[1]);f2UV&#22836;[0]+=(f2UV&#24046;[0]/2);f2UV&#24046;[0]=0;##&#24402;&#38646;UVy#print("&#22312;&#8593;&#8595;    ");
  317.                
  318.     f&#24179;&#22343;uv&#38271;=f&#24635;&#38271;/(ii&#36873;&#28857;&#24635;&#25968;-1);
  319.     f&#24179;&#22343;&#38271;&#38500;&#20197;&#24635;&#38271;=f&#24179;&#22343;uv&#38271;/f&#24635;&#38271;;####print("f&#24179;&#22343;&#38271;&#38500;&#20197;&#24635;&#38271;  &#19982;&#24635;&#38271;%f  %f\n",f&#24179;&#22343;&#38271;&#38500;&#20197;&#24635;&#38271;,f&#24635;&#38271;);
  320.     #print("f2UV&#24046;&#21518;%f  %f\n",f2UV&#24046;[0],f2UV&#24046;[1]);
  321.     #print("f2UV&#22836;&#21518; %f    %f\n",f2UV&#22836;[0],f2UV&#22836;[1]);
  322.    
  323.     for i in range( ii&#36873;&#28857;&#24635;&#25968;):
  324.         &#916;&#916;&#31215;&#32473;f2&#19977;(f2UV&#24046;,f&#24179;&#22343;&#38271;&#38500;&#20197;&#24635;&#38271;*i,f2UV&#31215;);##&#20174;&#38646;&#28857;&#24320;&#22987;&#30340;&#24403;&#21069;&#28857;&#32447;&#30690;&#37327;    
  325.         #print("f2UV&#31215;=%f  %f\n",f2UV&#31215;[0],f2UV&#31215;[1]);
  326.         &#916;&#916;&#21644;&#32473;f2&#19977;(f2UV&#31215;,f2UV&#22836;,Lcf2UV&#24212;&#30495;&#24207;[i]);##&#31227;&#21160;&#21040;uv&#22836;&#30340;&#24403;&#21069;&#28857;&#32447;&#30690;&#37327;
  327.         #print("Lcf2UV&#24212;&#30495;&#24207;[i]=%f   %f\n",Lcf2UV&#24212;&#30495;&#24207;[i][0],Lcf2UV&#24212;&#30495;&#24207;[i][1]);      
  328.        
  329. #////////////////////////////////////////////////////////////////////////          
  330.  
  331. #print ("DLL&#26159;-----------------",D.DLL)
  332. def cf2&#916;&#916;&#36716;uv&#20026;cf2(uv):
  333.     return (c_float*2)(uv[0],uv[1]);
  334.  
  335.  
  336. def LLcf3&#916;&#916;&#24471;&#36873;&#28857;&#32593;co&#21015;&#34920;   (ii&#36873;&#28857;&#24635;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;):
  337.     #ii&#36873;&#28857;&#24635;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]);
  338.     ii&#23618;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;)-1;
  339.     Lcf3&#32593;&#28857;Co&#24207;=((c_float*3)*ii&#36873;&#28857;&#24635;&#25968;)();
  340.     #Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;=((c_float*3)*(ii&#23618;&#25968;+int(b&#36873;&#28857;&#20840;&#23553;&#38381;G)))();
  341.     Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;=[[None,None,None] for f in  range(ii&#23618;&#25968;+int(b&#36873;&#28857;&#20840;&#23553;&#38381;G))];
  342.     id= bpy.context.active_object.data ; #:type: id  
  343.     Lmuvl = id.uv_layers.active.data ;
  344.     Lmv=id.vertices;
  345.  
  346.     for i&#24207; in range( ii&#36873;&#28857;&#24635;&#25968;):
  347.         #print("PointIndex==",L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][i&#24207;]);
  348.         mv=Lmv[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][i&#24207;][2]];
  349.         Lcf3&#32593;&#28857;Co&#24207;[i&#24207;]=(c_float*3)( mv.co.x, mv.co.y, mv.co.z );
  350.     for i&#23618; in range(ii&#23618;&#25968;):#&#25214;&#21040;&#27599;&#23618;&#31532;&#19968;&#20010;&#28857;&#20301;
  351.         #print("PointIndex==",L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[i&#23618;][0][2]);
  352.         mv=Lmv[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[i&#23618;][0][2]];
  353.         Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#23618;]=(c_float*3)( mv.co.x, mv.co.y, mv.co.z );        
  354.         #print("CoX==",mv.co.x,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#23618;][0]);
  355.          
  356.     global b&#36873;&#28857;&#20840;&#23553;&#38381;G;
  357.     if(b&#36873;&#28857;&#20840;&#23553;&#38381;G):
  358.         #print("ALL CLOSE",);
  359.         if(i&#28857;&#32034;&#22278;&#24515;G!=None):
  360.             mv=Lmv[i&#28857;&#32034;&#22278;&#24515;G];
  361.             Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[len(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;)-1]=( mv.co.x, mv.co.y, mv.co.z );
  362.         else:
  363.             v&#32047;&#21152;=Vector((0,0,0));
  364.             for i&#28857;&#32034;&#24207;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate( L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;-1]):#&#35745;&#31639;&#26368;&#21518;&#19968;&#23618;&#30340;&#28857;&#20301;&#24179;&#22343;&#20540;&#12290;
  365.                 mv=Lmv[LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[2]];
  366.                 v&#32047;&#21152;+=mv.co;
  367.             v&#24179;&#22343;=v&#32047;&#21152;/(ii&#36873;&#28857;&#24635;&#25968;);
  368.             Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[len(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;)-1]=( v&#24179;&#22343;[0],  v&#24179;&#22343;[1], v&#24179;&#22343;[2] );
  369.         #print("LAYER==",ii&#23618;&#25968;,len(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;));
  370.         Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;.reverse();
  371.     return  (Lcf3&#32593;&#28857;Co&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;);
  372.  
  373. #覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
  374. def b&#916;&#916;&#25214;&#21040;&#36830;&#36143;&#32447;&#36873;(id,Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#25152;&#26377;&#19977;&#35282;&#38754;&#32452;,Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;,Ds&#20840;&#37096;&#29615;i&#32452;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;):
  375.     #---&#25226;&#30456;&#21516;&#20301;&#32622;&#29615;&#21152;&#20837;&#32452;--------------------------------------------------------------
  376.     i&#32452;&#25968;=0;Li&#24050;&#20837;&#32452;&#30340;&#29615;=[];LLi&#29615;f2UV&#20840;&#37096;=[];LLi&#29615;f2UV&#20840;&#37096;&#27604;&#36739;=[];
  377.     global b&#19977;&#35282;&#38754;G;
  378.     #---&#26597;&#25214;Di&#20840;&#37096;&#29615;i&#32452; ----------------------------------------
  379.     #&#20808;&#25214;&#20986;&#22235;&#20010;&#20849;&#38754;&#30340;&#32452;&#65292;&#28982;&#21518;&#20877;&#25226;&#23569;&#20110;&#22235;&#20010;&#20849;&#38754;&#30340;&#32452;&#26681;&#25454;uv&#20998;&#32452;
  380.     Di&#20840;&#37096;&#28857;&#32034;Li&#29615;={};
  381.     #---&#26816;&#27979;&#31532;&#19968;&#32452;&#26377;&#26080;&#19977;&#35282;&#38754;--------------------------------------------------------------------
  382.     if(Ds&#20840;&#37096;&#29615;i&#32452;=={}):
  383.         if(not bpy.context.window_manager.bp&#20256;&#25773;wm):  
  384.             for i&#38754;&#32034;,mp&#20840;&#37096; in enumerate(id.polygons):
  385.                 b&#32447;&#36873;=False;i&#36793;&#25968;=len(mp&#20840;&#37096;.loop_indices);
  386.                 if(b&#19977;&#35282;&#38754;G):
  387.                     break;
  388.                 if(not b&#19977;&#35282;&#38754;G and i&#36793;&#25968;==3):
  389.                     for i&#27493;3 in range(i&#36793;&#25968;): #&#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3&#65292;
  390.                         i&#27493;3&#19979;&#27493; = (i&#27493;3+1) % i&#36793;&#25968;;
  391.                         i&#28857;&#32034; = mp&#20840;&#37096;.vertices[i&#27493;3];#Vertex indices &#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3
  392.                         i&#28857;&#32034;&#19979; = mp&#20840;&#37096;.vertices[i&#27493;3&#19979;&#27493;];
  393.                         i&#29615;=mp&#20840;&#37096;.loop_indices[i&#27493;3];
  394.                         i&#29615;&#19979;=mp&#20840;&#37096;.loop_indices[i&#27493;3&#19979;&#27493;];
  395.  
  396.                         b&#36873;muvl&#19968; = False;b&#36873;muvl&#20108;=False ;
  397.                         if(bpy.context.scene.tool_settings.use_uv_select_sync== True):
  398.                             b&#36873;muvl&#19968;= id.vertices[i&#28857;&#32034;].select;
  399.                             b&#36873;muvl&#20108;= id.vertices[i&#28857;&#32034;&#19979;].select;            
  400.                         else:
  401.                             b&#36873;muvl&#19968;= Lmuvl[i&#29615;].select; #mp&#20840;&#37096;.loop_indices[i&#27493;3] &#20026;MeshUVLoop&#30340;&#32034;&#24341;        
  402.                             b&#36873;muvl&#20108;= Lmuvl[i&#29615;&#19979;].select;      
  403.                            
  404.                         if (b&#36873;muvl&#19968; and b&#36873;muvl&#20108;):# &#22914;&#26524;&#19968;&#26465;&#32447;&#20004;&#28857;&#34987;&#36873;&#20013;
  405.                             b&#19977;&#35282;&#38754;G=True;##print("TRIANGLE",);
  406.                             break;
  407.                            
  408.         #----------------------------------------------------------------------------
  409.         for i&#38754;&#32034;,mp&#20840;&#37096; in enumerate(id.polygons):
  410.             b&#32447;&#36873;=False;i&#36793;&#25968;=len(mp&#20840;&#37096;.loop_indices);
  411.             for i&#27493;3 in range(i&#36793;&#25968;): #&#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3&#65292;
  412.                 i&#27493;3&#19979;&#27493; = (i&#27493;3+1) % i&#36793;&#25968;;
  413.                 i&#28857;&#32034; = mp&#20840;&#37096;.vertices[i&#27493;3];#Vertex indices &#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3
  414.                 i&#28857;&#32034;&#19979; = mp&#20840;&#37096;.vertices[i&#27493;3&#19979;&#27493;];
  415.                 i&#29615;=mp&#20840;&#37096;.loop_indices[i&#27493;3];
  416.                 i&#29615;&#19979;=mp&#20840;&#37096;.loop_indices[i&#27493;3&#19979;&#27493;];
  417.  
  418.                 b&#36873;muvl&#19968; = False;b&#36873;muvl&#20108;=False ;
  419.                 if(bpy.context.scene.tool_settings.use_uv_select_sync== True):
  420.                     b&#36873;muvl&#19968;= id.vertices[i&#28857;&#32034;].select;
  421.                     b&#36873;muvl&#20108;= id.vertices[i&#28857;&#32034;&#19979;].select;          
  422.                 else:
  423.                     b&#36873;muvl&#19968;= Lmuvl[i&#29615;].select; #mp&#20840;&#37096;.loop_indices[i&#27493;3] &#20026;MeshUVLoop&#30340;&#32034;&#24341;        
  424.                     b&#36873;muvl&#20108;= Lmuvl[i&#29615;&#19979;].select;  
  425.                    
  426.                 if(bpy.context.window_manager.bp&#20256;&#25773;wm or b&#19977;&#35282;&#38754;G==True):
  427.                     if(i&#28857;&#32034; not in Di&#20840;&#37096;&#28857;&#32034;Li&#29615;):  
  428.                         Di&#20840;&#37096;&#28857;&#32034;Li&#29615;[i&#28857;&#32034;]=[];        
  429.                     if(i&#29615; not in Di&#20840;&#37096;&#28857;&#32034;Li&#29615;[i&#28857;&#32034;]):
  430.                         Di&#20840;&#37096;&#28857;&#32034;Li&#29615;[i&#28857;&#32034;].append(i&#29615;);#{i&#32452;:[i&#29615;,i&#29615;]}              
  431.                 elif(not bpy.context.window_manager.bp&#20256;&#25773;wm ):
  432.                     if (b&#36873;muvl&#19968;):# &#22914;&#26524;&#26377;&#19968;&#28857;&#34987;&#36873;&#20013;
  433.                         if(i&#28857;&#32034; not in Di&#20840;&#37096;&#28857;&#32034;Li&#29615;):  
  434.                             Di&#20840;&#37096;&#28857;&#32034;Li&#29615;[i&#28857;&#32034;]=[];        
  435.                         if(i&#29615; not in Di&#20840;&#37096;&#28857;&#32034;Li&#29615;[i&#28857;&#32034;]):
  436.                             Di&#20840;&#37096;&#28857;&#32034;Li&#29615;[i&#28857;&#32034;].append(i&#29615;);#{i&#32452;:[i&#29615;,i&#29615;]}
  437.  
  438.                 #----------------------------------------------------------------------------
  439.                 if(str(i&#29615;) not in Ds&#20840;&#37096;&#29615;i&#28857;&#32034;):
  440.                     Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(i&#29615;)]=i&#28857;&#32034;;
  441.    
  442.         #print("D All IP,R",Di&#20840;&#37096;&#28857;&#32034;Li&#29615;);
  443.  
  444.         #---&#26681;&#25454;uv&#20301;&#32622;&#20998;&#32452;-----------------------------------------------------------------
  445.        
  446.         for  i&#28857;&#32034;,Li&#29615; in  Di&#20840;&#37096;&#28857;&#32034;Li&#29615;.items():
  447.             LLi&#30456;&#21516;UV&#29615;=[];i&#21516;&#28857;&#19981;&#21516;uv&#32452;&#25968;=0;Li&#28857;&#20869;&#24050;&#32463;&#27604;&#36739;&#29615;=[];
  448.             for i&#27604;&#36739;&#27493;,i&#27604;&#36739;&#29615; in  enumerate(Li&#29615;):#&#36845;&#20195;&#19968;&#20010;&#28857;&#20869;&#30340;&#22810;&#20010;&#29615;
  449.                 if(i&#27604;&#36739;&#29615; in Li&#28857;&#20869;&#24050;&#32463;&#27604;&#36739;&#29615;):#&#22914;&#26524;&#24050;&#32463;&#25214;&#21040;&#19982;&#27604;&#36739;&#29615;&#30456;&#31561;&#30340;&#29615;&#65292;&#23601;&#19981;&#29992;&#20877;&#26032;&#24314;&#27604;&#36739;&#29615;
  450.                     continue;
  451.                 uv&#27604;&#36739;&#29615;=Lmuvl[i&#27604;&#36739;&#29615;].uv;LLi&#30456;&#21516;UV&#29615;.append([]);#&#26032;&#20960;&#20010;&#34920;&#31034;&#20849;&#26377;&#20960;&#32452;&#29615; &#19981;&#30456;&#31561;
  452.                 LLi&#30456;&#21516;UV&#29615;[i&#21516;&#28857;&#19981;&#21516;uv&#32452;&#25968;].append(i&#27604;&#36739;&#29615;);
  453.                 Li&#28857;&#20869;&#24050;&#32463;&#27604;&#36739;&#29615;.append(i&#27604;&#36739;&#29615;);
  454.                 for i&#27493;,i&#29615; in  enumerate(Li&#29615;):#&#36845;&#20195;&#19968;&#20010;&#28857;&#20869;&#30340;&#22810;&#20010;&#29615;
  455.                     if(i&#27604;&#36739;&#27493;!=i&#27493; and uv&#27604;&#36739;&#29615;==Lmuvl[i&#29615;].uv and i&#29615; not in Li&#28857;&#20869;&#24050;&#32463;&#27604;&#36739;&#29615;):#&#25214;&#21040;&#19968;&#20010;&#19982;&#27604;&#36739;&#29615;&#30456;&#31561;&#30340;&#29615;
  456.                         LLi&#30456;&#21516;UV&#29615;[i&#21516;&#28857;&#19981;&#21516;uv&#32452;&#25968;].append(i&#29615;);#[[i&#29615;,i&#29615;],[i&#29615;,i&#29615;]]
  457.                         Li&#28857;&#20869;&#24050;&#32463;&#27604;&#36739;&#29615;.append(i&#29615;);
  458.                 i&#21516;&#28857;&#19981;&#21516;uv&#32452;&#25968;+=1;
  459.            
  460.             if(len(LLi&#30456;&#21516;UV&#29615;)<2 ):#&#22914;&#26524;&#27492;&#28857;&#24102;&#22235;&#20010;&#29615;
  461.                 for i&#27493;,i&#29615; in  enumerate(Li&#29615;):
  462.                     Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#29615;)]=i&#32452;&#25968;;
  463.                 i&#32452;&#25968;+=1;#&#22686;&#21152;&#19968;&#20010;&#32452;
  464.  
  465.             else:#&#26377;&#22810;&#20010;&#19981;&#21516;uv&#30340;&#29615;
  466.                 for i&#32452;,Li&#30456;&#21516;UV&#29615; in  enumerate(LLi&#30456;&#21516;UV&#29615;):
  467.                     for i&#30456;&#21516;UV&#29615; in  Li&#30456;&#21516;UV&#29615;:
  468.                         Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#30456;&#21516;UV&#29615;)]=i&#32452;&#25968;;
  469.                     i&#32452;&#25968;+=1;#&#22686;&#21152;&#19968;&#20010;&#32452;
  470.         #---&#35760;&#24405;&#21040;&#32593;&#26684;&#23646;&#24615;-----------------------------------------------------------------
  471.         """
  472.        id["UV_TOOL"]["fUV"]=Lmuvl[0].uv[0];  
  473.        id["UV_TOOL"]["iPOLY"]=len(id.polygons);
  474.        id["UV_TOOL"]["ALL_R_G"]=Ds&#20840;&#37096;&#29615;i&#32452;;
  475.        id["UV_TOOL"]["ALL_R_IP"]=Ds&#20840;&#37096;&#29615;i&#28857;&#32034;;
  476.        """
  477.        
  478.     #print("D All  R:G==",Ds&#20840;&#37096;&#29615;i&#32452;);
  479.     #return ;
  480.     #---&#22635;&#20805;  ----------------------------------------
  481.     for i&#38754;&#32034;,mp&#20840;&#37096; in enumerate(id.polygons):
  482.         b&#32447;&#36873;=False;i&#36793;&#25968;=len(mp&#20840;&#37096;.loop_indices);
  483.         for i&#27493;3 in range(i&#36793;&#25968;): #&#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3&#65292;
  484.             #i&#27493;=None;i&#27493;=None;i&#27493;=None;i&#27493;=None;
  485.             i&#27493;3&#19979;&#27493; = (i&#27493;3+1) %i&#36793;&#25968;;#3%4=3  ; 4%3=1;4%4=0
  486.             i&#28857;&#32034; = mp&#20840;&#37096;.vertices[i&#27493;3];#Vertex indices &#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3
  487.             i&#28857;&#32034;&#19979; = mp&#20840;&#37096;.vertices[i&#27493;3&#19979;&#27493;];
  488.             i&#29615;=mp&#20840;&#37096;.loop_indices[i&#27493;3];
  489.             i&#29615;&#19979;=mp&#20840;&#37096;.loop_indices[i&#27493;3&#19979;&#27493;];
  490.             b&#36873;muvl&#19968; = False;b&#36873;muvl&#20108;=False ;
  491.             if(bpy.context.scene.tool_settings.use_uv_select_sync== True):
  492.                 b&#36873;muvl&#19968;= id.vertices[i&#28857;&#32034;].select;
  493.                 b&#36873;muvl&#20108;= id.vertices[i&#28857;&#32034;&#19979;].select;
  494.             else:
  495.                 b&#36873;muvl&#19968;= Lmuvl[i&#29615;].select; #mp&#20840;&#37096;.loop_indices[i&#27493;3] &#20026;MeshUVLoop&#30340;&#32034;&#24341;        
  496.                 b&#36873;muvl&#20108;= Lmuvl[i&#29615;&#19979;].select;
  497.             #--------------------------------------------------------------------------
  498.             if(bpy.context.window_manager.bp&#20256;&#25773;wm or b&#19977;&#35282;&#38754;G==True):
  499.                 i&#32452;&#36716;=Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#29615;)];    
  500.                 i&#32452;&#19979;&#36716;=Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#29615;&#19979;)];      
  501.                    
  502.                 if(i&#32452;&#36716; not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;):  
  503.                     Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;]=[[],[]];#{i&#32452;&#36716;:[[i&#38754;&#32034;,i&#38754;&#32034;],[i&#29615;,i&#29615;]],}
  504.                 if(i&#38754;&#32034; not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][0]):
  505.                     Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][0].append(i&#38754;&#32034;);
  506.                     #print("G",i&#32452;&#36716;,"F",i&#38754;&#32034;);
  507.                 if(mp&#20840;&#37096;.loop_indices[i&#27493;3] not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][1]):
  508.                     Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][1].append(mp&#20840;&#37096;.loop_indices[i&#27493;3]);                      
  509.                
  510.             else:
  511.                 if (b&#36873;muvl&#19968;):# &#22914;&#26524;&#19968;&#28857;&#34987;&#36873;&#20013;
  512.                     i&#32452;&#36716;=Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#29615;)];  
  513.                                      
  514.                     if(i&#32452;&#36716; not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;):  
  515.                         Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;]=[[],[]];#{i&#32452;&#36716;:[[i&#38754;&#32034;,i&#38754;&#32034;],[i&#29615;,i&#29615;]],}          
  516.                     if(i&#38754;&#32034; not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][0]):
  517.                         Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][0].append(i&#38754;&#32034;);
  518.                     #if(i&#38754;&#32034; not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;&#36716;][0]):
  519.                         #Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;&#36716;][0].append(i&#38754;&#32034;);
  520.                         #print("G",i&#32452;&#36716;,"F",i&#38754;&#32034;);
  521.                     if(i&#29615; not in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][1]):
  522.                         Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][1].append(i&#29615;);      
  523.          
  524.             if (b&#36873;muvl&#19968; and b&#36873;muvl&#20108;):# &#22914;&#26524;&#19968;&#26465;&#32447;&#20004;&#28857;&#34987;&#36873;&#20013;
  525.                 i&#32452;&#19979;&#36716;=Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#29615;&#19979;)];  
  526.                 b&#32447;&#36873;=True;
  527.                 if(i&#32452;&#36716; not in Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;):#{i&#32452;&#27492;:[i&#32452;&#24038;,i&#32452;&#21491;],}
  528.                    Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#36716;]=[];
  529.                 if(i&#32452;&#19979;&#36716; not in Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;):
  530.                    Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#19979;&#36716;]=[];      
  531.                 if(i&#32452;&#36716; not in Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#19979;&#36716;]):
  532.                    Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#19979;&#36716;].append(i&#32452;&#36716;);
  533.                 if(i&#32452;&#19979;&#36716; not in Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#36716;]):
  534.                    Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#36716;].append(i&#32452;&#19979;&#36716;);
  535.  
  536.                     #{ i&#32452;&#36716;:[ [i&#29615;,i&#29615;],[i&#38754;&#32034;,i&#38754;&#32034;] ],i&#32452;&#36716;:[[i&#29615;,i&#29615;],] }
  537.  
  538.     #---&#25214;&#20986;&#31532;&#19968;&#23618;&#30340;&#21069;&#20004;&#20010;&#32452;-------------------------------------------------------------------      
  539.     #print("D  LR==",Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;);
  540.     if(len(Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;)<2):#&#30830;&#23450;&#26159;&#21542;&#36873;&#20102;&#20004;&#28857;&#20197;&#19978;
  541.         return False;
  542.     #print("D all G,LLiFiR==",Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;);
  543.     i&#32452;&#38543;&#26426;=None;b&#38381;&#21512;=True;L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;.append([]);#&#31532;&#19968;&#23618;  
  544.     for i&#32452;&#27492;, Li&#32452;&#24038;&#21491; in Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;.items():#&#36820;&#22238; &#38190;&#19982;&#20540;&#30340;&#21015;&#34920;
  545.         i&#32452;&#38543;&#26426;=i&#32452;&#27492;;
  546.         if (len(Li&#32452;&#24038;&#21491;)==1):#&#27492;&#28857;&#27809;&#26377;&#24038;&#21491;&#20004;&#28857;  {i&#32452;&#27492;:[i&#32452;&#24038;]}  
  547.             Li&#21516;&#20301;&#32622;&#29615;1=Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#27492;][1];
  548.             #print("Li1=",Li&#21516;&#20301;&#32622;&#29615;1);
  549.             L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0].append([  Li&#21516;&#20301;&#32622;&#29615;1,i&#32452;&#27492;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(Li&#21516;&#20301;&#32622;&#29615;1[0])]]); #&#20854;&#20013;&#19968;&#20010;&#32456;&#32452;  [[i&#32452;&#27492;,i&#38754;&#32034;]]
  550.             Li&#21516;&#20301;&#32622;&#29615;2=Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[Li&#32452;&#24038;&#21491;[0]][1];
  551.             L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0].append([  Li&#21516;&#20301;&#32622;&#29615;2  ,Li&#32452;&#24038;&#21491;[0], Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(Li&#21516;&#20301;&#32622;&#29615;2[0])]]);# [[i&#32452;&#27492;,i&#38754;&#32034;],[i&#32452;&#24038;,i&#38754;&#32034;]]  &#28155;&#21152;&#31532;&#20108;&#20010;&#32452;
  552.             b&#38381;&#21512;=False;
  553.             break;  
  554.  
  555.     if(b&#38381;&#21512;==True):
  556.         Li&#21516;&#20301;&#32622;&#29615;1=Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#38543;&#26426;][1];Li&#32452;&#24038;&#21491;=Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[i&#32452;&#38543;&#26426;];
  557.         Li&#21516;&#20301;&#32622;&#29615;2=Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[Li&#32452;&#24038;&#21491;[0]][1];
  558.         L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0].append([  Li&#21516;&#20301;&#32622;&#29615;1,i&#32452;&#38543;&#26426;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(Li&#21516;&#20301;&#32622;&#29615;1[0]) ]]) #&#22836;&#19968;&#20010;&#28857;      
  559.         L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0].append([  Li&#21516;&#20301;&#32622;&#29615;2  ,Li&#32452;&#24038;&#21491;[0], Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(Li&#21516;&#20301;&#32622;&#29615;2[0])]])#&#31532;&#20108;&#20010;&#28857;  
  560.        
  561.        
  562.     #--------------------------------------------------------------------------
  563.     #print("0LayADD 2 RingGroup",len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]),L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]);
  564.     return True;
  565.     #print("DigroupLR==",Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;);
  566.     #print("DiAllGroup Face_Ring==",Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;);
  567.    
  568.     #return (ii&#23618;&#25968;G,L&#23618;Di&#20840;&#37096;&#36873;&#28857;&#32034;Li&#29615;);
  569.    
  570.  
  571. #----------------------------------------------------------------------------
  572. def LLLi&#916;&#916;&#916;&#36873;&#20013;&#28857;&#25490;&#21015;():
  573.     bpy.ops.object.mode_set(mode='OBJECT');
  574.     id = bpy.context.active_object.data ;
  575.     if (not  id.uv_layers.active):
  576.         return (None,None,None);
  577.     Lmuvl = id.uv_layers.active.data ;#UVLoopLayers.MeshUVLoopLayer.LMeshUVLoop
  578.     L&#23618;Di&#36873;&#28857;&#32034;&#27492;Li&#28857;&#32034;&#24038;&#21491;=[];L&#23618;Di&#20840;&#37096;&#36873;&#28857;&#32034;Li&#29615;=[];Li&#25152;&#26377;&#19977;&#35282;&#38754;&#32452;=[];
  579.     Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;={};Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;={};
  580.     L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;=[];#[[[i&#29615;,i&#29615;],i&#32452;&#36716;],[[i&#29615;,i&#29615;i,&#29615;,i&#29615;],i&#32452;&#36716;]]
  581.     Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;=[];Li&#29615;&#22278;&#24515;=[];
  582.     b&#38381;=None;b&#20840;&#38381;=None ;
  583.     global b&#36873;&#28857;&#20840;&#23553;&#38381;G;b&#36873;&#28857;&#20840;&#23553;&#38381;G=False;
  584.     global ii&#23618;&#25968;G;ii&#23618;&#25968;G=0;
  585.     global i&#32452;&#22278;&#24515;G;i&#32452;&#22278;&#24515;G=None;
  586.     global i&#28857;&#32034;&#22278;&#24515;G;i&#28857;&#32034;&#22278;&#24515;G=None;
  587.     global b&#19977;&#35282;&#38754;G;b&#19977;&#35282;&#38754;G=False;
  588.    
  589.     Ds&#20840;&#37096;&#29615;i&#32452;={};
  590.     Ds&#20840;&#37096;&#29615;i&#28857;&#32034;={};
  591.     """
  592.    if("UV_TOOL" not in id.keys()):
  593.        id["UV_TOOL"]={};
  594.        Ds&#20840;&#37096;&#29615;i&#32452;={};
  595.        Ds&#20840;&#37096;&#29615;i&#28857;&#32034;={};
  596.        print("NEW",);
  597.    else:
  598.        fUVx=Lmuvl[0].uv[0];
  599.        if(id["UV_TOOL"]["iPOLY"]==len(id.polygons) and   (fUVx-0.01)<id["UV_TOOL"]["fUV"]<(fUVx+0.01)):
  600.            Ds&#20840;&#37096;&#29615;i&#32452;=id["UV_TOOL"]["ALL_R_G"];      
  601.            Ds&#20840;&#37096;&#29615;i&#28857;&#32034;=id["UV_TOOL"]["ALL_R_IP"];
  602.        else:
  603.            Ds&#20840;&#37096;&#29615;i&#32452;={};
  604.            Ds&#20840;&#37096;&#29615;i&#28857;&#32034;={};
  605.            print("RENEW",);
  606.    """
  607.     b&#26159;&#21542;&#25214;&#21040;=b&#916;&#916;&#25214;&#21040;&#36830;&#36143;&#32447;&#36873;(id,Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#25152;&#26377;&#19977;&#35282;&#38754;&#32452;,Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;,Ds&#20840;&#37096;&#29615;i&#32452;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;);
  608.     if(not b&#26159;&#21542;&#25214;&#21040;):
  609.         return (None,None,None);
  610.     #&#916;&#916;&#21028;&#26029;&#26159;&#21542;&#23553;&#38381;(ii&#23618;&#25968;G,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;,L&#23618;Di&#20840;&#37096;&#36873;&#28857;&#32034;Li&#29615;);
  611.     #return (Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#29615;&#22278;&#24515;);
  612.     #---&#25490;&#21015;&#31532;&#19968;&#23618;&#30340;&#32452;-L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]-----------------------------------------------    
  613.     if (len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])>1):#&#22914;&#26524;  &#36873;&#20102;&#20004;&#20010;&#32452;&#20197;&#19978;
  614.         i&#35745;&#25968; = len(Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;);
  615.         #print ("iCount",i&#35745;&#25968;)
  616.         b&#36830;&#32493; = True ;i&#31532;&#19968;&#20010;&#32452;=None;
  617.         while (b&#36830;&#32493;==True  and 0 < i&#35745;&#25968;):            
  618.             Li&#32452;&#24038;&#21491; = Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][1]];#&#21018;&#24320;&#22987;Li&#32452;&#24038;&#21491;&#26159;&#31532;&#20108;&#20010;&#28857;&#30340;&#32452;&#24038;&#21491;&#65292;&#21363;&#31532;&#19968;&#28857;&#19982;&#31532;&#19977;&#28857;
  619.             #print ("Li&#32452;&#24038;&#21491;",Li&#32452;&#24038;&#21491;)
  620.             #print("L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-1]", L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-1])
  621.             for i, i&#32452;&#24038;&#21491; in enumerate( Li&#32452;&#24038;&#21491;): #&#21018;&#24320;&#22987;  i&#32452;&#24038;&#21491;&#26159;&#31532;&#19968;&#20010;&#28857; &#25110; &#31532;&#19977;&#28857;              
  622.                 if ( i&#32452;&#24038;&#21491; == L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-2][1]):#&#22914;&#26524;  i&#32452;&#24038;&#21491;  &#26159;  &#27492;&#28857;&#30340;&#21069;&#19968;&#20010;&#28857;# &#21018;&#24320;&#22987;&#26159;&#31532;&#19968;&#20010;&#28857;
  623.                     if(i&#35745;&#25968; == len(Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;)):
  624.                         i&#31532;&#19968;&#20010;&#32452;=i&#32452;&#24038;&#21491;;
  625.                         #print("FirstG==",i&#31532;&#19968;&#20010;&#32452;);
  626.                     #print ("i&#32452;&#24038;&#21491; == L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-2]",i&#32452;&#24038;&#21491;, L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-2])
  627.  
  628.                     if(len(Li&#32452;&#24038;&#21491;)>1 and Li&#32452;&#24038;&#21491;[i-1]==i&#31532;&#19968;&#20010;&#32452; and i&#35745;&#25968;<len(Di&#32452;&#27492;Li&#32452;&#24038;&#21491;&#36873;)):#&#23494;&#23553;&#22278;  &#26368;&#21518;&#19968;&#32452;&#20026;&#31532;&#19968;&#32452;
  629.                         #print("LastGroup",);
  630.                         i&#32452;&#24038;&#21491; = Li&#32452;&#24038;&#21491;[i-1];
  631.                         b&#36830;&#32493;= False;
  632.                         break;
  633.                        
  634.                     elif (len(Li&#32452;&#24038;&#21491;)>1): #&#22914;&#26524;  &#36825;&#28857;&#36830;&#24102;&#20004;&#20010;&#28857;&#25110;&#20197;&#19978;# &#36830;&#32493;&#36873;&#36793;
  635.                         #print ("1 < len(Li&#32452;&#24038;&#21491;)")
  636.                         #else:
  637.                             i&#32452;&#24038;&#21491;= Li&#32452;&#24038;&#21491;[i-1];#&#25226;&#27492;&#28857;&#21518;&#19968;&#20010;&#28857;  &#20316;&#20026; i&#32452;&#24038;&#21491;#&#21018;&#24320;&#22987;&#26159;&#31532;&#19977;&#20010;&#28857;
  638.                             #print ("Li&#32452;&#24038;&#21491;",Li&#32452;&#24038;&#21491;)
  639.                             #print ("L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;=",L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;)  
  640.                     else:#&#27492;&#28857; &#36830;&#24102; &#19968;&#20010;&#28857;
  641.                         i&#32452;&#24038;&#21491; = None;
  642.                         b&#36830;&#32493;= False;
  643.                         #print ("i&#32452;&#24038;&#21491; = None")
  644.                     break;
  645.             i&#35745;&#25968; -= 1;
  646.             #----------------------------------------------------------------------------
  647.             if (i&#32452;&#24038;&#21491; !=None ):#&#22914;&#26524;&#28857;&#32034;&#20026;0 &#21487;&#33021;&#34987;&#35748;&#20026;False
  648.                 Li&#21516;&#20301;&#32622;&#29615;=Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#24038;&#21491;][1];
  649.                 L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0].append([ Li&#21516;&#20301;&#32622;&#29615; ,i&#32452;&#24038;&#21491;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(Li&#21516;&#20301;&#32622;&#29615;[0])]]);
  650.                 #print ("Li&#32452;&#24038;&#21491;=",Li&#32452;&#24038;&#21491;,"Li&#28857;&#32034;&#20174;&#22836;&#21040;&#23614;&#36873;&#21069;=",L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,"i&#32452;&#22836;=",i&#32452;&#22836;)
  651.                 #print ("i&#28857;&#32034;&#27604;&#36739;append",i&#32452;&#24038;&#21491;)
  652.                 #b&#36830;&#32493;= True;
  653.                
  654.     #print("01LayRingGroupIndex",len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]),L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]);
  655.     if(bpy.context.window_manager.bp&#20256;&#25773;wm):
  656.         &#916;&#916;&#25214;&#21040;&#24179;&#34892;&#32447;(id,Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;,Ds&#20840;&#37096;&#29615;i&#32452;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;);
  657.  
  658.     if (L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][1]==L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][1]): #&#20840;&#23553;&#38381;
  659.         b&#36873;&#28857;&#20840;&#23553;&#38381;G=True;##print("ALL CLOSE 2",);
  660.     if(i&#32452;&#22278;&#24515;G):
  661.         Li&#29615;&#22278;&#24515;=Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#22278;&#24515;G][1];
  662.         i&#28857;&#32034;&#22278;&#24515;G=Ds&#20840;&#37096;&#29615;i&#28857;&#32034;[str(Li&#29615;&#22278;&#24515;[0])];
  663.     #print("LiHartRing==",Li&#29615;&#22278;&#24515;,"iHart",i&#32452;&#22278;&#24515;G,ii&#23618;&#25968;G);
  664.     #print("ALLLayRingGroupIndex",len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]),L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
  665.     return (Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#29615;&#22278;&#24515;);
  666.    
  667. #覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
  668. def &#916;&#916;&#25214;&#21040;&#24179;&#34892;&#32447;(id,Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;,Ds&#20840;&#37096;&#29615;i&#32452;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;):
  669.     b&#24179;&#34892;=True;b&#20004;&#20849;&#38754;=False;b&#26368;&#21518;&#19968;&#23618;=False;b&#26368;&#21518;&#19968;&#28857;=False;b&#27809;&#26377;&#25214;&#22278;&#24515;=False;Li&#19977;&#35282;&#38754;&#32452;=[];
  670.     global ii&#23618;&#25968;G;global i&#32452;&#22278;&#24515;G;
  671.     #----&#26681;&#25454;&#36825;&#23618;&#32452;&#25214;&#20986;&#19979;&#19968;&#23618;&#32452;-----------------------------------------------------------------
  672.     #print("LAYER------------",ii&#23618;&#25968;G);
  673.     if(len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])<1):#&#22914;&#26524;&#36873;&#28857;&#23569;&#20110;&#20004;&#28857;
  674.         return ;
  675.     for i&#24207;,Li&#21516;&#20301;&#32622;&#29615;_i&#32452;&#24207; in  enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G]):#&#36845;&#20195;&#19979;&#19968;&#23618;&#30340;&#21508;&#20010;&#32452;
  676.         #print("GROUP",i&#24207;);
  677.         #if(i&#24207;==len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G])-1):#&#22914;&#26524;&#26159;&#26368;&#21518;&#19968;&#32452;
  678.             #continue;
  679.         #print("Order==",i&#24207;);      
  680.         #---&#25214;&#21040;&#20849;&#38754;&#32034;------------------------------------------------------------
  681.         i&#32452;=Li&#21516;&#20301;&#32622;&#29615;_i&#32452;&#24207;[1];  
  682.         if(i&#24207;==len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G])-1):#&#22914;&#26524;&#26159;&#26368;&#21518;&#19968;&#32452;        
  683.             i&#32452;&#19979;=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G][i&#24207;-1][1];#&#25226;&#20498;&#25968;&#31532;&#20108;&#32452;&#20026;&#32452;&#19979;
  684.             #print("LastShareFace ,Layer ,Len,Gpre",Li&#20849;&#38754;&#32034;,ii&#23618;&#25968;G,len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G]),i&#32452;&#19979;);
  685.             if(b&#26368;&#21518;&#19968;&#23618;==True):
  686.                 b&#26368;&#21518;&#19968;&#28857;=True;
  687.                 #print("Is LastLay&Order",i&#24207;);
  688.                
  689.         elif(not b&#26368;&#21518;&#19968;&#23618;):
  690.             i&#32452;&#19979;=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G][i&#24207;+1][1];
  691.            
  692.             Li&#20849;&#38754;&#32034;=[i&#38754;&#32034; for i&#38754;&#32034; in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[ i&#32452; ][0] if ( i&#38754;&#32034; in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;][0] and  i&#38754;&#32034; not in Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;)];#&#21069;&#21518;&#20004;&#32452;&#30340;&#20849;&#38754;&#32034;
  693.             if(ii&#23618;&#25968;G!=0 and( len(Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;][0])<3 and len(Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;][0])<3)):#&#26368;&#21518;&#19968;&#23618;&#26368;&#22823;&#20849;&#38754;&#32034;&#23569;&#20110;3
  694.                 b&#26368;&#21518;&#19968;&#23618;=True;
  695.                
  696.                 #print("IS LastLayerZZZZZZZ",);
  697.             """"""  
  698.             #print("G,Face ",i&#32452;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[ i&#32452; ][0] )
  699.             #print("G,FaceNext ",i&#32452;&#19979;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;][0])
  700.  
  701.             #print("FaceRecorded ",Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;);
  702.             #print("ShareFace---",Li&#20849;&#38754;&#32034;);
  703.            
  704.             #print("GROUP",L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G][i&#24207;][1]);
  705.         if(b&#26368;&#21518;&#19968;&#23618;==True and not b&#26368;&#21518;&#19968;&#28857;):#&#26368;&#21518;&#19968;&#23618;
  706.            
  707.             i&#32452;&#19979;=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G][i&#24207;+1][1];
  708.             Li&#20849;&#38754;&#32034;=[i&#38754;&#32034; for i&#38754;&#32034; in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[ i&#32452; ][0] if ( i&#38754;&#32034; in Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;][0] )];
  709.             if(not Li&#20849;&#38754;&#32034; or  len(Li&#20849;&#38754;&#32034;)>1):
  710.                 """
  711.                if(not Li&#20849;&#38754;&#32034; ):
  712.                    #print("NOT_SHARE_FACE2",);
  713.                else:
  714.                    #print("SHARE_FACE >1",);
  715.                """
  716.                 b&#20004;&#20849;&#38754;=True ;b&#24179;&#34892;=False ;  
  717.             """"""
  718.             #print("G,FaceE ",i&#32452;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[ i&#32452; ][0] )
  719.             #print("G,FaceNextE ",i&#32452;&#19979;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;][0])
  720.             #print("ShareFaceE---",Li&#20849;&#38754;&#32034;);
  721.            
  722.         if(not Li&#20849;&#38754;&#32034; or  len(Li&#20849;&#38754;&#32034;)>1):
  723.             """"""
  724.             if(not Li&#20849;&#38754;&#32034; ):
  725.                 pass;
  726.                 #print("NOT_SHARE_FACE",);
  727.             else:
  728.                 pass;
  729.                 #print("SHARE_FACE >1",);
  730.             #print("NO BALLANCE",);
  731.            
  732.             b&#20004;&#20849;&#38754;=True ;b&#24179;&#34892;=False ;break;  
  733.         #----------------------------------------------------------------------------
  734.         try:
  735.             L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G+1];
  736.         except:
  737.             L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;.append([]);#&#22686;&#21152;&#19968;&#23618;    
  738.         if(Li&#20849;&#38754;&#32034;[0] not in Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;):
  739.             Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;.append(Li&#20849;&#38754;&#32034;[0]);
  740.            
  741.         mp&#20004;&#32452;&#20849;&#38754;=id.polygons[Li&#20849;&#38754;&#32034;[0]];
  742.         B=False;
  743.         if(len(mp&#20004;&#32452;&#20849;&#38754;.loop_indices)!=4 and len(mp&#20004;&#32452;&#20849;&#38754;.loop_indices)==3):
  744.             for i&#27493;3,i&#29615; in enumerate(mp&#20004;&#32452;&#20849;&#38754;.loop_indices):
  745.                 Li&#19977;&#35282;&#38754;&#32452;.append(int(Ds&#20840;&#37096;&#29615;i&#32452;[str(i&#29615;)]));
  746.             #print("NOT QUAT",);#&#24403;&#36935;&#21040;&#19977;&#35282;&#38754;&#26102; &#26368;&#21518;&#19968;&#23618;&#20026;&#31354;[]
  747.             b&#24179;&#34892;=False;break;
  748.            
  749.         for i&#27493;3 in range(len(mp&#20004;&#32452;&#20849;&#38754;.loop_indices)):#&#25214;&#21040;&#24182;&#25490;&#21015;&#19979;&#19968;&#23618;&#32452;
  750.              
  751.             i&#27493;3&#19979;&#27493; = (i&#27493;3+1) % len(mp&#20004;&#32452;&#20849;&#38754;.loop_indices);#3%4=3  ; 4%3=1;4%4=0
  752.             i&#28857;&#32034; = mp&#20004;&#32452;&#20849;&#38754;.vertices[i&#27493;3];#Vertex indices &#22914;&#26524;&#26159;&#22235;&#36793;&#38754; len&#31561;&#20110;4 &#22914;&#26524;&#26159;&#19977;&#35282;&#38754;len&#31561;&#20110;3
  753.             i&#28857;&#32034;&#19979; = mp&#20004;&#32452;&#20849;&#38754;.vertices[i&#27493;3&#19979;&#27493;]
  754.             i&#32452;&#36716;=int(Ds&#20840;&#37096;&#29615;i&#32452;[str(mp&#20004;&#32452;&#20849;&#38754;.loop_indices[i&#27493;3])]);
  755.             i&#32452;&#19979;&#36716;=int(Ds&#20840;&#37096;&#29615;i&#32452;[str(mp&#20004;&#32452;&#20849;&#38754;.loop_indices[i&#27493;3&#19979;&#27493;])]);
  756.             """"""
  757.             #-----&#22914;&#26524;&#26159;&#26368;&#21518;&#31532;&#19968;&#32452;------------------------------------------------------------
  758.             if(i&#24207;==len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G])-1):
  759.                 #print("While Last   Group,GroupNext==",i&#32452;,i&#32452;&#19979;);
  760.                 if(i&#32452;==i&#32452;&#36716; and i&#32452;&#19979;!=i&#32452;&#19979;&#36716;):#&#39034;&#8594;
  761.                     #print("exeLast",);
  762.                     L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G+1].append([Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;&#36716;][1],i&#32452;&#19979;&#36716;,i&#28857;&#32034;&#19979;]);B=True;break;#
  763.                 elif(i&#32452;==i&#32452;&#19979;&#36716; and i&#32452;&#19979;!=i&#32452;&#36716;):#&#36870;&#8592;
  764.                     #print("exeLast",);
  765.                     L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G+1].append([Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][1],i&#32452;&#36716;,i&#28857;&#32034;]);B=True; break;#
  766.              
  767.             #----&#27491;&#24120;&#30340;&#32452;-------------------------------------------------------------
  768.             if(i&#32452;==i&#32452;&#36716; and i&#32452;&#19979;!=i&#32452;&#19979;&#36716;):#&#39034;&#8594;
  769.                 L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G+1].append([Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#19979;&#36716;][1],i&#32452;&#19979;&#36716;,i&#28857;&#32034;&#19979;]);B=True;break;
  770.             elif(i&#32452;==i&#32452;&#19979;&#36716; and i&#32452;&#19979;!=i&#32452;&#36716;):#&#36870;&#8592;
  771.                 L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G+1].append([Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;[i&#32452;&#36716;][1],i&#32452;&#36716;,i&#28857;&#32034;]);B=True;break;
  772.  
  773.  
  774.         #if(not B):
  775.             #print("NO NO NO NO,Order==,",i&#24207;);
  776.     #------&#25214;&#22278;&#24515;-------------------------------------------------------------
  777.     if(b&#27809;&#26377;&#25214;&#22278;&#24515;==False):
  778.         i&#32452;1=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G][0][1];i&#32452;2=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G][1][1];#&#36825;&#26159;&#26410;ii&#23618;&#25968;+1&#26102;&#28155;&#21152;&#30340;&#32452;
  779.         Li&#22278;&#24515;=[i for i in Li&#19977;&#35282;&#38754;&#32452; if(i!=i&#32452;1 and i!=i&#32452;2)];
  780.         if(Li&#22278;&#24515;):
  781.             i&#32452;&#22278;&#24515;G=Li&#22278;&#24515;[0];
  782.         b&#27809;&#26377;&#25214;&#22278;&#24515;=True;
  783.         #print("HartGroup==",i&#32452;&#22278;&#24515;G);
  784.         #print("Group1==",i&#32452;1,"Group2==",i&#32452;2);
  785.     #print("Glen,Llen,Layer",len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[ii&#23618;&#25968;G]),L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,ii&#23618;&#25968;G);
  786.     if(b&#24179;&#34892;==True and b&#20004;&#20849;&#38754;==False and b&#26368;&#21518;&#19968;&#23618;==False and b&#26368;&#21518;&#19968;&#28857;==False):
  787.         ii&#23618;&#25968;G+=1;
  788.         &#916;&#916;&#25214;&#21040;&#24179;&#34892;&#32447;(id,Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#24050;&#32463;&#26597;&#25214;&#30340;&#38754;&#32034;,Ds&#20840;&#37096;&#29615;i&#32452;,Ds&#20840;&#37096;&#29615;i&#28857;&#32034;,Di&#20840;&#37096;&#32452;LLi&#38754;&#32034;_Li&#29615;);
  789.  
  790.  
  791. #----------------------------------------------------------------------------
  792. def Lb_Lf&#916;&#916;&#35745;&#31639;&#32593;&#22402;&#30452;&#38271;(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;):
  793.     b&#26159;&#21542;&#22402;&#30452;=bpy.context.window_manager.bp&#22402;&#30452;&#36317;&#31163;wm ;
  794.    
  795.     Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;=[];
  796.     if(b&#26159;&#21542;&#22402;&#30452;):      
  797.         f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;=0;f3&#24046;=[None,None,None];
  798.         for i&#24207;,cf3&#22402;&#30452;&#32593;&#28857;Co&#24207; in enumerate(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;):
  799.             if(i&#24207;==0):continue;
  800.             i&#27492;&#24207;=i&#24207;;i&#21069;&#24207;=i&#24207;-1;
  801.             &#916;&#916;&#24046;&#32473;f3&#19977;(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#27492;&#24207;],Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#21069;&#24207;],f3&#24046;);
  802.             f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;=sqrt( pow(f3&#24046;[0],2)+pow(f3&#24046;[1],2)+pow(f3&#24046;[2],2) );
  803.             #print("f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;   ",f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;,i&#21069;&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#21069;&#24207;][0],Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#27492;&#24207;][0]);
  804.             f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;+=f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;;
  805.             #Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;.append(f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;);#&#31532;&#19968;&#28857;&#19981;&#31639;
  806.        
  807.         if((len(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;)-1)==0):
  808.             f&#24179;&#22343;&#27573;&#32593;&#38271;=f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;;
  809.         else:
  810.             f&#24179;&#22343;&#27573;&#32593;&#38271;=f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;/(len(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;)-1);
  811.  
  812.         f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;=0;
  813.         for i&#24207;,cf3&#22402;&#30452;&#32593;&#28857;Co&#24207; in enumerate(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;):
  814.             if(i&#24207;==0):continue;
  815.             i&#27492;&#24207;=i&#24207;;i&#21069;&#24207;=i&#24207;-1;
  816.             &#916;&#916;&#24046;&#32473;f3&#19977;(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#27492;&#24207;],Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#21069;&#24207;],f3&#24046;);
  817.             f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;=sqrt( pow(f3&#24046;[0],2)+pow(f3&#24046;[1],2)+pow(f3&#24046;[2],2) );
  818.             #print("f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;   ",f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;,i&#21069;&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#21069;&#24207;][0],Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;[i&#27492;&#24207;][0]);
  819.            
  820.             f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;+=(f&#24179;&#22343;&#27573;&#32593;&#38271;+(f&#32593;&#36825;&#27573;&#36317;&#31163;&#27491;-f&#24179;&#22343;&#27573;&#32593;&#38271;)*bpy.context.scene.fp&#21442;&#25968;s2);
  821.             Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;.append(f&#32593;&#32047;&#27573;&#36317;&#31163;&#27491;);#&#31532;&#19968;&#28857;&#19981;&#31639;
  822.     #--------------------------------------------------------------------------
  823.     return (b&#26159;&#21542;&#22402;&#30452;,Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;);
  824.    
  825. def &#916;&#916;&#36171;&#20540;&#32447;uv(Lmuvl,ii&#36873;&#28857;&#24635;&#25968;,ii&#23618;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;,Lcf2UV&#24212;&#30495;&#24207;,Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;):
  826.  
  827.     global b&#36873;&#28857;&#20840;&#23553;&#38381;G;global f&#24179;&#34892;&#32593;&#24635;&#38271;G;
  828.     if (L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][1]==L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][1]): #&#20840;&#23553;&#38381;
  829.         b&#36873;&#28857;&#20840;&#23553;&#38381;G=True;###print("ALL CLOSE",);
  830.        
  831.     if(b&#36873;&#28857;&#20840;&#23553;&#38381;G ):#&#36825;&#31181;&#24773;&#20917;&#19981;&#33021;&#36816;&#34892;&#21542;&#21017;&#20250;&#20986;&#38169;
  832.         return ;
  833.     #ii&#36873;&#28857;&#24635;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);ii&#23618;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
  834.     #-----&#36171;&#20540;&#32473;&#31532;&#19968;&#23618;uv---------------------------------------------------------------
  835.     for i&#24207;, LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]):#&#20808;&#25490;&#21015;&#31532;&#19968;&#23618;
  836.         uv&#27492;&#28857;&#30495;=Vector((Lcf2UV&#24212;&#30495;&#24207;[i&#24207;][0],Lcf2UV&#24212;&#30495;&#24207;[i&#24207;][1]))#&#27492;&#28857;&#32034;&#30340;uv
  837.         for i&#29615;&#27493; in range(  len(LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]) ):#&#36845;&#20195;  &#27492;&#28857;&#25152;&#26377;  &#29615;            
  838.             Lmuvl[ LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][i&#29615;&#27493;] ].uv=uv&#27492;&#28857;&#30495;;
  839.  
  840.     #-----&#36171;&#20540;&#32473;&#24179;&#34892;&#23618;uv------------------------------------------------------------
  841.     #for i&#23618;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;):
  842.         #print("Lay, LiR,G,IP==",i&#23618;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
  843.        
  844.     i&#24635;&#23454;&#38469;&#23618;&#25968;=ii&#23618;&#25968;-1;
  845.     #print("LayerCount==",ii&#23618;&#25968;,i&#24635;&#23454;&#38469;&#23618;&#25968;);
  846.     if((not bpy.context.window_manager.bp&#20256;&#25773;wm or i&#24635;&#23454;&#38469;&#23618;&#25968;<1) or b&#19977;&#35282;&#38754;G==True):
  847.         cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;=(c_float*2)(0,0);
  848.     elif(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-1]==[]):#&#26368;&#21518;&#19968;&#23618;&#20026;&#31354; &#36935;&#21040;&#19977;&#35282;&#24418; &#22810;&#24314;&#19968;&#23618;
  849.         cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;=cf2&#916;&#916;&#36716;uv&#20026;cf2(Lmuvl[ L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-2][0][0][0] ].uv);#&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;
  850.         #print("Last Group==", L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-2][0][1] );
  851.     else:#&#26368;&#21518;&#19968;&#23618;&#20026;&#20498;&#25968;&#31532;&#20108;&#23618;
  852.         cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;=cf2&#916;&#916;&#36716;uv&#20026;cf2(Lmuvl[ L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-2][0][0][0] ].uv);#&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;
  853.         #print("Last Group==", L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[-2][0][1] );
  854.    
  855.     #print("LayLen==",i&#24635;&#23454;&#38469;&#23618;&#25968;);
  856.     #----&#35745;&#31639;&#22402;&#30452;--------------------------------------------------------------------
  857.     b&#26159;&#21542;&#22402;&#30452;,Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;=Lb_Lf&#916;&#916;&#35745;&#31639;&#32593;&#22402;&#30452;&#38271;(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;);
  858.    
  859.        
  860.     #----------------------------------------------------------------------------
  861.     f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;=f2&#916;&#916;&#27714;f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;(ii&#36873;&#28857;&#24635;&#25968;,i&#24635;&#23454;&#38469;&#23618;&#25968;,Lcf2UV&#24212;&#30495;&#24207;, Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;, cf2&#26368;&#21518;&#19968;&#23618;&#31532;&#19968;&#20010;&#32452;&#20301;);
  862.    
  863.     for ii&#24403;&#21069;&#23618;&#25968;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;):
  864.         #print("Lay, LiR,G,IP==",ii&#24403;&#21069;&#23618;&#25968;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
  865.         #if((not bpy.context.window_manager.bp&#20256;&#25773;wm or ii&#23618;&#25968;<4) and ii&#24403;&#21069;&#23618;&#25968;==0):#&#22914;&#26524;&#21482;&#26377;&#20004;&#23618;
  866.             #break;
  867.         if(ii&#24403;&#21069;&#23618;&#25968;==0 or ii&#24403;&#21069;&#23618;&#25968;==i&#24635;&#23454;&#38469;&#23618;&#25968;):#&#20174;&#31532;&#20108;&#23618;&#31639;&#36215;&#20316;&#31532;&#19968;&#23618; &#20498;&#25968;&#19968;&#23618;&#19981;&#29992;&#31639;&#65292;&#22240;&#20026;&#36208;&#26368;&#21518;&#19968;&#23618;&#26102;&#35760;&#24405;&#20102;&#20498;&#25968;&#31532;&#20108;&#23618;&#65292;&#36208;&#20498;&#25968;&#31532;&#20108;&#23618;&#26102;&#35760;&#24405;&#20102;&#26368;&#21518;&#19968;&#23618;
  868.             continue;
  869.  
  870.         &#916;&#916;&#20256;&#25773;&#27599;&#34892;&#24179;&#34892;&#28857;(ii&#36873;&#28857;&#24635;&#25968;,i&#24635;&#23454;&#38469;&#23618;&#25968;, ii&#24403;&#21069;&#23618;&#25968;,f2&#22402;&#30452;&#24635;&#20559;&#31227;&#30690;&#37327;, Lcf2UV&#24212;&#30495;&#24207;, b&#26159;&#21542;&#22402;&#30452;,Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491; , Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;);
  871.         #print("APPLY LAYER",ii&#24403;&#21069;&#23618;&#25968;);
  872.         for i&#24207;, Li&#21516;&#20301;&#32622;&#29615;_i&#32452;&#24207; in enumerate(LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;):#&#20808;&#25490;&#21015;&#31532;&#19968;&#23618;
  873.             uv&#27492;&#28857;&#30495;=Vector((Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;[i&#24207;][0],Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;[i&#24207;][1]));#&#27492;&#28857;&#32034;&#30340;uv
  874.             for i&#29615;&#27493; in range(  len(Li&#21516;&#20301;&#32622;&#29615;_i&#32452;&#24207;[0]) ):#&#36845;&#20195;  &#27492;&#28857;&#25152;&#26377;  &#29615;
  875.                 Lmuvl[ Li&#21516;&#20301;&#32622;&#29615;_i&#32452;&#24207;[0][i&#29615;&#27493;] ].uv=uv&#27492;&#28857;&#30495;;
  876.        
  877.  
  878. class &#21328;UV&#22278;&#28369;&#21328;Operator(bpy.types.Operator):
  879.     bl_idname = 'uv.circle'
  880.     bl_label = 'circle '
  881.     bl_options = {'REGISTER', 'UNDO'}
  882.     bl_description = "arrange the uv in a precise circle"
  883.    
  884.     @classmethod
  885.     def poll(cls, context):
  886.         return (context.mode == 'EDIT_MESH');
  887.        
  888.     def execute(self, context):
  889.         #if(context.scene.tool_settings.use_uv_select_sync== True):
  890.             #context.scene.tool_settings.use_uv_select_sync= False;return {'FINISHED'};
  891.         #print ("&#21328;UV&#22278;&#28369;&#21328;Operator")
  892.         #LLLi&#916;&#916;&#916;&#36873;&#20013;&#28857;&#25490;&#21015;();bpy.ops.object.mode_set(mode='EDIT');return {'FINISHED'}
  893.         Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#29615;&#22278;&#24515;=LLLi&#916;&#916;&#916;&#36873;&#20013;&#28857;&#25490;&#21015;();
  894.         if(Lmuvl==None):
  895.             self.report({"ERROR"},"you only select one vertex");
  896.             return {'FINISHED'};
  897.         #for i, LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;):
  898.             #print("LayRingGroup",len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;),len(LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;),LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
  899.  
  900.         """"""
  901.         global b&#36873;&#28857;&#20840;&#23553;&#38381;G;
  902.         if(b&#36873;&#28857;&#20840;&#23553;&#38381;G):
  903.         #if (L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][1]==L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][1]): #&#20840;&#23553;&#38381;
  904.             uv&#22836;=Lmuvl[ L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][0][0] ].uv;#[i&#28857;&#32034;,[i&#29615;&#36873;0,-1,i&#29615;&#36873;2,-1]]
  905.             uv&#23614;=Lmuvl[ L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][1][0][0] ].uv;  
  906.             #b&#36873;&#28857;&#20840;&#23553;&#38381;G=True;##print("ALL CLOSE 2",);
  907.  
  908.         else: #&#27491;&#24120;&#28857;
  909.             #print("i face==",i&#20010;&#38754;&#20849;&#28857;);
  910.             uv&#22836;=Lmuvl[ L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][0][0] ].uv;#[i&#28857;&#32034;,[i&#29615;&#36873;0,i&#29615;&#36873;2,]]          
  911.             uv&#23614;=Lmuvl[ L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][0][0] ].uv;
  912.        
  913.         uv&#20013;=Lmuvl[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])//2][0][0]].uv;
  914.        
  915.         #cf2&#22836;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#22836;);cf2&#23614;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#23614;);cf2&#20013;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#20013;);#&#9679;&#9679;
  916.         #cf3XYR=(c_float*3)();#&#9679;&#9679;
  917.         cf3XYR=[None,None,None];
  918.         #D.DLL.b&#916;&#916;&#27714;&#22278;&#24515;&#19982;&#21322;&#24452;&#22352;&#26631;&#32473;f3&#22235; .argtypes = [c_float, c_float,c_float,c_float] # &#21442;&#25968;&#31867;&#22411;&#65292;&#20004;&#20010;float&#65288;c_float&#20869;ctypes&#31867;&#22411;&#65289;
  919.         #D.DLL.b&#916;&#916;&#27714;&#22278;&#24515;&#19982;&#21322;&#24452;&#22352;&#26631;&#32473;f3&#22235;.restype = c_bool;
  920.         #b&#26377;&#22278;&#24515;=D.DLL.b&#916;&#916;&#27714;&#22278;&#24515;&#19982;&#21322;&#24452;&#22352;&#26631;&#32473;f3&#22235;(cf2&#22836;,cf2&#23614;,cf2&#20013;,cf3XYR);
  921.         b&#26377;&#22278;&#24515;=b&#916;&#916;&#27714;&#22278;&#24515;&#19982;&#21322;&#24452;&#22352;&#26631;&#32473;f3&#22235;(uv&#22836;,uv&#23614;,uv&#20013;,cf3XYR)
  922.         #print("HAEV HART==",b&#26377;&#22278;&#24515;);
  923.         if(b&#26377;&#22278;&#24515;==False ):
  924.             #print ("&#22278;&#24515;&#25104;&#19968;&#30452;&#32447;",b&#26377;&#22278;&#24515;)
  925.             &#21328;UV&#24179;&#28369;&#21328;Operator.execute(self, context);
  926.             bpy.ops.object.mode_set(mode='EDIT');
  927.             return {'FINISHED'};
  928.         #print ("&#26377;&#22278;&#24515;",b&#26377;&#22278;&#24515;)
  929.         #uv&#22278;&#24515;=Vector((cf3XYR[0],cf3XYR[1]));
  930.         f&#21322;&#24452;=cf3XYR[2];
  931.         #cf2&#22278;&#24515;=(c_float*2)(cf3XYR[0],cf3XYR[1]);#&#9679;&#9679;
  932.         cf2&#22278;&#24515;=[cf3XYR[0],cf3XYR[1]];
  933.         #print("HART==",cf3XYR[0],cf3XYR[1]);#&#27491;&#30830;
  934.        
  935.         #D.DLL.f&#916;&#916;&#30693;&#19977;&#28857;&#27714;&#23545;&#35282;&#24359;.restype = c_float ;D.DLL.b&#916;&#916;&#26816;&#27979;&#24635;&#24359;&#26159;&#21542;&#39034;&#26102;&#38024;.restype = c_bool;#&#9679;&#9679;
  936.         #b&#39034;=D.DLL.b&#916;&#916;&#26816;&#27979;&#24635;&#24359;&#26159;&#21542;&#39034;&#26102;&#38024;(cf2&#22836;,cf2&#20013;, cf2&#23614;, cf2&#22278;&#24515;);#&#9679;&#9679;
  937.         b&#39034;=b&#916;&#916;&#26816;&#27979;&#24635;&#24359;&#26159;&#21542;&#39034;&#26102;&#38024;(uv&#22836;,uv&#20013;, uv&#23614;, cf2&#22278;&#24515;);
  938.         #print("bORDER==", b&#39034;);
  939.        
  940.         #f&#23545;&#35282;&#24359;=D.DLL.f&#916;&#916;&#30693;&#19977;&#28857;&#27714;&#23545;&#35282;&#24359;(cf2&#22836;,cf2&#23614;,cf2&#22278;&#24515;);#&#9679;&#9679;
  941.         f&#23545;&#35282;&#24359;=f&#916;&#916;&#30693;&#19977;&#28857;&#27714;&#23545;&#35282;&#24359;(uv&#22836;,uv&#23614;,cf2&#22278;&#24515;);
  942.         #f&#20013;&#24359;=D.DLL.f&#916;&#916;&#30693;&#19977;&#28857;&#27714;&#23545;&#35282;&#24359;(cf2&#22836;,cf2&#23614;,cf2&#20013;);#&#9679;&#9679;
  943.         f&#20013;&#24359;=f&#916;&#916;&#30693;&#19977;&#28857;&#27714;&#23545;&#35282;&#24359;(uv&#22836;,uv&#23614;,uv&#20013;);
  944.         if(f&#20013;&#24359;<pi/2):#&#36825;&#26159;&#22823;&#20110;&#21322;&#22278;&#30340;&#24359;
  945.             f&#23545;&#35282;&#24359;=2*pi-f&#23545;&#35282;&#24359;;#&#21462;&#21453;&#24359;&#24230;
  946.  
  947.         if(b&#36873;&#28857;&#20840;&#23553;&#38381;G==True):#&#20840;&#23553;&#38381;
  948.             f&#23545;&#35282;&#24359;=-2*pi;
  949.             #f&#24179;&#22343;&#24359;=f&#23545;&#35282;&#24359;/(len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])-1);
  950.            
  951.         #else:
  952.         f&#24179;&#22343;&#24359;=f&#23545;&#35282;&#24359;/(len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])-1);
  953.            
  954.         #print ("fHU==",f&#23545;&#35282;&#24359;,f&#20013;&#24359;);    
  955.         #----&#36171;&#20540;uv------------------------------------------------------------------
  956.        #----&#35745;&#31639;&#22402;&#30452;--------------------------------------------------------------------
  957.         ii&#36873;&#28857;&#24635;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]);
  958.         Lcf3&#32593;&#28857;Co&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;=LLcf3&#916;&#916;&#24471;&#36873;&#28857;&#32593;co&#21015;&#34920;(ii&#36873;&#28857;&#24635;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
  959.         b&#26159;&#21542;&#22402;&#30452;,Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;=Lb_Lf&#916;&#916;&#35745;&#31639;&#32593;&#22402;&#30452;&#38271;(Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;);
  960.         if(b&#36873;&#28857;&#20840;&#23553;&#38381;G==True and context.window_manager.bp&#20256;&#25773;wm):
  961.             for i in range( len(Li&#29615;&#22278;&#24515;)):#&#36845;&#20195;  &#27492;&#28857;&#25152;&#26377;uv loop &#36171;&#20540;&#22278;&#24515;
  962.                 Lmuvl[Li&#29615;&#22278;&#24515;[i]].uv=Vector((cf2&#22278;&#24515;[0],cf2&#22278;&#24515;[1]));
  963.            
  964.         ii&#23618;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
  965.         i&#23618;&#25968;&#23454;&#38469;=ii&#23618;&#25968;-1;
  966.         uv&#21322;&#24452;&#30690;&#37327;=uv&#22836;-Vector((cf2&#22278;&#24515;[0],cf2&#22278;&#24515;[1]));
  967.         if(not context.window_manager.bp&#20256;&#25773;wm):
  968.             f&#27599;&#27573;&#27604;&#20363;=f&#27599;&#27573;&#21322;&#24452;=0;
  969.         else:
  970.             f&#27599;&#27573;&#21322;&#24452;=f&#21322;&#24452;/(i&#23618;&#25968;&#23454;&#38469;);
  971.             f&#27599;&#27573;&#27604;&#20363;=f&#27599;&#27573;&#21322;&#24452;/uv&#21322;&#24452;&#30690;&#37327;.length;
  972.  
  973.         for i&#23618;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;) :
  974.             if(b&#36873;&#28857;&#20840;&#23553;&#38381;G==False and i&#23618;>0):
  975.                 break;
  976.             if(not context.window_manager.bp&#20256;&#25773;wm and i&#23618;>0):#&#22914;&#26524;&#19981;&#20256;&#25773; &#31532;&#20108;&#23618;&#23601; break;
  977.                 break;
  978.             #print("APPLY  Layer,LL==",i&#23618;,LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
  979.             if(ii&#23618;&#25968;>1 and i&#23618;==ii&#23618;&#25968;-1):#&#26368;&#21518;&#19968;&#23618;&#19981;&#29992;&#31639;&#65292;&#20174;&#31532;&#20108;&#23618;&#31639;&#36215;&#20316;&#31532;&#19968;&#23618;  &#22240;&#20026;&#36208;&#26368;&#21518;&#19968;&#23618;&#26102;&#35760;&#24405;&#20102;&#20498;&#25968;&#31532;&#20108;&#23618;
  980.                 continue;
  981.                
  982.             if(b&#26159;&#21542;&#22402;&#30452;):
  983.                 i&#32047;&#38271;&#24230;=len(Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;);
  984.                 #print("LEN LfLei,Layer==",i&#32047;&#38271;&#24230;,i&#23618;&#25968;&#23454;&#38469;);
  985.                 if(Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[i&#32047;&#38271;&#24230;-1]==0):
  986.                     Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[i&#32047;&#38271;&#24230;-1]=0.0000001;b&#26159;&#21542;&#22402;&#30452;=False;
  987.                 #print("LEN Lf,Lay-3==",ii&#23618;&#25968;-3-i&#23618;,i&#32047;&#38271;&#24230;,ii&#23618;&#25968;-3);
  988.                 i&#27492;&#24207;=i&#32047;&#38271;&#24230;-1-i&#23618;;
  989.                 f&#27492;&#27573;&#27604;&#20363;=Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[i&#27492;&#24207;]/Lf&#32593;&#32047;&#27599;&#27573;&#22402;&#30452;&#38271;&#27491;[i&#32047;&#38271;&#24230;-1];
  990.                 #print("Portion==",f&#27492;&#27573;&#27604;&#20363;);
  991.                 #if(i&#28857;&#32034;&#22278;&#24515;G==None and i&#23618;==i&#23618;&#25968;&#23454;&#38469;):
  992.                    
  993.  
  994.             for i&#24207;, Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;):
  995.                 if (b&#36873;&#28857;&#20840;&#23553;&#38381;G and (i&#24207;==0 or i&#24207;==len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])-1)): #&#22914;&#26524;&#26159;&#22836;&#25110;&#23614;&#28857; &#24182;&#23553;&#38381;
  996.                     if(b&#26159;&#21542;&#22402;&#30452;):
  997.                         uv&#22836;&#30495;=uv&#21322;&#24452;&#30690;&#37327;*f&#27492;&#27573;&#27604;&#20363;+Vector((cf2&#22278;&#24515;[0],cf2&#22278;&#24515;[1]));
  998.                     else:
  999.                         uv&#22836;&#30495;=uv&#21322;&#24452;&#30690;&#37327;-uv&#21322;&#24452;&#30690;&#37327;*f&#27599;&#27573;&#27604;&#20363;*i&#23618;+Vector((cf2&#22278;&#24515;[0],cf2&#22278;&#24515;[1]));
  1000.                     for i in range( len(Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])):#&#36845;&#20195;  &#27492;&#28857;&#25152;&#26377;uv loop
  1001.                         Lmuvl[Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][i]].uv=Vector((uv&#22836;&#30495;[0],uv&#22836;&#30495;[1]));    
  1002.                     continue;
  1003.                 if(b&#36873;&#28857;&#20840;&#23553;&#38381;G==False and (i&#24207;==0 or i&#24207;==len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])-1)):#&#22914;&#26524; &#21482;&#26159;&#32447;&#36873;
  1004.                     continue;
  1005.                 #print ("i&#28857;&#32034;&#24207;&#36873;",Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;)
  1006.                 #cf&#21152;&#24359;&#27491;=c_float(f&#24179;&#22343;&#24359;*i&#24207;);#&#9679;&#9679;
  1007.                 cf&#21152;&#24359;&#27491;=f&#24179;&#22343;&#24359;*i&#24207;;
  1008.                 #D.DLL.f&#916;&#916;&#27714;&#21152;&#24359;&#27491;&#30495;.restype = c_float ;#&#9679;&#9679;
  1009.                 #f&#21152;&#24359;&#27491;&#30495;=D.DLL.f&#916;&#916;&#27714;&#21152;&#24359;&#27491;&#30495;(cf2&#22836;,cf2&#22278;&#24515;, cf&#21152;&#24359;&#27491;,b&#39034;  );#&#9679;&#9679;
  1010.                 f&#21152;&#24359;&#27491;&#30495;=f&#916;&#916;&#27714;&#21152;&#24359;&#27491;&#30495;(uv&#22836;,cf2&#22278;&#24515;, cf&#21152;&#24359;&#27491;,b&#39034;);
  1011.                 #cf2&#22278;&#27492;&#28857;&#30495;=(c_float*2)();#&#9679;&#9679;
  1012.                 cf2&#22278;&#27492;&#28857;&#30495;=[None,None];
  1013.                 #cf&#21152;&#24359;&#27491;&#30495;=c_float(f&#21152;&#24359;&#27491;&#30495;);cf&#21322;&#24452;=c_float(f&#21322;&#24452;-(f&#27599;&#27573;&#21322;&#24452;*i&#23618;));#&#9679;&#9679;
  1014.                 cf&#21152;&#24359;&#27491;&#30495;=f&#21152;&#24359;&#27491;&#30495;;
  1015.                 if(b&#26159;&#21542;&#22402;&#30452;):    
  1016.                     cf&#21322;&#24452;=f&#21322;&#24452;*f&#27492;&#27573;&#27604;&#20363;;
  1017.                    
  1018.                 else:
  1019.                     cf&#21322;&#24452;=f&#21322;&#24452;-(f&#27599;&#27573;&#21322;&#24452;*i&#23618;);
  1020.                 #D.DLL.&#916;&#916;&#30693;&#24359;&#27714;&#28857;&#32473;f2&#22235;&#30495;(cf&#21152;&#24359;&#27491;&#30495;,cf&#21322;&#24452;, cf2&#22278;&#24515;,cf2&#22278;&#27492;&#28857;&#30495;);#&#9679;&#9679;
  1021.                 &#916;&#916;&#30693;&#24359;&#27714;&#28857;&#32473;f2&#22235;&#30495;(cf&#21152;&#24359;&#27491;&#30495;,cf&#21322;&#24452;, cf2&#22278;&#24515;,cf2&#22278;&#27492;&#28857;&#30495;);
  1022.                
  1023.                 for i in range( len(Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0])):#&#36845;&#20195;  &#27492;&#28857;&#25152;&#26377;uv loop
  1024.                     Lmuvl[Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][i]].uv=Vector((cf2&#22278;&#27492;&#28857;&#30495;[0],cf2&#22278;&#27492;&#28857;&#30495;[1]));
  1025.                
  1026.         bpy.ops.object.mode_set(mode='EDIT');
  1027.         return {'FINISHED'};
  1028.  
  1029. #覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
  1030. global f&#36317;&#31163;&#21442;&#25968;G;f&#36317;&#31163;&#21442;&#25968;G=None;
  1031. global L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G;L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G=[];
  1032. global b&#19977;&#20493;&#24179;&#28369;G; b&#19977;&#20493;&#24179;&#28369;G=False ;
  1033.  
  1034. def Lmuvl&#916;&#916;&#36820;&#22238;Lmuvl():# &#36825;&#20010;&#21482;&#33021;&#22312;&#29289;&#20307;&#27169;&#24335;&#19979;&#25165;&#33021;&#35760;&#24405;&#25968;&#25454;
  1035.     bpy.ops.object.mode_set(mode='OBJECT');
  1036.     id = bpy.context.active_object.data ;
  1037.     if (not  id.uv_layers.active):
  1038.         return {'FINISHED'};
  1039.     id=bpy.context.active_object.data;
  1040.     return id.uv_layers.active.data ;
  1041.    
  1042.    
  1043. class &#21328;UV&#24179;&#28369;&#21328;Operator(bpy.types.Operator):
  1044.     bl_idname = 'uv.smooth'
  1045.     bl_label = 'smooth'
  1046.     bl_options = {'REGISTER', 'UNDO'}
  1047.     bl_description = "smooth uv while preserving the shape"
  1048.    
  1049.     cf&#36317;&#31163;&#21442;&#25968;=None;
  1050.     @classmethod
  1051.     def poll(cls, context):
  1052.         return True # (context.mode == 'EDIT_MESH');
  1053.        
  1054.     def execute(self, context):
  1055.         #if(context.scene.tool_settings.use_uv_select_sync== True):
  1056.             #context.scene.tool_settings.use_uv_select_sync= False;return {'FINISHED'};
  1057.         global f&#36317;&#31163;&#21442;&#25968;G;
  1058.         #print("G==",f&#36317;&#31163;&#21442;&#25968;G);
  1059.         self.cf&#36317;&#31163;&#21442;&#25968;=f&#36317;&#31163;&#21442;&#25968;G;
  1060.         if(self.cf&#36317;&#31163;&#21442;&#25968;==None):
  1061.             #print("G==None",self.cf&#36317;&#31163;&#21442;&#25968;);
  1062.             #self.cf&#36317;&#31163;&#21442;&#25968;=c_float(bpy.context.scene.fp&#21442;&#25968;s2);#&#9679;&#9679;
  1063.             self.cf&#36317;&#31163;&#21442;&#25968;=context.scene.fp&#21442;&#25968;s2;
  1064.         #----&#36733;&#20837;&#25968;&#25454;----------------------------------------------------------------
  1065.         #global L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;&#21069;G;
  1066.         global L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G;
  1067.         global b&#19977;&#20493;&#24179;&#28369;G;
  1068.  
  1069.         id=bpy.context.active_object.data;
  1070.  
  1071.         L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;=[];
  1072.         if(b&#19977;&#20493;&#24179;&#28369;G and L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G):      
  1073.             Lmuvl=Lmuvl&#916;&#916;&#36820;&#22238;Lmuvl();
  1074.             #L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G;
  1075.             #print("HAVE DATA",Lmuvl);
  1076.         else:
  1077.             Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G,Li&#29615;&#22278;&#24515;=LLLi&#916;&#916;&#916;&#36873;&#20013;&#28857;&#25490;&#21015;();
  1078.             if(Lmuvl==None):
  1079.                 self.report({"ERROR"},"you only select one vertex");
  1080.                 return {'FINISHED'};
  1081.             #L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G=L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G;
  1082.  
  1083.         #----------------------------------------------------------------------------
  1084.         global b&#36873;&#28857;&#20840;&#23553;&#38381;G;
  1085.         if(b&#36873;&#28857;&#20840;&#23553;&#38381;G):return {'FINISHED'};        
  1086.         ii&#23618;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G);
  1087.         ii&#36873;&#28857;&#24635;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G[0]);
  1088.        
  1089.         Lcf2uv&#36873;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();Lcf2UV&#24212;&#30495;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();
  1090.  
  1091.         for i&#24207;, Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207; in enumerate(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G[0]):#&#31532;&#19968;&#23618;      
  1092.             #try:
  1093.             uv=Lmuvl[Li&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0]].uv;
  1094.             #except:
  1095.                 #print("Wrong LLLiii2",Lmuvl);return {'FINISHED'};
  1096.             #print("uv loop==",LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0],LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0]);
  1097.             #Luv&#24207;.append(uv)
  1098.             cf2UV=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv);
  1099.             Lcf2uv&#36873;&#24207;[i&#24207;]=cf2UV;
  1100.         #print("Right LLLiii",Lmuvl);
  1101.         #print ("Luv&#24207;",Luv&#24207;,"i&#20010;&#38754;&#20849;&#28857;",i&#20010;&#38754;&#20849;&#28857;)
  1102.         #Lcf&#27599;&#27573;&#38271;&#27491;=(c_float*ii&#36873;&#28857;&#24635;&#25968;)();Lcf&#27599;&#27573;&#32047;&#38271;&#27491;=(c_float*ii&#36873;&#28857;&#24635;&#25968;)();#&#9679;&#9679;
  1103.         Lcf&#27599;&#27573;&#38271;&#27491;=[0 for f in range(ii&#36873;&#28857;&#24635;&#25968;)];Lcf&#27599;&#27573;&#32047;&#38271;&#27491;=[0 for f in range(ii&#36873;&#28857;&#24635;&#25968;)];
  1104.         #Lcf&#32593;&#27599;&#27573;&#32047;&#38271;&#27491;=(c_float*ii&#36873;&#28857;&#24635;&#25968;)();#&#9679;&#9679;
  1105.         Lcf&#32593;&#27599;&#27573;&#32047;&#38271;&#27491;=[0 for f in range(ii&#36873;&#28857;&#24635;&#25968;)];
  1106.         #print ("Lmuvl&#19968;",Lmuvl)#&#20026;&#20160;&#20040;Lmuvl&#20026;&#26377;
  1107.         Lcf3&#32593;&#28857;Co&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;=LLcf3&#916;&#916;&#24471;&#36873;&#28857;&#32593;co&#21015;&#34920;(ii&#36873;&#28857;&#24635;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G);#&#36825;&#20010;&#25226;Lmuvl&#24324;&#27809;&#20102;
  1108.         #Lcf3&#32593;&#28857;Co&#24207;=((c_float*3)*ii&#36873;&#28857;&#24635;&#25968;)();
  1109.         #for i in Lcf3&#32593;&#28857;Co&#24207;: #print ("iCO==",i[0],i[1],i[2]);#co&#22352;&#26631;
  1110.         #for i in Lcf2uv&#36873;&#24207;: #print ("fuv==",i[0],i[1]);#uv&#22352;&#26631;
  1111.         #print ("iiPoint==",ii&#36873;&#28857;&#24635;&#25968;)
  1112.         #D.DLL.&#916;&#916;UV&#24179;&#28369;&#32473;Lf2&#20843;(ii&#36873;&#28857;&#24635;&#25968;,self.cf&#36317;&#31163;&#21442;&#25968;,Lcf&#32593;&#27599;&#27573;&#32047;&#38271;&#27491;,Lcf3&#32593;&#28857;Co&#24207;,Lcf&#27599;&#27573;&#38271;&#27491;,Lcf&#27599;&#27573;&#32047;&#38271;&#27491;,Lcf2uv&#36873;&#24207;, Lcf2UV&#24212;&#30495;&#24207;);#&#9679;&#9679;
  1113.         &#916;&#916;UV&#24179;&#28369;&#32473;Lf2&#20843;(ii&#36873;&#28857;&#24635;&#25968;,self.cf&#36317;&#31163;&#21442;&#25968;,Lcf&#32593;&#27599;&#27573;&#32047;&#38271;&#27491;,Lcf3&#32593;&#28857;Co&#24207;,Lcf&#27599;&#27573;&#38271;&#27491;,Lcf&#27599;&#27573;&#32047;&#38271;&#27491;,Lcf2uv&#36873;&#24207;, Lcf2UV&#24212;&#30495;&#24207;);
  1114.                                                          
  1115.         #--&#36171;&#20540;&#32473;uv------------------------------------------------------------------
  1116.  
  1117.         &#916;&#916;&#36171;&#20540;&#32447;uv(Lmuvl,ii&#36873;&#28857;&#24635;&#25968;,ii&#23618;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;,Lcf2UV&#24212;&#30495;&#24207;,Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;);
  1118.  
  1119.         bpy.ops.object.mode_set(mode='EDIT');
  1120.         f&#36317;&#31163;&#21442;&#25968;G=None;
  1121.         return {'FINISHED'};
  1122.        
  1123. #覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧      
  1124. class &#21328;UV&#19977;&#20493;&#24179;&#28369;&#21328;Operator(bpy.types.Operator):
  1125.     bl_idname = 'uv.smooth3'
  1126.     bl_label = 'smooth'
  1127.     bl_options = {'REGISTER', 'UNDO'}
  1128.     bl_description = "smooth uv heavier"
  1129.    
  1130.     @classmethod
  1131.     def poll(cls, context):
  1132.         return (context.mode == 'EDIT_MESH');
  1133.        
  1134.     def execute(self, context):
  1135.         global f&#36317;&#31163;&#21442;&#25968;G;
  1136.         global b&#19977;&#20493;&#24179;&#28369;G;
  1137.         global L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G;
  1138.  
  1139.         b&#19977;&#20493;&#24179;&#28369;G=True ;L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G=[];
  1140.         #for cf&#36317;&#31163;&#21442;&#25968; in [c_float(0.0),c_float(1.0),c_float(0.5),c_float(bpy.context.scene.fp&#21442;&#25968;s2)]:#&#9679;&#9679;
  1141.         for cf&#36317;&#31163;&#21442;&#25968; in [0.0,1.0,0.5,bpy.context.scene.fp&#21442;&#25968;s2]:
  1142.             #&#21328;UV&#24179;&#28369;=&#21328;UV&#24179;&#28369;&#21328;Operator("OPERATOR");
  1143.             #&#21328;UV&#24179;&#28369;.cf&#36317;&#31163;&#21442;&#25968;=cf&#36317;&#31163;&#21442;&#25968;;
  1144.            
  1145.             f&#36317;&#31163;&#21442;&#25968;G=cf&#36317;&#31163;&#21442;&#25968;;
  1146.             #&#21328;UV&#24179;&#28369;&#21328;Operator.execute(self, context);
  1147.             bpy.ops.uv.smooth('INVOKE_DEFAULT',);
  1148.             print("EXE count",);
  1149.         #----------------------------------------------------------------------------
  1150.         b&#19977;&#20493;&#24179;&#28369;G=False  ;L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;G=[];
  1151.         return {'FINISHED'};
  1152.        
  1153. #覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
  1154. class &#21328;&#25289;&#30452;&#21328;Operator(bpy.types.Operator):
  1155.     bl_idname = 'straight.uv'
  1156.     bl_label = 'straight'
  1157.     bl_options = {'REGISTER', 'UNDO'}
  1158.     bl_description = "straithen uv and homogeneous alignment  "
  1159.     bl_register = True
  1160.     bl_undo = True
  1161.    
  1162.     @classmethod
  1163.     def poll(cls, context):
  1164.         return (context.mode == 'EDIT_MESH');
  1165.     def execute(self, context):
  1166.         #if(context.scene.tool_settings.use_uv_select_sync== True):
  1167.             #context.scene.tool_settings.use_uv_select_sync= False;return {'FINISHED'};            
  1168.         Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#29615;&#22278;&#24515;=LLLi&#916;&#916;&#916;&#36873;&#20013;&#28857;&#25490;&#21015;();
  1169.         if(Lmuvl==None):
  1170.             self.report({"ERROR"},"you only select one vertex");
  1171.             return {'FINISHED'};
  1172.         global b&#36873;&#28857;&#20840;&#23553;&#38381;G;
  1173.         if(b&#36873;&#28857;&#20840;&#23553;&#38381;G):return {'FINISHED'};
  1174.         #return {'FINISHED'}
  1175.         ii&#36873;&#28857;&#24635;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]);
  1176.         ii&#23618;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
  1177.        
  1178.         uv&#22836;=Lmuvl[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][0][0]].uv;      #[i&#28857;&#32034;,[i&#29615;&#36873;0,i&#29615;&#36873;2,]]          
  1179.         uv&#23614;=Lmuvl[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][0][0]].uv;
  1180.      
  1181.         #cf2UV&#22836;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#22836;);cf2UV&#23614;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#23614;);#&#9679;&#9679;
  1182.         #Lcf2UV&#24212;&#30495;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();#&#9679;&#9679;
  1183.         Lcf2UV&#24212;&#30495;&#24207;=[[None,None] for f in range(ii&#36873;&#28857;&#24635;&#25968;)];Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;=[[None,None] for f in range(ii&#36873;&#28857;&#24635;&#25968;)];
  1184.         #D.DLL.&#916;&#916;&#25289;&#30452;UV&#32473;Lf2&#22235;(ii&#36873;&#28857;&#24635;&#25968;,cf2UV&#22836;,cf2UV&#23614;,Lcf2UV&#24212;&#30495;&#24207;);  #&#9679;&#9679;
  1185.         Lcf3&#32593;&#28857;Co&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;=LLcf3&#916;&#916;&#24471;&#36873;&#28857;&#32593;co&#21015;&#34920;(ii&#36873;&#28857;&#24635;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
  1186.         &#916;&#916;&#25289;&#30452;UV&#32473;Lf2&#22235;(ii&#36873;&#28857;&#24635;&#25968;,uv&#22836;,uv&#23614;,Lcf2UV&#24212;&#30495;&#24207;);
  1187.  
  1188.         &#916;&#916;&#36171;&#20540;&#32447;uv(Lmuvl,ii&#36873;&#28857;&#24635;&#25968;,ii&#23618;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;,Lcf2UV&#24212;&#30495;&#24207;,Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;);
  1189.         if(context.window_manager.bp&#20256;&#25773;wm and context.window_manager.bp&#22402;&#30452;&#36317;&#31163;wm):
  1190.               return bpy.ops.uv.smooth('INVOKE_DEFAULT',);
  1191.         bpy.ops.object.mode_set(mode='EDIT');
  1192.         return {'FINISHED'}
  1193.  
  1194.  
  1195. #覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
  1196. class &#21328;&#33258;&#21160;&#23545;&#40784;&#21328;Operator(bpy.types.Operator):
  1197.     bl_idname = 'align.uv'
  1198.     bl_label = 'align'
  1199.     bl_options = {'REGISTER', 'UNDO'}
  1200.     bl_description = "align uv in X or Y axis and homogeneous alignment  "
  1201.  
  1202.     @classmethod
  1203.     def poll(cls, context):
  1204.         return (context.mode == 'EDIT_MESH');
  1205.     def execute(self, context):  
  1206.         #if(context.scene.tool_settings.use_uv_select_sync== True):
  1207.             #context.scene.tool_settings.use_uv_select_sync= False;return {'FINISHED'};    
  1208.         Lmuvl,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Li&#29615;&#22278;&#24515;=LLLi&#916;&#916;&#916;&#36873;&#20013;&#28857;&#25490;&#21015;();
  1209.         if(Lmuvl==None):
  1210.             self.report({"ERROR"},"you only select one vertex");
  1211.             return {'FINISHED'};
  1212.         global b&#36873;&#28857;&#20840;&#23553;&#38381;G;
  1213.         if(b&#36873;&#28857;&#20840;&#23553;&#38381;G):return {'FINISHED'};
  1214.        
  1215.         ii&#23618;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
  1216.         ii&#36873;&#28857;&#24635;&#25968;=len(L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0]);
  1217.        
  1218.         uv&#22836;=Lmuvl[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][0][0][0]].uv;      #[i&#28857;&#32034;,[i&#29615;&#36873;0,i&#29615;&#36873;2,]]          
  1219.         uv&#23614;=Lmuvl[L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;[0][-1][0][0]].uv;
  1220.         #print("Head Tail==",uv&#22836;,uv&#23614;);
  1221.         #cf2UV&#22836;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#22836;);cf2UV&#23614;=cf2&#916;&#916;&#36716;uv&#20026;cf2(uv&#23614;);#&#9679;&#9679;
  1222.         #Lcf2UV&#24212;&#30495;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;=((c_float*2)*ii&#36873;&#28857;&#24635;&#25968;)();#&#9679;&#9679;
  1223.         Lcf2UV&#24212;&#30495;&#24207;=[[None,None] for f in range(ii&#36873;&#28857;&#24635;&#25968;)];Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;=[[None,None] for f in range(ii&#36873;&#28857;&#24635;&#25968;)];
  1224.         #D.DLL.&#916;&#916;&#33258;&#21160;&#23545;&#40784;UV&#32473;Lf2&#22235;(ii&#36873;&#28857;&#24635;&#25968;,cf2UV&#22836;,cf2UV&#23614;,Lcf2UV&#24212;&#30495;&#24207;);#&#9679;&#9679;
  1225.         Lcf3&#32593;&#28857;Co&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;=LLcf3&#916;&#916;&#24471;&#36873;&#28857;&#32593;co&#21015;&#34920;(ii&#36873;&#28857;&#24635;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;);
  1226.         &#916;&#916;&#33258;&#21160;&#23545;&#40784;UV&#32473;Lf2&#22235;(ii&#36873;&#28857;&#24635;&#25968;,uv&#22836;,uv&#23614;,Lcf2UV&#24212;&#30495;&#24207;);
  1227.  
  1228.         &#916;&#916;&#36171;&#20540;&#32447;uv(Lmuvl,ii&#36873;&#28857;&#24635;&#25968;,ii&#23618;&#25968;,L&#39034;&#23618;LLi&#21516;&#20301;&#32622;&#29615;_i&#32452;_i&#28857;&#32034;&#24207;,Lcf3&#22402;&#30452;&#32593;&#28857;Co&#24207;,Lcf2UV&#24212;&#30495;&#24207;,Lcf2UV&#22402;&#30452;&#30340;&#24179;&#34892;&#32447;&#24212;&#30495;&#24207;);
  1229.        
  1230.         if(context.window_manager.bp&#20256;&#25773;wm and context.window_manager.bp&#22402;&#30452;&#36317;&#31163;wm):
  1231.               bpy.ops.uv.smooth('INVOKE_DEFAULT',);
  1232.         bpy.ops.object.mode_set(mode='EDIT');
  1233.         return {'FINISHED'}            
  1234.        
  1235. #覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
  1236.  
  1237. #覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧覧
  1238. #////////////////////////////////////////////////////////////////////////      
  1239. """
  1240. class &#21328;&#36733;&#20837;DLL&#21328;Operator(bpy.types.Operator):
  1241.    bl_idname = 'loaddll.uv';
  1242.    bl_label = '&#36733;&#20837;dll';
  1243.    bl_options = {'REGISTER', 'UNDO'};
  1244.    
  1245.    @classmethod
  1246.    def poll(cls, context):      
  1247.        return True; #(obj and obj.type == 'MESH')
  1248.    def execute(self, context):
  1249.        #D=&#21328;DLL&#31867;&#22411;();
  1250.        try:
  1251.            D.DLL = CDLL(dllpath32E);
  1252.        except:
  1253.            D.DLL = CDLL(dllpath64E);
  1254.        return {'FINISHED'};
  1255.        
  1256. class &#21328;&#21024;&#38500;DLL&#21328;Operator(bpy.types.Operator):
  1257.    '''&#21024;&#38500;dll'''
  1258.    bl_idname = 'deldll.uv'
  1259.    bl_label = 'deldll'
  1260.    bl_options = {'REGISTER', 'UNDO'}
  1261.    @classmethod
  1262.    def poll(cls, context):
  1263.        obj = context.active_object          
  1264.        return (obj and obj.type == 'MESH')
  1265.    def execute(self, context):
  1266.        #if(D.DLL):
  1267.        windll.kernel32.FreeLibrary(D.DLL._handle)#&#37322;&#25918;dll    
  1268.            #bpy.utils.unregister_module(__name__)
  1269.            #print ("&#24050;&#32463;&#21024;&#38500;DLL")
  1270.         #print ("fp=",context.scene.fp&#21442;&#25968;s2)
  1271.         return {'FINISHED'}
  1272. """
  1273. #/////////////////////////////////////////////////////////////////////////
  1274. class &#21328;Panel(bpy.types.Panel):
  1275.    bl_space_type = 'IMAGE_EDITOR'
  1276.    bl_region_type = 'UI'
  1277.    bl_idname = '&#24179;&#28369;uv'
  1278.    bl_label = "uv_tool"
  1279.    bl_context = "objectmode"
  1280.    #bpy.types.UVLoopLayers.fp&#21442;&#25968;uvll=FloatProperty(name="fp&#21442;&#25968;s2", description="--", default=0.0, min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, step=3, precision=2)
  1281.     #bl_options = {'DEFAULT_CLOSED'}
  1282.     def draw(self, context):
  1283.         uil&#30028; = self.layout
  1284.         uil&#21015;&#19968;= uil&#30028;.column(align=True)
  1285.         uil&#21015;&#20108;=uil&#21015;&#19968;.split(0.2)
  1286.         uil&#21015;&#20108;.operator(&#21328;UV&#22278;&#28369;&#21328;Operator.bl_idname, text="Circle",icon="SPHERECURVE")
  1287.         uil&#21015;&#20108;.operator(&#21328;UV&#24179;&#28369;&#21328;Operator.bl_idname, text="Smooth",icon="SMOOTHCURVE")
  1288.         uil&#21015;&#20108;.operator(&#21328;UV&#19977;&#20493;&#24179;&#28369;&#21328;Operator.bl_idname, text="smooth*3")
  1289.         uil&#34892;=uil&#30028;.row(align=True);
  1290.         uil&#34892;.prop( context.scene, "fp&#21442;&#25968;s2", text = "mesh distance", slider = True,);
  1291.         uil&#34892;=uil&#30028;.row(align=True);
  1292.         uil&#34892;.prop( context.window_manager, "bp&#20256;&#25773;wm", text = "transmission", toggle=True);
  1293.         uil&#34892;.prop( context.window_manager, "bp&#22402;&#30452;&#36317;&#31163;wm", text = "vertical", toggle=True);
  1294.         uil&#34892;.prop( context.window_manager, "bpXYwm", text = "XY", toggle=False);
  1295.         #uil&#30028;.separator();
  1296.         uil&#21015;&#20108;=uil&#30028;.column(align=True).split(0.5);
  1297.         uil&#21015;&#20108;.operator(&#21328;&#25289;&#30452;&#21328;Operator.bl_idname, text="Straighten",icon="LINCURVE");
  1298.         uil&#21015;&#20108;.operator(&#21328;&#33258;&#21160;&#23545;&#40784;&#21328;Operator.bl_idname, text="Align",icon="NOCURVE");
  1299.  
  1300.         """
  1301.        separator();
  1302.        uil&#21015;&#20108;=uil&#30028;.column(align=True).split(0.5);        
  1303.        uil&#21015;&#20108;.operator(&#21328;&#36733;&#20837;DLL&#21328;Operator.bl_idname, text="load dll")
  1304.        uil&#21015;&#20108;.operator(&#21328;&#21024;&#38500;DLL&#21328;Operator.bl_idname, text="unload dll&unregister")
  1305.        """
  1306. def UPDATE1(self, context):  
  1307.     if(context.window_manager.bp&#20256;&#25773;wm==False):
  1308.         context.window_manager.bp&#22402;&#30452;&#36317;&#31163;wm=False;
  1309.  
  1310. def UPDATE2(self, context):  
  1311.     if(context.window_manager.bp&#22402;&#30452;&#36317;&#31163;wm==True):
  1312.         context.window_manager.bp&#20256;&#25773;wm=True;
  1313.        
  1314. def UPDATE3(self, context):  
  1315.     if(context.window_manager.bpXYwm==True):
  1316.         context.window_manager.bp&#20256;&#25773;wm=True;
  1317.         context.window_manager.bp&#22402;&#30452;&#36317;&#31163;wm=True;
  1318.        
  1319. def register():
  1320.     bpy.utils.register_module(__name__)
  1321.     bpy.types.Scene.fp&#21442;&#25968;s2=FloatProperty(name="fp&#21442;&#25968;s2", description="this will effect the uv according to the mesh shape", default=0.5, min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, step=3, precision=2);
  1322.     bpy.types.WindowManager.bp&#20256;&#25773;wm=BoolProperty(name="transmission", description="transmission", default=False,update=UPDATE1);
  1323.     bpy.types.WindowManager.bp&#22402;&#30452;&#36317;&#31163;wm=BoolProperty(name="vertical", description="vertical Proportion", default=False,update=UPDATE2);
  1324.     bpy.types.WindowManager.bpXYwm=BoolProperty(name="XY Proportion", description="XY Proportion", default=False,update=UPDATE3);
  1325. def unregister():
  1326.     #bpy.ops.deldll.uv('INVOKE_DEFAULT',);
  1327.     del bpy.types.Scene.fp&#21442;&#25968;s2;
  1328.     del bpy.types.WindowManager.bp&#20256;&#25773;wm;
  1329.     del bpy.types.WindowManager.bp&#22402;&#30452;&#36317;&#31163;wm;
  1330.     del bpy.types.WindowManager.bpXYwm;
  1331.  
  1332.     bpy.utils.unregister_module(__name__);
  1333.  
  1334. if __name__ == "__main__":
  1335.     register()
  1336. b&#38381;=True  
  1337. #//////////////////////////////////////////////////////////////////////
go to heaven