非常感谢您的代码ASMI-其中有许多错误陷阱可以提供帮助。
我试图剖析您的代码,以了解其背后的VL(因为我现在正在努力学习VL)。。。
请您告诉我我的注释是否正确,或者如果我错了请纠正我好吗。。。
- (defun DeleteLayer(Name / layCol dLay oVal)
- (vl-load-com)
- (if
- (and
- (/= Name "0") ; [b][color=Red]Check its not Layer 0[/color][/b]
- (/= (strcat Name)(getvar "CLAYER")) ; [b][color=Red]Check its not Current Layer[/color][/b]
- ); end or
- (progn
- (setq layCol(vla-get-Layers
- (vla-get-ActiveDocument
- (vlax-get-acad-object)))) ; [b][color=Red]Retrieve Current Layer Collection[/color][/b]
- (if(vl-catch-all-error-p
- (setq dLay(vl-catch-all-apply 'vla-Item
- (list layCol(strcat Name))))) ; [b][color=Red]Retrieve Layer Object Name from Layer Collection?[/color][/b][color=Red][i] [b][color=SeaGreen](same as tblobjname?)[/color][/b][/i][/color]
- (princ "\nLayer does not exist! ") ; [b][color=Red]If [i][color=SeaGreen]vl-catch-all-error-p[/color][/i] returns [color=Blue]T[/color], then Layer Doesn't Exist[/color][/b]
- (if(vl-catch-all-error-p
- (vl-catch-all-apply 'vla-Delete
- (list dLay))) [b][color=Red]; If Possible, Delete the Layer[/color][/b]
- (princ "\nCan't delete layer in use! ") ; [b][color=Red]If[/color][/b] [b][i][color=SeaGreen]vl-catch-all-error-p[/color][/i][color=ReD] returns[/color] [color=Blue]T[/color][color=Red], then Layer Cannot be Deleted. [/color][/b]
- (setq oVal T)
- ); end if
- ); end if
- ); end progn
- (princ "\nCan't delete active layer or layer "0"! ")
- ); end if
- oVal
- ); end of DeleteLayer
|