好的,这是我的代码分解。Ron的有点复杂,因为他创建了一个临时DCL文件,文件名由vl filename mktemp生成,然后将此DCL文件用作用户界面。
但希望这能有所帮助:
- [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] [i][color=#990099]; Define the function[/color][/i]
- c: [i][color=#990099]; Defined function is invoked through Command line[/color][/i]
- lsw [i][color=#990099]; Function Syntax (that will invoke the function)[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] lay lst[b][color=RED])[/color][/b] [i][color=#990099]; Arguments and Localised Variables[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [i][color=#990099]; Load the Visual LISP functions[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [i][color=#990099]; If the following is true...[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [i][color=#990099]; Both these Conditions must be met in order to continue[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [i][color=#990099]; As it says on the tin[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [i][color=#990099]; Returns T if the two expressions are identical[/color][/i]
- [b][color=#ff00ff]""[/color][/b] [i][color=#990099]; An empty String[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lay [i][color=#990099]; Setting the following to a Variable "lay"[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] [i][color=#990099]; Capitalise the Following[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]getstring[/color][/b] [b][color=Blue]t[/color][/b] [b][color=#ff00ff]"\nSpecify Layout Name: "[/color][/b][b][color=RED])[/color][/b] [i][color=#990099]; Retrieve a String from the User[/color][/i]
- [b][color=RED])[/color][/b] [i][color=#990099]; end strcase[/color][/i]
- [b][color=RED])[/color][/b] [i][color=#990099]; end setq[/color][/i]
- [b][color=RED])[/color][/b] [i][color=#990099]; end eq[/color][/i]
- [b][color=RED])[/color][/b] [i][color=#990099]; end not[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]member[/color][/b] lay [i][color=#990099]; If lay is a member of the following[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lst [i][color=#990099]; Set the following to a variable "lst"[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]strcase[/color][/b] [i][color=#990099]; Applies the function "strcase" to every member of the following[/color][/i]
- [b][color=RED]([/color][color=Blue]layoutlist[/color][/b][b][color=RED])[/color][/b] [i][color=#990099]; Retrieves a List of Layouts[/color][/i]
- [b][color=RED])[/color][/b] [i][color=#990099]; end mapcar[/color][/i]
- [b][color=RED])[/color][/b] [i][color=#990099]; end setq[/color][/i]
- [b][color=RED])[/color][/b] [i][color=#990099]; setq member[/color][/i]
- [b][color=RED])[/color][/b] [i][color=#990099]; end and[/color][/i]
- [i][color=#990099]; Upon the IF statement returning true:[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"CTAB"[/color][/b] [i][color=#990099]; Set the ACAD variable "CTAB" to the following[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]nth[/color][/b] [i][color=#990099]; Retrieve the member in the nth position of the list provided[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]vl-position[/color][/b] lay lst[b][color=RED])[/color][/b] [i][color=#990099]; Find the position of the variable "lay" in the list "lst"[/color][/i]
- [b][color=RED]([/color][color=Blue]layoutlist[/color][/b][b][color=RED])[/color][/b] [i][color=#990099]; Retrieve the List of Layouts (this time not Capitalised).[/color][/i]
- [b][color=RED])[/color][/b] [i][color=#990099]; end nth[/color][/i]
- [b][color=RED])[/color][/b] [i][color=#990099]; ent setvar[/color][/i]
- [i][color=#990099]; Upon the IF statement returning false:[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n<!> Layout not Found <!>"[/color][/b][b][color=RED])[/color][/b] [i][color=#990099]; Print this Message to the Command line[/color][/i]
- [b][color=RED])[/color][/b] [i][color=#990099]; end IF[/color][/i]
- [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b] [i][color=#990099]; Exit Cleanly[/color][/i]
- [b][color=RED])[/color][/b] [i][color=#990099]; End Defun[/color][/i]
|