Пример #1
0
 def create_ctrl_null(self):
     doc = documents.GetActiveDocument()
     null = c4d.BaseObject(c4d.Onull)  # Create new null
     doc.InsertObject(null)
     c4d.EventAdd()
     null.SetName("{0} Morph Controller Group".format(self.skeleton_name))
     self.morph_controller = null
Пример #2
0
 def randomNullsColor(self,
                      parentName,
                      randomCol=1,
                      rigColor1=0,
                      rigColor2=0):
     doc = documents.GetActiveDocument()
     try:
         if randomCol == 1:
             rigColor1 = self.get_random_color()  # c4d.Vector(0,2,0)
             rigColor2 = self.get_random_color()  # c4d.Vector(1,0,0)
         self.IKMobjList = []
         parentOb = parentName
         for o in self.selchildren(parentOb, parentOb.GetNext()):
             o[c4d.ID_BASEOBJECT_USECOLOR] = 2
             o[c4d.ID_BASEOBJECT_COLOR] = rigColor1
             if 'HAND' in o.GetName() or \
                     'Pelvis' in o.GetName() or \
                     'Platform' in o.GetName() or \
                     'Head' in o.GetName():
                 o[c4d.ID_BASEOBJECT_USECOLOR] = 2
                 # o[c4d.ID_CA_JOINT_OBJECT_ICONCOL] = 1
                 o[c4d.ID_BASEOBJECT_COLOR] = rigColor2
     except:
         pass
     c4d.EventAdd()
Пример #3
0
    def addConstraint(self, slave, master, mode="Parent"):
        doc = documents.GetActiveDocument()
        slaveObj = doc.SearchObject(slave)
        masterObj = doc.SearchObject(master)
        self.removeConstraintTags(slaveObj)

        if mode == "Parent":
            constraintTAG = c4d.BaseTag(1019364)

            constraintTAG[c4d.EXPRESSION_ENABLE] = True
            constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_PSR_MAINTAIN] = True
            constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_PSR] = True
            constraintTAG[10005] = True
            constraintTAG[10007] = True
            constraintTAG[10001] = masterObj

            PriorityDataInitial = c4d.PriorityData()
            PriorityDataInitial.SetPriorityValue(
                c4d.PRIORITYVALUE_MODE, c4d.CYCLE_EXPRESSION
            )
            PriorityDataInitial.SetPriorityValue(c4d.PRIORITYVALUE_PRIORITY, 0)
            PriorityDataInitial.SetPriorityValue(c4d.PRIORITYVALUE_CAMERADEPENDENT, 0)
            constraintTAG[c4d.EXPRESSION_PRIORITY] = PriorityDataInitial
        try:
            slaveObj.InsertTag(constraintTAG)
        except:
            print("constr skip")
            pass
Пример #4
0
def main():
    doc = documents.GetActiveDocument()
    fileSaver = c4d.BaseObject(c4d.Onull)
    fileSaver.InsertBefore(doc.GetFirstObject())

    fileSaver.SetName("FileSaver")

    isOutputFbxFile = c4d.GetCustomDataTypeDefault(
        c4d.DTYPE_BOOL)  # Create default container
    isOutputFbxFile[c4d.DESC_NAME] = "isOutputFbxFile"
    isOutputFbxFileElement = fileSaver.AddUserData(isOutputFbxFile)
    fileSaver[isOutputFbxFileElement] = True

    isSaveOriginFile = c4d.GetCustomDataTypeDefault(
        c4d.DTYPE_BOOL)  # Create default container
    isSaveOriginFile[c4d.DESC_NAME] = "isSaveOriginFile"
    isSaveOriginFileElement = fileSaver.AddUserData(isSaveOriginFile)
    fileSaver[isSaveOriginFileElement] = True

    saveOutPath = c4d.GetCustomDataTypeDefault(
        c4d.DTYPE_FILENAME)  # Create default container
    saveOutPath[c4d.DESC_NAME] = "SaveOutPath"
    fileSaver.AddUserData(saveOutPath)

    c4d.EventAdd()
