SPL培训课程-2
- 格式:ppt
- 大小:2.77 MB
- 文档页数:53


PS培训-(含多场景)PS培训:掌握技能,创造无限可能一、引言在当今社会,随着科技的发展和数字化的普及,图像处理软件已经成为设计师、摄影师、艺术家等职业必备的工具之一。
其中,AdobePhotoshop(简称PS)是最受欢迎的图像处理软件之一。
为了满足广大用户对PS技能提升的需求,特推出PS培训课程,帮助学员掌握PS技能,实现创意与设计的无限可能。
二、课程目标1.熟练掌握PS软件的基本操作,包括界面布局、工具使用、图层管理等。
2.学会使用PS进行图像编辑、修饰、修复、色彩调整等基本技巧。
3.掌握PS的高级功能,如矢量绘图、路径编辑、滤镜应用、3D 建模等。
4.提升创意设计能力,能够独立完成海报、广告、UI界面等设计作品。
5.了解行业规范和设计流程,为从事相关工作打下坚实基础。
三、课程内容1.PS基础知识(1)软件界面及功能介绍(2)图像类型及分辨率概念(3)色彩模式与色彩调整2.PS基本操作(1)选区工具的使用(2)图层、蒙版与通道的应用(3)图像的裁剪、旋转与变形3.图像编辑与修饰(1)修复工具与图章工具的应用(2)图像的润饰与美化(3)路径与矢量工具的使用4.色彩调整与校正(1)色彩平衡、亮度/对比度调整(2)曲线、色阶调整(3)阴影/高光、色相/饱和度调整5.高级功能与应用(1)滤镜与特效的应用(2)3D建模与渲染(3)动画制作与GIF动图6.创意设计实战(1)海报设计(2)广告设计(3)UI界面设计四、培训方式1.面授课程:面对面教学,现场解答学员疑问,确保学习效果。
2.在线课程:通过直播、录播等形式,方便学员随时学习。
3.实战演练:结合实际案例,让学员在操作中掌握PS技能。
4.课后辅导:提供课后答疑、作业批改等服务,帮助学员巩固所学知识。
五、课程优势1.专业师资:由具备丰富实战经验的专业讲师授课,确保教学质量。
2.实战教学:课程内容紧贴实际工作需求,助力学员快速提升技能。
3.小班授课:确保每位学员都能得到充分关注,提高学习效果。
第 0 课 <第一篇 基本知识> (第1节)基本知识对话框是现今最流行的人机互动面接口;在早期的AutoCAD版本中巳经使用,但只有在R12版本开始,才提供给使用者自行编程的对话框开发功能.对话框的描述定义在一纯文字文件(扩展名为DCL)内,无须特别的开发环境 定义文件中的对话框描述,均以对话控制语言(Dialog Control Language,简称DCL语言)所建立在AutoLISP程序中,配合可编程对话框(Porgrammable Dialog Box,简称PDB)函数,激活及操控对话框可以在一个定义档(扩展名DCL)中定义多个对话框对话框由方块本身,及包含于其内的组件(或称为控件,构件)所组成每个组件的属性定义均包含在一对大括号{ }中在定义文件中,各组件及其属性均为小写;只有在赋值给属性,或设定对话框名称时才可使用大写字母属性以等号=赋值,并以分号;结束(注意 : 在AutoLISP程序中,分号是作为批注)一般要在组件名称前加上一个冒号:,但若组件并不设定属性,则不需要在组件名称前加冒号,但却要以分号结束空行会被忽若定义档发生严重的错误,会在当前的目录下,产生ACAD.DCE文件,以指明所发生的错误.第 1 课 <第一篇 基本知识> (第2节)定义档BASE.DCL预设在SUPPORT的目录中,它包含了各组件的原型定义,及各类型巳定义的其它基本组件;而所有自行开发的对话框定义文件,都可以使用在BASE.DCL定义文件中的各个组件ACAD.DCL 预设在SUPPORT的目录中,它包含了AutoCAD中所有标准对话框的定义参考定义档可在自行开发的对话框定义文件中,经由include指令,取得指定DCL文件中所定义的组件;其语法如下:@include "对话框定义档"e.g. @include "david.dcl"定义档名称要包含在双引号"中,可以在档名前加上定的目录路径会先在当前的目录中搜寻该定义文件,然后是定义文件所在的目录;若有指定档案的路径,则只会在指定的目录内寻找不可以参考ACAD.DCL所定义的对话框,即不可以使用@include "acad.dcl"预视对话框若在Visual LISP中开启一对话框定义文件,即可使用 :工具 -- 接口工具 -- 预览编辑器DCL在下拉式列示框中,选取该定义文件中所设定的对话框名称,即可预视对话框亦可直接输入该对话框的名称(要注意大小写)第 2 课 <第一篇 基本知识> (第3节)批注//表示其右边(至该行末端)的文字视为注释/* */包括在两个批注符号中间的所有文字(可跨越多行)均视为注释语义检核提供4个等级的检核,该些检核会在对话框载入时完成;可以将下列语句放在定义文件中的任何位置,但不能在任何对话框的定义内.dcl_settings : default_dcl_settings {audit_level = 3;}等级0 不检查 : 只有在该定义档巳被检核且不会再作修改时使用等级1 错误 : 找出可能造成AutoCAD终止的错误,此等级也是默认值等级2 警告 : 找出配置或行为模式的错误,所有定义在修改后,最少应执行此等级的检查一次等级3 提示 : 找出多余的属性定义对话框的设计美观性 颜色配比,组件整齐排列等方便性 相同功能的项目要编排在一起,或使用线框包围使用频繁的项目应设置在最显眼及方便的位置适当设置快速键及默认值(默认值,省缺值)除非对话框中的项目过多,否则应避免使用巢状(嵌套)式对话方框互锁或互换 项目选取(或不选取)时,会否引致其它项目功能的改变(enable或disable...等)第 3 课 <第一篇 基本知识> (第4节)对话框定义文件内容模式对话框名称:dialog{label="对话框标题" ;:组件名称{ 属性名称=属性值;} //组件定义结束} //对话框结束定义说明1对话框名称就是由AutoLISP程序,启动对话框时所呼叫的名称;可以自行设定,要区分大小写字母dialog为对话框中,最外层的组件(即整个对话框),其它的组件均包含在其中一般组件要以冒号:开始,并为小写字母;因为不是属性,所以不须使用分号;结束2开大括号{紧随组件名称之后,以包含该组件的属性或其它组件 label为属性名称,并以等号=赋以其右边的属性值,最后以分号;结束该行叙述3包含在对话框中的其它组件组件要以冒号:开始,并为小写字母;因为不是属性,所以不须使用分号;结束4开大括号{紧随组件名称之后,以包含组件的属性或其它组件 包含在组件中的属性,要以等号=赋以其右边的属性值;最后以分号;结束该行叙述5以关大括号}与第4行的开大括号}对应,以结束该组件(第3行)之定义 双除号//右边的文字即为批注6以关大括号}与第2行的开大括号}对应,以结束该组件之定义(在本例中为整个对话框的定义,即第1行的dialog组件注意:上例中缩排只为方便观察及维护,不作缩排亦可包含在对话框中的组件及组件中的属性可以不只一个第 4 课 <第一篇 基本知识> (第5节)练习 (Exercises)请输入以下的对话框定义,并命名为RECT.DCL(纯文字格式),存在C盘的根目录中RECT:dialog{label="Rectangle" ;:text//文字组件{label="Rectangle width :" ;//组件的属性}ok_only;}定义说明:1设定对话框的名称为RECT,紧接一个以冒号开始的组件dialog2最左边为dialog组件的开大括号,右边是其属性label,并以等号设定其属性值为"Rectangle",以分号结束此行叙述3text为"字符串"组件,其作用是在对话框中显示文字,组件名称前要加冒号4最左边为text组件的开大括号,右边是其属性label,并以等号设定其属性值为"Rectangle width",最后以分号结束此行叙述5关大括号是对应第4行的开大括号,这对大括号同属于第3行的text组件 6ok_only为一"按钮组件",它的作用是在对话框中显示一个"确定(OK)"按钮;在一个对话框中,必需提供最少一个"确定"按钮,或一个"取消"按钮(组件名称为cancel_button),以作为结束对话框之用;本例中不设定按钮之属性,固不需以冒号放在组件名称的前面,但却需要以分号结束7关大括号是对应第2行的开大括号,这对大括号同属于第1行的dialog组件注意:虽然定义档巳经完作,但仍要待学习完第2篇的课程后,才能开启及显示该对话框第 5 课 <第二篇 开启对话框> (第1节) AutoLISP函数加载DCL定义文件函数(LOAD_DIALOG "对话框定义档名称")e.g. (LOAD_DIALOG "C:/RECT.DCL")自变量是要加载的对话框定义文件名称字符串(所以要在前后加双引号);若不设定扩展名则预设为.DCL函数会依资源搜寻路径找寻该定义文件;不在搜寻路径中的档案,要在文件名称前加上指定的路径函数若成功加载该定义档,会传回一正整数值的档案处理码,供其它函数呼叫使用;无法加载时则传回负整数值一般会将传回的档案处理码以SETQ函数存入变量中e.g. (SETQ DCL_ID (LOAD_DIALOG "C:/RECT.DCL"))开启并显示对话框(NEW_DIALOG "对话框名称" 档案处理码 ["预设动作" [对话框位置]])e.g. (NEW_DIALOG "RECT" DCL_ID)对话框名称为字符串,要在前后加双引号;要注意一个定义档中,可包含多个对话框名称及其定义档案处理码是经由LOAD_DIALOG函数取得预设动作为字符串表示式;函数可以不加预设动作,或以空字符串""表示 如果要设定对话框显示时的位置,则必须同时设定预设动作对话框位置为2D的点串行,指定对话框左上角的X,Y坐标如果以 '(-1 -1)为对话框位置,则会在绘图屏幕的中心点开启对话框如果成功开启对话框,函数会传回T,否则传回NIL开始接受使用者输入(START_DIALOG)函数不须提供任何自变量使前一个用NEW_DIALOG函数开启的对话框开始作用,直至动作表示式或回复函数呼叫DONE_DIALOG函数为止一般DONE_DIALOG与关键词accept(一般是按下确定按钮)或关键词cancel(一般是按下取消按钮)相关若传回值为1,表示使用者按下确定钮结束对话框;0表示按下取消钮;-1表示全部对话框都以TERM_DIALOG函数终止;大于1的整数,其意义由应用程序决定释放(卸载)对话框(UNLOAD_DIALOG "档案处理码")e.g. (UNLOAD_DIALOG DCL_ID)从内存释放档案处理码(经由LOAD_DIALOG函数取得)指定的对话框定义档 函数传回值一定是NIL第 6 课 <第二篇 开启对话框> (第2节)对话框开启方式(DEFUN C:函数名称( )(SETQ 变量 (LOAD_DIALOG "对话框定义档"))(NEW_DIALOG "对话框名称" 变量)(START_DIALOG) (UNLOAD_DIALOG 变数))程序说明:1以DEFUN函数定义程序的名称,使用LOAD_DIALOG函数加载指定的对话框定义档使用SETQ函数,将LOAD_DIALOG传回的档案处理码存入变量中,以方便其它函数使用2使用NEW_DIALOG,开启及显示定义文件中(档案处理码),指定的对话框3使用START_DIALOG函数,使对话框开始作用并接受使用者输入 使用UNLOAD_DIALOG函数以结束对话框4关括号是对应第1行DEFUN函数左边的开括号,结束整个程序练习 (Exercises)编写一AutoLISP程序,以开启上一课所定义的对话框;并将该程序命名为RECT.LSP,存在C盘的根目录中,程序代码如下 :(DEFUN C:RECT()(SETQ DCL_ID (LOAD_DIALOG "C:/RECT.DCL"))(NEW_DIALOG "RECT" DCL_ID)(START_DIALOG) (UNLOAD_DIALOG DCL_ID))程序说明:1以DEFUN函数定义程序的名称为RECT,使用LOAD_DIALOG函数将对话框定义文件RECT.DCL载入;使用SETQ函数,将LOAD_DIALOG传回的档案处理码存入变量DCL_ID中,以方便其它函数使用2使用NEW_DIALOG,开启及显示定义文件中(档案处理码)名称为RECT的对话框3使用START_DIALOG函数,使对话框开始作用并接受使用者输入(在本例中只有确定钮可按);使用UNLOAD_DIALOG函数以结束对话框4关括号是对应第1行DEFUN函数左边的开括号,结束整个程序第 7 课 <第二篇 开启对话框> (第3节)编辑框组件(edit_box)可供使用者直接输入字符串的矩形方框;注意在编辑框中所显示及输入的数据均为字符串型态,而数字则要在取得编辑框的字符串内容后(在下一篇中介绍),使用AutoLISP函数将其转为数值型态的数据:edit_box//组件名称{ 属性="属性值" ;}属性label显示在编辑框前面(左边)的提示文字key其属性值即为使用该组件的关键词,使在AutoLISP程序中操控此组件;在同一个对话框定义中,不能有相同名称的关键词定义 edit_limit指定在编辑框中,可输入字符串的最大字符长度edit_width指定编辑框显示时的阔度(通常与fixed_width属性一拼使用) value指定编辑框显示时,当中的默认值(注意显示数值数据时,要先用AutoLISP函数将数据(或变量)转为字符串型态)fixed_width通常与width属性一拼使用,以固定编辑框显示时的阔度(其属性值可设定为true或false)is_enable可设定编辑框是否可以使用(其属性值可设定为true或false,默认值为true)alignment如果组件成水平方向排列,属性值可设定为left,right或centered如果组件成垂直方向排列,属性值可设定为top,bottom或centered(水平方向的默认值为left,垂直方向则为centered)其它属性action allow_accept fixed_height heightis_tab_stop mnemonic width第 8 课 <第二篇 开启对话框> (第4节)练习(Exercises)将上一课的RECT.DCL对话框定义档复制至RECT1.DCL,开启新的定义档并作如下的修改,使其可以输入四边形的阔度及高度;将AutoLISP程序文件RECT.LSP 复制至RECT1.LSP,开启新的程序文件,并将要加载的对话框定义档改为RECT1(程序第1行);完成后即可加载及执行新的程序文件RECT:dialog{label="Rectangle" ;:edit_box//编辑框组件{label="Rectangle width : " ;key="RECT_W" ;edit_limit=16;edit_width=10;fixed_width=true;}:edit_box//编辑框组件{label="Rectangle heigth :" ;key="RECT_H" ;edit_limit=16;edit_width=10;fixed_width=true;}ok_only;}定义说明:1设定对话框的名称为RECT,紧接一个以冒号开始的组件dialog2最左边为dialog组件的开大括号,右边是其属性label,并以等号设定其属性值为 "Rectangle",以分号结束此行叙述3edit_box为"编辑框"组件,组件名称前要加冒号4最左边为edit_box组件的开大括号,右边是其属性label,并以等号设定其属性值为 "Rectangle width : ",最后以分号结束此行叙述5设定属性key的属性值为RECT_W(即设定此编辑框的名称)6设定属性edit_limit的属性值为16(即最多可以在编辑框中输入16个数字) 7设定属性edit_width的属性值为10(编辑框只会显示10个字的长度)8设定属性fixed_width的属性值为true,表示表将编辑框以固定的阔度显示9关大括号是对应第4行的开大括号,这一对大括号同属于第3行的edit_box 组件10至16与3至9行相似,设定另一个编辑框以输入高度的数据;只有属性label 及key的属性值不同17以ok_only组件,在对话框中显示一个确定(OK)按钮,作为结束对话框之用 18关大括号是对应第2行的开大括号,这一对大括号同属于第1行的dialog组件注意1在第一个编辑框(输入四边形的阔度)的label属性值中,在字符串最后的冒号后面,加多了一个空格,目的是方更与下一个编辑框对齐1节)AutoLISP函数设定组件的值(SET_TILE "组件关键词" 设定值)e.g. (SET_TILE "RECT_W" "50.0")组件的初始值可在定义文件中以属性value设定,但在程序文件中则以此函数设定组件关键词即是在对话框定义文件中,以组件属性key所定义的属性值,以赋予该组件一个操作名称组件关键词是有区分大小写的此函数要在START_DIALOG函数之后才能使用取得组件的值(GET_TILE "组件关键词")e.g. (GET_TILE "RECT_W")作用是在AutoLISP程序文件中取得组件(以关键词指定)的设定值组件关键词的说明与SET_TILE函数相同此函数要在DONE_DIALOG函数之前使用(即要在对话框结束前使用)设定组件的状态(MODE_TILE "组件关键词" 状态模式)e.g. (MODE_TILE "RECT_W" 0)作用是在AutoLISP程序文件中设定组件(以关键词指定)的使用状态,其状态模式可以设定为下列任一整数值 :0 使指定的组件成为使用状态1 使指定的组件成为禁用状态(组件以灰色显示)2 使指定的组件成为焦点3 选取指定编辑框组件的内容4 图像高亮度显示的开关组件关键词的说明与SET_TILE函数相同2节)练习 (Exercises)以修改对话框定义档的方式,设定输入阔度的编辑框其初始值为50,输入高度的编辑框其初始值为25定义档 将RECT1.DCL复制至RECT2.DCL,在关键词为RECT_W的组件中,加入value属性并设定其初始值为50;在关键词为RECT_H的组件中,加入value属性并设定其初始值为25程序文件 将RECT1.LSP复制至RECT2.LSP,只须修改其加载的定义档名称为RECT2.DCL即可;完成后存盘,进入AutoCAD并载入RECT2.LSP程序文件,执行RECT2程序RECT:dialog{label="Rectangle" ;:edit_box{"Rectangle width : " ;key="RECT_W" ;edit_limit=16;edit_width=10;fixed_width=true;value="50.0" //注意设定值为字符串型态,要在前后加双引号}:edit_box{"Rectangle height :" ;key="RECT_H" ;edit_limit=16;edit_width=10;fixed_width=true;value="25.0" //注意设定值为字符串型态,要在前后加双引号}}第 11 课 <第三篇 设定及取得对话框组件内的值> (第3节)练习 (Exercises)以修改AutoLISP程序文件的方式,使输入阔度的编辑框其初始值为50,输入高度的编辑框其初始值为25定义档 将RECT1.DCL(不是RECT2.DCL)复制至RECT3.DCL,不作任何修改 程序文件 将RECT1.LSP复制至RECT3.LSP,程序代码如下:(DEFUN C:RECT()(SETQ DCL_ID (LOAD_DIALOG "C:/RECT3.DCL"))(NEW_DIALOG "RECT" DCL_ID)(SET_TILE "RECT_W" "50.0")(SET_TILE "RECT_H" "25.0")(START_DIALOG)(UNLOAD_DIALOG DCL_ID))程序说明:1以DEFUN函数定义程序的名称RECT,使用LOAD_DIALOG函数将对话框定义文件RECT3.DCL载入;使用SETQ函数,将LOAD_DIALOG传回的档案处理码存入变量DCL_ID中,以方便其它函数使用2使用NEW_DIALOG,开启及显示定义文件中(档案处理码)名称为RECT的对话框3,4使用SET_TILE函数,设定输入阔度的编辑框组件RECT_W(组件关键词,在定义文件中key设定的属性值)为50,设定输入高度的编辑框组件RECT_H为25 5使用START_DIALOG函数,使对话框开始作用并接受使用者输入(在本例中只有确定钮可按);使用UNLOAD_DIALOG函数以结束对话框6关括号是对应第1行DEFUN函数左边的开括号,结束整个程序第 12 课 <第三篇 设定及取得对话框组件内的值> (第4节)AutoLISP函数组件指定动作(ACTION_TILE "组件关键词" "指定动作")e.g. (ACTION_TILE "RECT_W" "(SETQ TEMP 1)")当焦点在指定的组件(关键词)上并按下接受键时,即会执行函数所指定的动作指定动作会取代定义文件中,该组件的action属性之预设动作组件关键词"accept"在预设情况下是与确定按钮组件关连(即是确定按钮的预设关键词),"cancel"则与取消按钮组件关连(即是取消按钮的预设关键词)终止对话框(DONE_DIALOG [指定传回值])e.g. (DONE_DIALOG)此函数的传回值为一个2D点串行坐标,为结束对话框时,对话框的所在位置;可作为下次启动同一个对话框的位置自变量,使对话框在之前结束时的位置再次显现练习 (Exercises)将定义档RECT3.DCL复制至RECT4.DCL,但不作任何修改.将程序文件RECT3.LSP复制至RECT4.LSP,并修改为 : 使用ACTION_TILE函数,指定在按下确定钮时,执行一辅助程序;在该辅助程序中,使用GET_TILE函数最得对话框中四边形的阔度及高度,并在使用者选取的位置上绘画出四边形.(DEFUN C:RECT()(SETQ DCL_ID (LOAD_DIALOG "C:/RECT4.DCL"))(NEW_DIALOG "RECT" DCL_ID)(SET_TILE "RECT_W" "50.0")(SET_TILE "RECT_H" "25.0")(ACTION_TILE "accept" "(S_RECT)(DONE_DIALOG)")(START_DIALOG)(UNLOAD_DIALOG)(SETQ PT_0 (GETPOINT "\nSelect rectangle lower leftpoint : "))(SETQ PT_1 (POLAR PT_0 0 TMP_W)PT_2 (POLAR PT_1 (/ PI 2) TMP_H)PT_3 (POLAR PT_2 PI TMP_W))(COMMAND "PLINE" PT_0 PT_1 PT_2 PT_3 "C")(PRINC))(DEFUN S_RECT()(SETQ TMP_W (ABS (ATOF (GET_TILE "RECT_W")))TMP_H (ABS (ATOF (GET_TILE "RECT_H")))))续下一课 ....第 13 课 <第三篇 设定及取得对话框组件内的值> (第5节)续上一课 ....主程序(RECT)说明:1注意将LOAD_DIALOG函数所加载的对话框定义档改为RECT4.DCL2-参阅RECT3程序的说明45使用ACTION_TILE函数设定关键词为accept的组件(预设为确定按钮)的指定动作 : 先执行辅助程序S_RECT,取得输入的数据,再使用DONE_DIALOG函数结束对话框6参阅RECT3程序,第5行的说明7使用GETPOINT函数让使用者选取四边形的左下角位置坐标,存入变量PT_0 8使用POLAR函数取得新坐标点 : 从选取点PT_0开始,向右(角度为0),距离为四边形的阔度(变量TMP_W,在辅助程序中取得),存入变量PT_19使用POLAR函数取得新坐标点 : 从上一点PT_1开始,向上(角度90,等于PI 除2),距离为四边形的高度(变量TMP_H,在辅助程序中取得),存入变量PT_2 10使用POLAR函数取得新坐标点 : 从上一点PT_2开始,向左(角度1800,等于PI),距离为四边形的阔度(变量TMP_W,在辅助程序中取得),存入变量PT_3;注意最右边的关括号,是对应第8行SETQ函数左边的开括号11使用COMMAND函数执行PLINE指令,并分别设定四个坐标变量,最后以"C"选项封闭聚合线12以一个不带参数的PRINC函数,抑制多余的显示及传回值;最右边的关括号是对应第1行DEFUN函数左边的开括号辅助程序(S_RECT)说明:1设定函数名称;使用GET_TILE函数取得指定关键词(RECT_W,代表输入阔度的编辑框组件)的值,并将该值使用ATOF函数由字符串型态转为实数型态(有小数);再使用ABS函数取得实数的绝对值,以防止使用者输入负数;最后将数据存入变量TMP_W2使用GET_TILE函数取得指定关键词(RECT_H,代表输入高度的编辑框组件)的值,转型及取得绝对值后,存入变量TMP_H3用一个关括号,对应第1行DEFUN函数左的开括号第 14 课 <第四篇 按钮及核取框(切换钮)> (第1节)按钮组件(button)一个矩形的按钮,可显示指定的讯息在按钮上:button//组件名称{ 属性="属性值" ;}属性label显示在按钮中的提示文字key其属性值即为使用该按钮组件的关键词width指定按钮的显示阔度height指定按钮的显示高度fixed_width通常与width属性一并使用,以固定按钮的显示阔度fixed_height 通常与height属性一并使用,以固定按钮的显示高度is_enable可设定按钮是否可以使用,其属性值可设定为true(可使用)或false(禁用,按钮中的消息正文变为灰色显示),默认值为true is_default属性值可设定为true或false;当使用者按下接受键(大部份的情况,ENTER被用作接受键)时,本属性设定为true的组件会自动被选取.当使用者在allow_accept属性设为true的编辑框,列表框或图像按钮中.按下接受键或双击鼠标键(只对列表框及图像按钮有效)时,本属性设定为true的组件亦会自动被选取 alignment如果组件成水平方向排列,属性值可设定为left,right或centered(若不设定则预设为left);如果组件成垂直方向排列,属性值可设定为top,bottom或centered(若不设定则预设为centered)其它属性action is_cancel is_tab_top mnemonic第 15 课 <第四篇 按钮及核取框(切换钮)> (第2节)核取框(切换钮)组件(toggle)是一个启用或关闭的切换方框,当方框中没有剔勾符号时,表示该功能为关闭状态,其组件的值为0;当方框中有剔勾符号时,表示该功能为启用状态,其组件的值为1:toggle//组件名称{ 属性="属性值" ;}属性label显示在切换钮后面(右边)的提示文字key其属性值即为使用该按钮组件的关键词is_enable可设定切换钮是否可以使用,其属性值可设定为true(可使用)或false(禁用),默认值为truevalue方框中没有剔勾符号时,表示该功能为关闭状态,其组件的值为0(亦是默认值);相反则为启用状态,组件的值为1alignment如果组件成水平方向排列,属性值可设定为left,right或centered(若不设定则预设为left);如果组件成垂直方向排列,属性值可设定为top,bottom或centered(若不设定则预设为centered)其它属性action is_tab_stop width heigthfixed_width fixed_heigth第 16 课 <第四篇 按钮及核取框(切换钮)> (第3节)练习 (Exercises)在四边形的对话框中,增加一核取框,以确定是否在四边形中加上交叉的对角线;另在对话框的底部增加两个按钮,按下时可使核取框作用或禁用定义档 将RECT4.DCL复制至RECT5.DCL,在新的定义档中增加核取框及按钮定义RECT:dialog{label="Rectangle" ;:edit_box{"Rectangle width : " ;key="RECT_W" ;edit_limit=16;edit_width=10;fixed_width=true;value="50.0"}:edit_box{"Rectangle height :" ;key="RECT_H" ;edit_limit=16;edit_width=10;fixed_width=true;value="25.0"}:toggle //新增的核取框(切换钮)组件{label="X line in rectangle" ;key="RECT_X" ;}:button //新增的按钮组件{label="&Enable" ;key="RECT_E" ;width=10;fixed_width=true;}:button //新增的按钮组件{label="&Disable" ;key="RECT_D" ;width=10;fixed_width=true;}ok_only;}续下一课 ....第 17 课 <第四篇 按钮及核取框(切换钮)> (第4节)续上一课 ....定义说明:第1至第18行的定义,与上一课练习RECT4.DCL定义相同,不再叙述19以冒号开始,定义一个切换钮组件20切换钮的开大括号,以label属性定义切换钮右边的消息正文21以key属性设定切换钮的操作关键词22关大括号是对应第20行的开大括号,此对大括号同属于第19行的切换钮组件23以冒号开始,定义一个按钮组件24按钮的开大括号,以label属性定义按钮上显示的消息正文.注意 : 字符串的&符号,表示设定在该符号右边的一个字母为快捷键;在显示时,&符号不会出现,但&符号右边的一个字符会以加底线显示25以key属性设定按钮的操作关键词26以width属性设定按钮的阔度,否则按钮会自动加长并占用整列的长度 27fixed_width属性设定为true,使按钮以固定的阔度显示28关大括号是对应第24行的开大括号,此对大括号同属于第23行的按钮组件29至34与上个按钮的定义类似(23至28行),但其label及key的属性值不同35定义一个确定按钮,以结束对话框36关大括号是对应第2行的开大括号,此对大括号同属于第1行的dialog组件续下一课 ....第 18 课 <第四篇 按钮及核取框(切换钮)> (第5节)续上一课 ....程序文件 将RECT4.LSP复制至RECT5.LSP,其程序代码如下:(DEFUN C:RECT() (SETQ DCL_ID (LOAD_DIALOG "C:/RECT5.DCL")) (NEW_DIALOG "RECT" DCL_ID)(SET_TILE "RECT_W" "50.0")(SET_TILE "RECT_H" "25.0")(ACTION_TILE "accept" "(S_RECT)(DONE_DIALOG)")(ACTION_TILE "RECT_E" "(MODE_TILE \"RECT_X\" 0)") ;设定使用按钮的动作(ACTION_TILE "RECT_D" "(MODE_TILE \"RECT_X\" 0)") ;设定禁用按钮的动作(START_DIALOG)(UNLOAD_DIALOG)(SETQ PT_0 (GETPOINT "\nSelect rectangle lower left point : ")) (SETQ PT_1 (POLAR PT_0 0 TMP_W)PT_2 (POLAR PT_1 (/ PI 2) TMP_H)PT_3 (POLAR PT_2 PI TMP_W))(COMMAND "PLINE" PT_0 PT_1 PT_2 PT_3 "C")(IF (= TMP_X 1) (COMMAND"LINE" PT_0 PT_2 "" "LINE" PT_1 PT_3 "")) (PRINC))(DEFUN S_RECT() (SETQ TMP_W (ABS (ATOF (GET_TILE "RECT_W"))) TMP_H (ABS (ATOF (GET_TILE "RECT_H")))TMP_X (ATOI (GET_TILE "RECT_X"))) ;取得切换钮的状态)续下一课 ....第 19 课 <第四篇 按钮及核取框(切换钮)> (第6节)续上一课 ....主程序(RECT)说明:1至5 与程序RECT4.LSP相同,主要是加载及显示对话框,并设定其中的组件 6使用ACTION_TILE函数,设定当按下ENABLE按钮(关键词为RECT_E)时,所执行的动作 : 使用MODE_TILE函数,设定切换钮(关键词为RECT_X)的状态为0,使其处于作用状态.注意指定的动作为字符串型态,前后要加上双引号";而包含在字符串中的双引号,则必须以反斜线加双引号\"表示7与第6行相似,设定按下DISABLE按钮(关键词为RECT_D)时,将切换钮的状态设为1,使其处于禁用状态8至13 与程序RECT4.LSP相同,主要是用作绘画出四边形14使用IF函数检查变量TMP_X(在辅助程序中取得,表示切换钮的状态)是否为1;若是则以COMMAND函数,执行两个LINE指令,绘画出四边形的对角线15以一个不带参数的PRINC函数,抑制多余的显示及传回值;最右边的关括号是对应第1行DEFUN函数左边的开括号辅助程序(S_RECT)说明:1,2大致与RECT4.LSP的辅助程序相同,都是用以取得编辑框内的数据并存入变量中3使用GET_TILE函数取得切换钮(关键词为RECT_X)的状态(传回值是字符串,"0"是使用,"1"是禁用),再用ATOI函数将传回的字符串变为整数,存入变量TMP_X,供主程序第14行的IF函数,判断是否需要加上对角线.注意 : 传回值转型后,结果只会是1或0,固不须使用ABS函数取其绝对值4关括号与1行DEFUN函数左边的开括号对应第 20 课 <第五篇 横列,直行,空白及文字组件> (第1节)横列(row)及直行(column)组件其实这两个都不算是实体的组件,只是用作指定后续的其它组件的排列格式指定为横列时,则包含在此组件一对大括号中的所有组件,均作水平左至右排列;直行时则呈垂直上至下排列若不指定组件的排列格式时,则预设为直行格式若有指定其label属性,则会在外围加上一矩形线框(包含在大括号中间的其它组件则显示在线框中);其属性值则为该线框左上角的标题文字;若不设定则没有线框及标题。
AutoLISP培训教程单元一:AutoLISP主角潇洒登场一. AutoLISP 是何方神圣?1、AutoLISP是AutoCAD的最佳拍檔!2、AutoLISP内含于AutoCAD软件内,不用另外花钱买!3、AutoLISP是强化AutoCAD最好、最直接的『程序语言』!4、AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短的时间内,写出令人惊讶、赞叹的功能!若说AutoLISP的出现,是替AutoCAD 创造一片天的『最大功臣』,实不为过一点也不夸张!5、AutoLISP希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅力无穷!二. AutoLISP 程序语言的特质分析:学习AutoLISP是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写出精彩漂亮的AutoLISP程序!语法简单:不用特殊的变量宣告,非常富有弹性,比起其它的程序语言,它的语法可说是非常简单而有其独特的风格!功能函数强大:除一般性的功能函数外,又拥有为数不少控制配合AutoCAD的特殊函数,再加上AutoLISP可直接呼叫执行所有AutoCAD的指令,以及掌握运用所有的AutoCAD系统变量,功能之强大令人欣喜不已!撰写的环境不挑剔:只要是一般的文书编辑软件都适用! 如:Windows的记事本、PE2、PE3、DW3、书中仙、汉书、EDIT....等直译式程序:不用再作编译,『即写即测、即测即用』,马上可以在AutoCAD中响应效果,马上就有成就感!横跨各作业平台:悠然自得,虽然AutoCAD有DOS、Windows版本之分但是AutoLISP却可在不改写的原貌下,加载与执行!三.撰写AutoLISP 的动机?1、欲强化AutoCAD 原有指令时.2、欲创造更有用的AutoCAD 新指令.3、欲简化繁琐的环境设定或绘图步骤时.4、欲处理参数式绘图时.5、欲做图面资料读文件、写文件.6、欲做AutoCAD 演示文稿展示时.7、欲达到真正灵活掌控AutoCAD 时.8、欲提升自己跨上AutoCAD 高手列车时.四.AutoLISP 的效益评估?1. 对公司负责人或设计主管而言:A. 也许某员工或干部花了20个小时撰写一个AutoLISP程序,表面上,这将近三天的时间,他连一张图都没有画,甚至可能偶有发呆、沉思,若此程序一天可以替公司绘图部门节省1小时绘图时间,那算一算,只要20天就抵销开发成本,而20天以后都是赚的,『用的愈久,省的愈多』!B. 若员工皆有此动力,在不影响正常工作,『鼓励』都来不及,那有『压抑』的道理,甚至还要派遣优秀人员出去受训,学习更好的设计技巧与创意呢?!C. 千万不要因为您的不懂或压抑,SHOW您的权威与POWER,如此,不但对员工造成打击,甚至您可能成为阻碍了公司计算机化进步的罪魁祸首D. 当然,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而变得遥遥无期,那倒不如求助于市面上已有的相关AutoCAD 支持软件。
SmartPersistenceLayer 3 快速入门前言SmartPersistenceLayer(SPL)自在博客园发布开始,就一直受到广大朋友的认可,那一套SPL的系列文档对SPL的使用与功能以及原理都作了充分的介绍,而这些系列文章有利于大家理解SPL的思想,将作为一个优秀的.NET系统框架持久层。
而那些文章由于比较分散,而且论述了一些架构思想,对一些初学者感觉有些困难,也应大家的要求,写一份简单的,实用的SPL应用手册,所以我接下来从实际场景模拟开发。
一、引用SPL的发布形式是一个名为PersistenceLayer.Dll的DLL文件,可以在我的BLOG(/tintown/)上下载,因此只需要在项目中“添加引用”即可:若要使用连接Oracle数据库,则用以上方式添加Oracle.DataAccess.dll若要使用SPL连接MySql数据库,则用以上方式添加MySql.Data.dll二、配置文件与实体类SPL的配置文件与实体类可以使用我提供的SmartRobot进行生成,这可以大大加快开发效率,但工具毕竟是工具,不属于SPL持久层的必选部分。
连接数据库:目前SmartRobot支持Ms Sql Server、Ms Access、Oracle数据库,如果是其他数据库只能只好手写实体类了或者等我升级喽;)确定好要生成的实体类存放的地址,到时生成时会生成到相应的目录里。
配置每个表对应的实体类属性,默认实体类名称为“表名”加“Entity”字符,属性名默认与列名相同,上图中的“2”“3”操作对每个表都要重复一次的。
这时就会生成勾上的实体类到指定的目录下了。
只要把指定的实体类引用到项目中即可,实体类默认使用的是BusinessEntity命名空间。
因此在开发时,只要用到实体类的地方使用:using BusinessEntity就可以了。
保存两个配置文件,放到你的项目中:ClassMap.xml与DatabaseMap.xml ClassMap.xml为数据库表与实体类的映射关系DatabaseMap.xml为数据库连接配置:Ms Sql Server例如下:<database name="Northwind"type="MsSqlServer"><parameter name="Provider"value="SQLOLEDB.1"/><parameter name="Password"value="tintown"/><parameter name="Initial Catalog"value="Northwind"/><parameter name="User ID"value="sa"/><parameter name="Data Source"value="(local)"/><classMapFile path="ClassMap.xml"/></database>Ms Access例如下:<database name="DMBCN"type="MsAccess"><parameter name="Provider"value="Microsoft.Jet.OLEDB.4.0"/><parameter name="Data Source"value="dmbcn.mdb"/><classMapFile path="ClassMap.xml"/></database>Oracle例如下:<database name="EDI"type="Oracle"><parameter name="Provider"value="MSDAORA.1"/><parameter name="Password"value="tintown"/><parameter name="User ID"value="EDI"/><parameter name="Data Source"value=""/><classMapFile path="ClassMap.xml"/></database>方式连接Oracle例如下:<database name="Acci2004"type="ODP"><parameter name="Password"value="tintown"/><parameter name="User ID"value="acci"/><parameter name="Data Source"value="oradb"/><parameter name="Persist Security Info"value="False"/><classMapFile path="ClassMap.config"/></database>MySql数据库例如下:<database name="MySql"type="MySql"><parameter name="User Id"value="root"/><parameter name="Data Source"value="localhost"/><parameter name="Database"value="mysql"/><parameter name="password"value="tintown"/><classMapFile path="ClassMap.xml"/></database>ClassMap.xml的地址是相对于DatabaseMap.xml地址的,象例子中都是放在同一目录下,所以直接使用文件名即可.如果是连接多数据库,则可以配置多个<database>节如:<?xml version="1.0"encoding="utf-8"?><map><database name="Northwind"type="MsSqlServer"><parameter name="Provider"value="SQLOLEDB.1"/><parameter name="Password"value="tintown"/><parameter name="Initial Catalog"value="Northwind"/><parameter name="User ID"value="sa"/><parameter name="Data Source"value="(local)"/><classMapFile path="ClassMap.xml"/></database><database name="MySql"type="MySql"><parameter name="User Id"value="root"/><parameter name="Data Source"value="localhost"/><parameter name="Database"value="mysql"/><parameter name="password"value="tintown"/><classMapFile path="ClassMap2.xml"/></database></map>所示为同时连接Ms Sql Server数据库与MySql数据库三、初始化数据连接在页面的Page_Onload中使用如下进行初始化(假设DatabaseMap.xml放在Config目录下):string DatabaseXml="Config/DatabaseMap.xml";PersistenceLayer.Setting.Instance().DatabaseMapFile=Server.MapPath(DatabaseXml);以上的初始化只需要执行一次即会放在应用项目中,但Web会经常性的丢失Application,导致初始信息丢失,因此在每次执行数据库操作前都最好能进行初始化。