Init PRIM_PLANE problem
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 17/04/2012 at 03:49, xxxxxxxx wrote:
For some reason this parameter will not initialise
I want it to initialise to ZY - not the default XY
in the build - the same approach sets the parameter correctly
see below under ...
1 of 2 ############ just testing stuff.
2 of 2 ############ just testing stuff.
import c4d, sys, os from c4d import plugins, utils as u, bitmaps, gui,documents, Vector as v PLUGIN_ID = 1028416 #unique plugin id from plugincafe.com class JSplineObject(plugins.ObjectData) : ########################## Init interface and values def Init(self, op) : op.SetName("J Spline Creator") #op is the generator object doc = documents.GetActiveDocument self.InitAttr(op, float, [c4d.P1]) #Init the values you defined in your res file op[c4d.P1] = 40.0 #Set a default value for point1 self.InitAttr(op, float, [c4d.P2]) op[c4d.P2] = 20.0 self.InitAttr(op, float, [c4d.P3]) op[c4d.P3] = 10.0 self.InitAttr(op, float, [c4d.CHAMFER]) op[c4d.CHAMFER]= 1.0 self.InitAttr(op, bool, [c4d.CHAMFER_FLAT]) op[c4d.CHAMFER_FLAT] = False self.InitAttr(op, bool, [c4d.OUTLINE]) op[c4d.OUTLINE] = True self.InitAttr(op, float, [c4d.OUTLINE_OFFSET]) op[c4d.OUTLINE_OFFSET] = 5.0 self.InitAttr(op, bool, [c4d.CHAMFER_BASE]) op[c4d.CHAMFER_BASE] = False self.InitAttr(op, bool, [c4d.CHAMFER_TAIL]) op[c4d.CHAMFER_TAIL] = False ########################### 1 of 2 ############ just testing stuff... op[c4d.PRIM_PLANE] = c4d.PRIM_PLANE_ZY #### NEITHER THIS OR 1 Works?? op[c4d.PRIM_REVERSE] = 1 #True op[c4d.SPLINEOBJECT_INTERPOLATION] = c4d.SPLINEOBJECT_INTERPOLATION_SUBDIV op[c4d.SPLINEOBJECT_SUB] = 8 # long? op[c4d.SPLINEOBJECT_ANGLE] = u.Rad(4) # float? op[c4d.SPLINEOBJECT_MAXIMUMLENGTH] = 5 # float? ########################### 1 of 2 ############ test to here return True ###################END#### Init interface and values ########################## Build def Build(self,op) : p1 = op[c4d.P1] p2 = op[c4d.P2] p3 = op[c4d.P3] chamfer_amount = op[c4d.CHAMFER] chamfer_flat_switch = op[c4d.CHAMFER_FLAT] outline_switch = op[c4d.OUTLINE] outline_offset = op[c4d.OUTLINE_OFFSET] chamfer_base_switch = op[c4d.CHAMFER_BASE] chamfer_tail_switch = op[c4d.CHAMFER_TAIL] ############# a few limits if p2 < chamfer_amount : p2 = chamfer_amount op[c4d.P2] = p2 ############# a few limits - dont let the tail be bigger than J Height if p3 > p1 : p3 = p1 op[c4d.P3] = p3 if p3 < -p1 : p3 = -p1+ 0.1 op[c4d.P3] = p3 ############# if both swiches off - ignore amount in AM and zero if (chamfer_base_switch == False) and (chamfer_tail_switch == False) : chamfer_amount = 0 jspline = c4d.SplineObject(4,c4d.SPLINETYPE_BEZIER) jspline.SetPoint( 0, v(0.0, p1, 0.0)) jspline.SetPoint( 1, v(0.0, 0.0, 0.0)) jspline.SetPoint( 2, v(-p2, 0.0, 0.0)) jspline.SetPoint( 3, v(-p2, p3, 0.0)) jspline[c4d.SPLINEOBJECT_CLOSED] = False sel = jspline.GetPointS() sel.DeselectAll() ############# select points depending on AM checkbox if chamfer_base_switch == True: sel.Select(1) if chamfer_tail_switch == True: sel.Select(2) ############# chamfer the spline bc = c4d.BaseContainer() bc.SetData(c4d.MDATA_SPLINE_CHAMFERFLAT, chamfer_flat_switch ) bc.SetData(c4d.MDATA_SPLINE_CHAMFERRADIUS, chamfer_amount) result = u.SendModelingCommand(c4d.ID_MODELING_SPLINE_CHAMFER_TOOL, [jspline],c4d.MODELINGCOMMANDMODE_POINTSELECTION, bc) ############# outline the spline if outline_switch == True: bc.SetData(c4d.MDATA_SPLINE_OUTLINE, outline_offset) u.SendModelingCommand(c4d.MCOMMAND_SPLINE_CREATEOUTLINE,[jspline],c4d.MODELINGCOMMANDMODE_ALL,bc) ########################### 2 of 2 ############ test testing stuff... ########following same logic as above but prim_plane actually works plane = op[c4d.PRIM_PLANE] reverse = op[c4d.PRIM_REVERSE] interp = op[c4d.SPLINEOBJECT_INTERPOLATION] subd = op[c4d.SPLINEOBJECT_SUB] ang = op[c4d.SPLINEOBJECT_ANGLE] maxlen = op[c4d.SPLINEOBJECT_MAXIMUMLENGTH] #### do some processing from included res Osplineprimitive; #### in this case just print to console to check print 'PLANE: ', plane print 'REVERSE: ', reverse print 'INTERP: ',interp print 'SUBDIV: ', subd print 'ANGLE: ', ang print 'MAXLENGTH: ', maxlen print ' ' ############# just testing - put the values back???? op[c4d.PRIM_PLANE] = plane ##### essentially the same thing as the init WORKS? op[c4d.SPLINEOBJECT_INTERPOLATION] = interp op[c4d.PRIM_REVERSE] = reverse op[c4d.SPLINEOBJECT_SUB] = subd op[c4d.SPLINEOBJECT_ANGLE] = ang op[c4d.SPLINEOBJECT_MAXIMUMLENGTH] = maxlen ########################### 2 of 2 ############ test to here return jspline.GetClone() ############# Return the built spline ############# Go and return the built spline def GetContour(self, op, doc, lod, bt) : return self.Build(op) if __name__ == "__main__": dir, file = os.path.split(__file__) icon = bitmaps.BaseBitmap() icon.InitWith(os.path.join(dir, "res", "icon.png")) JSplineCreator = plugins.RegisterObjectPlugin(id=PLUGIN_ID, str="JSplineObject", g=JSplineObject, description="JSplineObject", icon=icon, info=c4d.OBJECT_GENERATOR | c4d.OBJECT_ISSPLINE) if JSplineCreator: print 'JSplineCreator Loaded'
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 17/04/2012 at 08:25, xxxxxxxx wrote:
Setting PRIM_REVERSE works as expected but PRIM_PLANE not. I contacted the developers on this issue.