Пример #5
0
    def dazRotationsFix(
        self, jointToFix, jointToAim, oppositeJoint, rotValue=0, allToZero=False
    ):
        doc = documents.GetActiveDocument()

        mainJoint = doc.SearchObject(jointToFix)
        goalJoint = doc.SearchObject(jointToAim)
        self.dazRotFix(goalJoint, "AIM", mainJoint, rotValue)

        jointOposite = doc.SearchObject(oppositeJoint)
        c4d.DrawViews(
            c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW
            | c4d.DRAWFLAGS_NO_THREAD
            | c4d.DRAWFLAGS_STATICBREAK
        )

        rx = mainJoint[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_X]
        ry = mainJoint[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Y]
        rz = mainJoint[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Z]

        jointOposite[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_X] = rx * -1
        if allToZero == True:
            jointOposite[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Y] = 0
            jointOposite[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Z] = 0

        tempNull = doc.SearchObject("TempNull")
        tempNull.Remove()
        caca = mainJoint.GetFirstTag()
        caca.Remove()

        c4d.EventAdd()
Пример #6
0
    def sceneToZero(self):
        doc = documents.GetActiveDocument()
        obj = doc.GetFirstObject()
        scene = ObjectIterator(obj)
        baseObjs = []
        errorDetected = False

        for obj in scene:
            if scene.depth == 0:
                if obj.GetType() == 5100:
                    baseObjs.append(obj)
                if obj.GetType() == 1007455:
                    objSub = obj
                    objMesh = obj.GetDown()
                    c4d.CallCommand(100004767, 100004767)  # Deselect All
                    objSub.SetBit(c4d.BIT_ACTIVE)
                    c4d.CallCommand(100004773)  # Expand Object Group
                    objSub.Remove()
                    c4d.EventAdd()
                    if objMesh:
                        if objMesh.GetType() == 5100:
                            baseObjs.append(objMesh)

        if len(baseObjs) > 0:
            if errorDetected == False:
                getLowestY = self.rasterizeObj(self.sceneLowestYobj())
                self.moveAllToZero(baseObjs, getLowestY)
                c4d.DrawViews(
                    c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW
                    | c4d.DRAWFLAGS_NO_THREAD
                    | c4d.DRAWFLAGS_STATICBREAK
                )
                c4d.EventAdd()
Пример #7
0
    def moveToObj(self, source, target):
        doc = documents.GetActiveDocument()
        dazName = get_daz_name()
        parentGuidesName = dazName + "__IKM-Guides"

        if doc.SearchObject(parentGuidesName) == None:
            newNull = c4d.BaseObject(c4d.Onull)
            newNull.SetName(parentGuidesName)
            doc.InsertObject(newNull)

        guidesParent = doc.SearchObject(parentGuidesName)

        newNull = c4d.BaseObject(c4d.Onull)
        newNull.SetName(source)
        doc.InsertObject(newNull)
        newNull[c4d.NULLOBJECT_DISPLAY] = 11
        newNull[c4d.NULLOBJECT_RADIUS] = 1
        newNull[c4d.NULLOBJECT_ORIENTATION] = 1

        sourceObj = newNull
        targetObj = doc.SearchObject(target)
        sourceObj.SetMg(targetObj.GetMg())

        mg = sourceObj.GetMg()
        sourceObj.InsertUnder(guidesParent)
        sourceObj.SetMg(mg)

        c4d.EventAdd()
Пример #8
0
    def moveAllToZero(self, baseObjs, posY):
        c4d.EventAdd()
        c4d.DrawViews(
            c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW
            | c4d.DRAWFLAGS_NO_THREAD
            | c4d.DRAWFLAGS_STATICBREAK
        )
        c4d.EventAdd()
        doc = documents.GetActiveDocument()
        baseObjs = []
        obj = doc.GetFirstObject()
        scene = ObjectIterator(obj)
        for obj in scene:
            if obj.GetUp() == None:
                baseObjs.append(obj)

        newNull = c4d.BaseObject(c4d.Onull)  # Create new cube
        doc.InsertObject(newNull)
        newNull[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_Y] = posY
        c4d.EventAdd()

        for obj in baseObjs:
            if obj.GetUp() == None:
                mg = obj.GetMg()
                obj.InsertUnder(newNull)
                obj.SetMg(mg)

        c4d.EventAdd()
        newNull[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_Y] = 0
        dzc4d.deselect_all()  # Deselect All
        newNull.SetBit(c4d.BIT_ACTIVE)
        c4d.CallCommand(100004773, 100004773)  # Expand Object Group
        newNull.Remove()
        c4d.EventAdd()
Пример #9
0
 def fixConstraint(jointName):
     doc = documents.GetActiveDocument()
     obj = doc.SearchObject(jointName)
     if obj:
         tag = obj.GetFirstTag()
         tag[c4d.ID_CA_CONSTRAINT_TAG_PSR_MAINTAIN] = True
         c4d.EventAdd()
