>萨姆萨1
已阅读您的PM:
- (defun c:pumat(/ Lst sSet mLst cMat sCnt lCnt mCnt eCnt)
- (vl-load-com)
-
- (setq Lst (list
- '("0" "Global")
- '("Layer1" "Material 1")
- '("Layer2" "Material 2")
- ); end list
- ); end setq
- (vl-load-com)
-
- (if(setq sSet(ssget "_X" '((0 . "*SOLID"))))
- (progn
- (setq sCnt 0 lCnt 0)
- (vlax-for mat (vla-get-Materials
- (vla-get-ActiveDocument
- (vlax-get-acad-object)))
- (setq mLst(cons(vla-get-Name mat)mLst))
- ); end vlax-for
- (foreach itm
- (mapcar 'vlax-ename->vla-object
- (vl-remove-if 'listp
- (mapcar 'cadr(ssnamex sSet))))
- (if(setq cMat
- (cadr
- (assoc
- (setq cLay(vla-get-Layer itm))Lst)))
- (if(member cMat mLst)
- (if(vl-catch-all-error-p
- (vl-catch-all-apply 'vla-put-Material
- (list itm cMat)))
- (setq lCnt(1+ lCnt))
- (setq sCnt(1+ sCnt))
- ); end if
- (if(not(member cMat mCnt))
- (setq mCnt(cons cMat mCnt))
- ); end if
- ); end if
- (if(not(member cLay eCnt))
- (setq eCnt(cons cLay eCnt))
- ); end if
- );end if
- ); end foreach
- (if(or(/= 0 lCnt)(/= 0(length mCnt))(/= 0(length eCnt)))
- (progn
- (princ "\n========================= ERROR LIST =========================\n")
- (if(/= 0(length mCnt))
- (progn
- (princ "\nFollowing materials missed in drawing: \n")
- (foreach mat mCnt
- (princ(strcat "\n " mat))
- ); end foreach
- (princ "\n")
- ); end progn
- ); end if
- (if(/= 0(length eCnt))
- (progn
- (princ "\nSome solid layers missed in list: \n")
- (foreach lay eCnt
- (princ(strcat "\n " lay))
- ); end foreach
- (princ "\n")
- ); end progn
- ); end if
- (if(/= 0 lCnt)
- (princ(strcat "\n" (itoa lCnt) " were on locked layer!\n"))
- ); end if
- (princ "\n========================== END LIST ==========================\n")
- (textscr)
- ); end progn
- ); end if
- (princ(strcat "\n<<< Materials are appropriated for "
- (itoa sCnt) " of "
- (itoa(sslength sSet)) " solids >>>"))
- ); end progn
- (princ "\n<!> No Solids Found <!> ")
- ); end if
- (princ)
- ); end of c:pumat
|