can you run this
###
class Goldenspiralzphi1(bpy.types.Operator):
'''Add Golden spiral zphi1'''
bl_idname = "mesh.primitive_goldenspiralzphi_add"
bl_label = "Add Golden Spiral"
bl_options = {'REGISTER', 'UNDO','BLOCKING'}
seg1 = IntProperty(name="Segments", description="Number segments",default=32, min=4, max=100)
nturn = FloatProperty(name="nturn", description="nturn",default=1, min=1, max=100.0)
ht= FloatProperty(name="Height/turn",description="Height/turn", default=1.2, min=0.0, max=100.0)
a1 = FloatProperty(name="a1",description="a1",default=0.05, min=0.001, max=100.0)
curveadd=BoolProperty(name='add curve bevel',default=False,description='add curve bevel')
checkweight = bpy.props.BoolProperty(name='Use Z=F(PHI)',default=False,description='Use Z=F(PHI)')
var1=1.6180339
def draw(self, context): # Function to draw the menu in tool pro panel
seg1 = self.properties.seg1
checkweight= self.properties.checkweight
a1 = self.properties.a1
nturn = self.properties.nturn
curveadd= self.properties.curveadd
layout = self.layout
if checkweight: # Z = F( PHI )
ht= self.properties.ht
Goldenspiralzphi1.var1=ht
print ('check True ht=',ht )
strc=str('ht = phi'.format(ht))
layout.label(str(strc))
else: # Z Linear ht
ht=phi
Goldenspiralzphi1.var1=phi
strc=str('ht'.format(ht))
layout.label(str(strc))
print ('check False ht=',ht)
print ( 'class var =',Goldenspiralzphi1.var1)
# layout.prop(self, "checkweight", text = "Z =F(PHI)")
layout.prop(self, "checkweight", text = strc)
layout.prop(self, "seg1", text = "seg1")
layout.prop(self, "a1", text = "a1")
layout.prop(self, "nturn", text = "nturn")
layout.prop(self, "ht", text = "ht")
layout.prop(self, "curveadd", text = "curveadd")
def execute(self, context):
global layers
verts,edges,faces,vid= [],[],[],0
bm = bmesh.new() # Create new Bmesh mesh
named1="Golden Spiralzphi1"
seg1 = self.properties.seg1
checkweight= self.properties.checkweight
a1 = self.properties.a1
nturn = self.properties.nturn
ht= self.properties.ht
curveadd= self.properties.curveadd
ht1=Goldenspiralzphi1.var1
print ('ht1=',ht1)
# R = G^(2 Theta / pi )
# R = a1 exp(b1 * phi) b1 = a bs(log(phi)/90)
# R = a1* exp(b1 * n)
phi=(1.0+5.0**0.5)/2.0 # golden ratio ~ 1.618
b1=abs(log(phi)/90.0)
b2=log(2)
minag,maxag=0,nturn*360
step1=(maxag-minag)/(seg1*nturn)
for n1 in float2_range(minag, maxag, 1):
ANGTR=n1*pi/180
ro= a1* exp(b1* n1)
XC=ro*cos(ANGTR)
YC=ro*sin(ANGTR)
ZC=ANGTR*ht1/(2*pi)
verts.append(bm.verts.new((XC,YC,ZC))) # Add vertices
if vid > 0: # Add edges
edges.append(bm.edges.new((bm.verts[vid-1], bm.verts[vid])))
vid+= 1
adddata1(bm,named1,verts,curveadd)
return {'FINISHED'}
###
it works if you click on checkbox a few times
but not the first time
thanks