Пример #10
0
    def run(self):
        doc = documents.GetActiveDocument()
        doc.StartUndo()

        sel = doc.GetSelection()
        if sel is None:
            return False

        c4d.StatusSetSpin()
        timestart = c4d.GeGetMilliSeconds()

        c4d.StopAllThreads()

        # loop through all objects
        for op in sel:
            print op.GetName()
            # and do something with op #
            op.Message(c4d.MSG_UPDATE)

        c4d.StatusClear()

        # tell C4D to update internal state
        c4d.EventAdd()
        doc.EndUndo()

        timeend = int(c4d.GeGetMilliSeconds() - timestart)
        timemsg = u"MakeAwesomeButton: finished in " + str(
            timeend) + " milliseconds"
        print(timemsg)

        return True
Пример #11
0
        def aimObj(slave, master, mode="", searchObj=1):
            doc = documents.GetActiveDocument()
            if searchObj == 1:
                slaveObj = doc.SearchObject(slave)
                masterObj = doc.SearchObject(master)
            else:
                slaveObj = slave
                masterObj = master
            mg = slaveObj.GetMg()

            constraintTAG = c4d.BaseTag(1019364)

            if mode == "ROTATION":
                constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_PSR] = True
                constraintTAG[10005] = False
                constraintTAG[10006] = False
                constraintTAG[10001] = masterObj
            if mode == "AIM":
                constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM_MAINTAIN] = False
                constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM] = True
                constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM_CONSTRAIN_X] = True
                constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM_CONSTRAIN_Y] = True
                constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM_CONSTRAIN_Z] = True
                constraintTAG[20004] = 0  # Axis X-
                constraintTAG[20001] = masterObj

            slaveObj.InsertTag(constraintTAG)

            c4d.EventAdd()
            c4d.DrawViews(
                c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW
                | c4d.DRAWFLAGS_NO_THREAD
                | c4d.DRAWFLAGS_STATICBREAK
            )
            constraintTAG.Remove()
Пример #12
0
    def addLipsMaterial(self):
        doc = documents.GetActiveDocument()
        obj = doc.GetFirstObject()
        scene = ObjectIterator(obj)
        objTags = TagIterator(obj)
        for ob in scene:
            objTags = TagIterator(ob)
            if objTags:
                for tag in objTags:
                    matSel = tag[c4d.TEXTURETAG_RESTRICTION]
                    if matSel == "Lips":
                        try:
                            old_mat = tag[c4d.TEXTURETAG_MATERIAL]

                            doc.SetActiveMaterial(old_mat)
                            c4d.CallCommand(300001022, 300001022)  # Copy
                            c4d.CallCommand(300001023, 300001023)  # Paste
                            newMat = doc.GetFirstMaterial()
                            newMat[c4d.ID_BASELIST_NAME] = "Lips"

                            tag[c4d.TEXTURETAG_MATERIAL] = newMat
                        except:
                            pass

        c4d.EventAdd()
Пример #13
0
    def initialDisplaySettings(self):
        doc = documents.GetActiveDocument()
        dazName = self.getDazMesh()
        if dazName:
            dazName = dazName.GetName().replace(".Shape", "")
            dazName = dazName + "_"

            def hideJoint(obj, value):
                obj[c4d.ID_CA_JOINT_OBJECT_BONE_DISPLAY] = value
                obj[c4d.ID_CA_JOINT_OBJECT_JOINT_DISPLAY] = value

            def hideJoints(jName, value):
                jointParent = doc.SearchObject(dazName + jName)
                if jointParent:
                    listObjs = ObjectIterator(jointParent)
                    for obj in listObjs:
                        hideJoint(obj, value)

            objPelvis = doc.SearchObject(dazName + "jPelvis")
            hideJoint(objPelvis, 0)
            hideJoints("jSpine", 0)
            hideJoints("jUpLeg", 0)
            hideJoints("jUpLeg___R", 0)

            hideJoints("jHand", 2)  # Show
            hideJoints("jHand___R", 2)  # Show

            c4d.EventAdd()
Пример #14
0
 def lockAllModels(self):
     doc = documents.GetActiveDocument()
     obj = doc.GetFirstObject()
     scene = ObjectIterator(obj)
     for obj in scene:
         if (obj.GetType() == 5100) or (obj.GetType() == 1007455):
             lockLayer = ikmaxUtils().layerSettings(obj, 1, 1)
Пример #15
0
 def parentTo(self, childName, parentName):
     doc = documents.GetActiveDocument()
     child = doc.SearchObject(childName)
     parent = doc.SearchObject(parentName)
     mg = child.GetMg()
     child.InsertUnder(parent)
     child.SetMg(mg)
Пример #16
0
 def getDazMesh(self):
     doc = documents.GetActiveDocument()
     obj = doc.SearchObject("hip")
     if obj:
         dazRigName = obj.GetUp().GetName()
         dazMeshObj = doc.SearchObject(dazRigName + ".Shape")
         return dazMeshObj
     return None
Пример #17
0
def get_daz_name():
    doc = documents.GetActiveDocument()
    obj = doc.SearchObject("hip")
    if obj:
        dazRigName = obj.GetUp().GetName()
        dazMeshObj = doc.SearchObject(dazRigName + ".Shape")
        return dazMeshObj.GetName().replace(".Shape", "")
    return ""
Пример #18
0
 def check_if_valid(self):
     """
     Checks if Scene Contains Genesis Skeleton.
     """
     doc = documents.GetActiveDocument()
     obj = doc.SearchObject("hip")
     if obj:
         return True
Пример #19
0
    def preAutoIK(self):
        doc = documents.GetActiveDocument()
        obj = doc.SearchObject("hip")
        if obj:
            doc = documents.GetActiveDocument()
            if not doc.SearchObject("lThighTwist"):
                if self.checkIfPosedResetPose(False) == False:
                    forceTpose().dazFix_All_To_T_Pose()
            if doc.SearchObject("lThighTwist"):
                if self.checkIfPosedResetPose(False) == False:
                    self.dazManualRotationFixTpose()

        c4d.DrawViews(
            c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW
            | c4d.DRAWFLAGS_NO_THREAD
            | c4d.DRAWFLAGS_STATICBREAK
        )
        c4d.EventAdd()
Пример #20
0
 def registerTargets(self):
     doc = documents.GetActiveDocument()
     allObjects = doc.GetObjects()
     self.registeredHeadTargetsRotation = []
     self.registeredHeadTargetsTranslation = []
     self.registeredMarkerTargets = []
     self.registeredBlendShapeTargets = []
     for i in allObjects:
         self.testObjectForRegister(i)
Пример #21
0
 def unhideProps(self):
     doc = documents.GetActiveDocument()
     obj = doc.SearchObject("hip")
     ObjectIterator(obj)
     for o in ObjectIterator(obj):
         if o.GetType() == 5100 or o.GetType() == 5140:
             o[c4d.ID_BASEOBJECT_VISIBILITY_EDITOR] = 0
             o[c4d.ID_BASEOBJECT_VISIBILITY_RENDER] = 0
     c4d.EventAdd()
Пример #22
0
def main():

    # *********************************************************
    # SET UP SECTION
    suffix = "-source.c4d"  # last part of source C4D file name
    # *********************************************************

    nFiles = 0

    c4d.CallCommand(12305, 12305)  # Show Console...
    c4d.CallCommand(13957)
    # Clear console

    currDoc = c4d.documents.GetActiveDocument()

    rootDir = c4d.storage.LoadDialog(c4d.FILESELECTTYPE_SCENES,
                                     "Please choose a folder",
                                     c4d.FILESELECT_DIRECTORY)

    #dirList=os.listdir(path)

    level1Dirs = getSubdirs(rootDir)
    for level1Dir in level1Dirs:

        #print(level1Dir)
        destPath = os.path.join(rootDir, level1Dir)

        xFiles = getFiles(destPath)
        for xFileName in xFiles:
            xFilePath = os.path.join(rootDir, level1Dir, xFileName)
            filename, file_extension = os.path.splitext(xFilePath)
            #print (xFilePath)
            if xFileName.lower().endswith(suffix):
                print "Converting file " + str(xFileName)
                print ""

                load = documents.LoadFile(xFilePath)

                if not load:
                    print("File" + str(xFilePath) + " not loaded")

                newDoc = documents.GetActiveDocument()
                c4d.CallCommand(12253, 12253)  # Render All Materials
                c4d.CallCommand(12091, 12091)  # Gouraud Shading
                c4d.CallCommand(12149, 12149)  # Frame Default
                c4d.EventAdd()
                nFiles += 1
                #newDoc.SaveDocument()
                c4d.CallCommand(12098)  # Save

                c4d.documents.KillDocument(newDoc)

    print "Files refreshed: " + str(nFiles)

    print "   "
    print "*** Good job! All files have been refreshed. ***"
Пример #23
0
def main():
    # 获取文件路径与文件名
    doc = documents.GetActiveDocument()
    name = doc.GetDocumentName()
    originPath = doc.GetDocumentPath()
    originFilePath = os.path.join(originPath, name)
    originFilePath = os.path.normpath(originFilePath)

    if doc.SearchObject("FileSaver"):
        fileSaver = doc.SearchObject("FileSaver")
    else:
        print "You need to run 'createSaveOutUserData.py' first"
        return

    isOutputFbx = fileSaver[c4d.ID_USERDATA, 1]
    isSavingOriginFile = fileSaver[c4d.ID_USERDATA, 2]
    filepath = fileSaver[c4d.ID_USERDATA, 3]

    if isOutputFbx:
        if len(filepath) == 0:
            print "You need to specify the file path"
            return

    filepath = os.path.normpath(filepath)
    filepath = "/".join(filepath.split("\\")[:-1])
    # 将文件后缀改为.fbx
    if name[-3:] != "fbx":
        if len(name.split(".")) == 1:
            name = name + ".fbx"
        else:
            index = -1
            while name[index] != '.':
                index -= 1
            name = name[:(index + 1)] + "fbx"
            print "convert filetype to .fbx"

    filepath = os.path.join(filepath, name)
    filepath = os.path.normpath(filepath)

    # 导出模型到原文件路径
    if documents.SaveDocument(doc, filepath,
                              c4d.SAVEDOCUMENTFLAGS_DONTADDTORECENTLIST,
                              1026370):
        print "export document to: " + filepath
    else:
        print "export failed"

    if isSavingOriginFile:
        if documents.SaveDocument(doc, originFilePath,
                                  c4d.SAVEDOCUMENTFLAGS_DONTADDTORECENTLIST,
                                  c4d.FORMAT_C4DEXPORT):
            print "save origin file to: " + originFilePath
        else:
            print "save origin file failed"

    c4d.EventAdd()
Пример #24
0
 def findIK():
     """Hard Coded Find of IK Replace with User Data"""
     doc = documents.GetActiveDocument()
     obj = doc.GetFirstObject()
     scene = ObjectIterator(obj)
     ikfound = 0
     for obj in scene:
         if "Foot_PlatformBase" in obj.GetName():
             ikfound = 1
     return ikfound
Пример #25
0
    def dazFix_All_To_T_Pose(self):
        # Genesis2
        doc = documents.GetActiveDocument()
        if doc.SearchObject("lShldr"):
            self.dazRotationsFix("lShldr", "lForeArm", "rShldr", 1.571)
        if doc.SearchObject("lForeArm"):
            self.dazRotationsFix("lForeArm", "lHand", "rForeArm", 1.571)

        # All Genesis..Maybe...
        if doc.SearchObject("lFoot"):
            self.dazRotationsFix("lFoot", "lToe", "rFoot")
Пример #26
0
    def ikGoalsZeroRot(self):
        def ikZeroRot(jointObj):
            tag = jointObj.GetFirstTag()
            goalObj = tag[10001]

            ry = jointObj[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Y]

            tag[10001] = None

            jointObj[c4d.ID_BASEOBJECT_FROZEN_ROTATION, c4d.VECTOR_Y] = ry
            jointObj[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Y] = 0

            c4d.EventAdd()
            c4d.DrawViews(
                c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW
                | c4d.DRAWFLAGS_NO_THREAD
                | c4d.DRAWFLAGS_STATICBREAK
            )

            c4d.EventAdd()

            goalObj[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_X] = 0
            goalObj[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Y] = 0
            goalObj[c4d.ID_BASEOBJECT_REL_ROTATION, c4d.VECTOR_Z] = 0
            goalObj[c4d.ID_BASEOBJECT_FROZEN_ROTATION, c4d.VECTOR_X] = 0
            goalObj[c4d.ID_BASEOBJECT_FROZEN_ROTATION, c4d.VECTOR_Y] = 0
            goalObj[c4d.ID_BASEOBJECT_FROZEN_ROTATION, c4d.VECTOR_Z] = 0

            tag[c4d.ID_CA_CONSTRAINT_TAG_PSR_MAINTAIN] = True

            c4d.EventAdd()
            tag[10001] = goalObj

            c4d.EventAdd()
            c4d.DrawViews(
                c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW
                | c4d.DRAWFLAGS_NO_THREAD
                | c4d.DRAWFLAGS_STATICBREAK
            )
            c4d.EventAdd()

        doc = documents.GetActiveDocument()
        dazName = get_daz_name() + "_"
        jointObj = doc.SearchObject(dazName + "jHand")
        ikZeroRot(jointObj)

        jointObj = doc.SearchObject(dazName + "jHand___R")
        ikZeroRot(jointObj)

        jointObj = doc.SearchObject(dazName + "jUpLeg.Pole___R")
        jointObj[c4d.ID_BASEOBJECT_FROZEN_ROTATION, c4d.VECTOR_X] = 0
        jointObj = doc.SearchObject(dazName + "jArm.Pole___R")
        jointObj[c4d.ID_BASEOBJECT_FROZEN_ROTATION, c4d.VECTOR_X] = 0
        c4d.EventAdd()
Пример #27
0
    def changeSkinType(self):
        doc = documents.GetActiveDocument()
        obj = doc.GetFirstObject()

        scene = ObjectIterator(obj)
        baseObjs = []

        for obj in scene:
            if obj.GetType() == 1019363:
                obj[c4d.ID_CA_SKIN_OBJECT_TYPE] = 1

        c4d.EventAdd()
Пример #28
0
    def hideRig(self):
        doc = documents.GetActiveDocument()
        obj = doc.SearchObject("hip")
        dazRig = obj.GetUp()
        guideNulls = self.iterateObjChilds(dazRig)
        for obj in guideNulls:
            obj()[c4d.ID_BASEOBJECT_VISIBILITY_RENDER] = 1
            obj()[c4d.ID_BASEOBJECT_VISIBILITY_EDITOR] = 1
        dazRig()[c4d.ID_BASEOBJECT_VISIBILITY_RENDER] = 1
        dazRig()[c4d.ID_BASEOBJECT_VISIBILITY_EDITOR] = 1

        c4d.EventAdd()
Пример #29
0
    def extend3Dline(self, nameA, nameB, actObjName, offset=1):
        doc = documents.GetActiveDocument()
        dazName = self.getDazMesh().GetName()
        meshName = dazName + "_"
        meshName = meshName.replace(".Shape", "")
        actObj = doc.SearchObject(meshName + actObjName)
        Aobj = doc.SearchObject(meshName + nameA)  # Direction line Start
        Bobj = doc.SearchObject(meshName + nameB)  # Direction line End

        targetObj = c4d.BaseObject(c4d.Onull)
        targetObj.SetName("TARGET")
        doc.InsertObject(targetObj)

        targetObjExtend = c4d.BaseObject(c4d.Onull)
        targetObjExtend.SetName("TARGET_Extend")
        doc.InsertObject(targetObjExtend)
        targetObj.SetMg(Aobj.GetMg())

        targetObjExtend.InsertUnder(targetObj)

        constraintTAG = c4d.BaseTag(1019364)
        constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM] = True
        constraintTAG[c4d.ID_CA_CONSTRAINT_TAG_AIM_MAINTAIN] = False
        constraintTAG[20004] = 2
        constraintTAG[20001] = Bobj
        targetObj.InsertTag(constraintTAG)

        caca = targetObj.GetFirstTag()
        c4d.DrawViews(
            c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW
            | c4d.DRAWFLAGS_NO_THREAD
            | c4d.DRAWFLAGS_STATICBREAK
        )
        caca.Remove()
        targetMg = None
        try:
            targetObjExtend.SetMg(Bobj.GetMg())
            objDistance = targetObjExtend[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_Z]
            targetObj.SetAbsPos(Bobj.GetAbsPos())
            targetObjExtend[c4d.ID_BASEOBJECT_REL_POSITION, c4d.VECTOR_Z] = (
                objDistance * offset
            )
            targetObjExtend[c4d.NULLOBJECT_DISPLAY] = 9

            targetMg = targetObjExtend.GetMg()
            actObj.SetMg(targetObjExtend.GetMg())
        except:
            print("skip extend")

        targetObj.Remove()

        c4d.EventAdd()
        return targetMg
Пример #30
0
 def getMinY(self, obj):
     doc = documents.GetActiveDocument()
     if obj.GetType() == 5100:
         mg = obj.GetMg()
         minPos = c4d.Vector(obj.GetPoint(0) * mg).y
         minId = None
         for i in range(obj.GetPointCount()):
             bufferMin = c4d.Vector(obj.GetPoint(i) * mg).y
             minPos = min(minPos, bufferMin)
             if minPos == bufferMin:
                 minId = i
         return minPos