C画缓和曲线lisp程序

C画缓和曲线lisp程序
C画缓和曲线lisp程序

C画缓和曲线l i s p程序 This model paper was revised by the Standardization Office on December 10, 2020

CAD中画缓和曲线,首先复制本文☆后面的源程序保存至cad安装目录的SUPPORT文件夹,保存类型为.lsp可以随便复制一个SUPPORT文件夹内的lsp 文件,然后替换本文的程序。打开CAD后,输入appload回车,找到你保存的缓和曲线lsp程序,点击加载,然后就可以画缓和曲线了。首先,要画出缓和曲线的两条直线,然后输入H H回车,按提示完成缓和曲线。

注:本程序,缓和曲线段拟合长度为0.4m,如需更改拟合长度,将程序的第8行(repeat(FIX(/Ls0.4))及9行(setql(+l(/Ls(FIX(/Ls0.4))))中的0.4修改即可。

;;多义线摹拟缓和曲线。

;;输入起止直线、半径、缓和曲线长或设计车速。

;;命令:HH

(defuncom_p()

(setql0)

(command"ucs""o"(list(-0x1)00))

(command"pline"(list000)"w""0"""

(repeat(FIX(/Ls0.4))

(setql(+l(/Ls(FIX(/Ls0.4))))

x(+(-l(/(*lllll)40CC))(/(*lllllllll)3456CCCC))

y(*id__(+(-

(/(*lll)6C)(/(*lllllll)336CCC))(/(*lllllllllll)42240CCCCC)))

);setq

(command(listxy0))

);repaet

);command

(setqpt5(trans(listxy0)10))

);com_p

(defunll_v()

(setqV(getreal"\nGiveVelocity:")

Ls1(*V0.85)

Ls2(/(*0.0357VVV)R)

Ls(maxLs1Ls2(/R9))

Ls(*(fix(/Ls10))10.0)

);setq

(if(>LsR)(setqLsR))

(ll_d)

);ll_v

(defunll_d()

(setqos(getvar"osmode"))

(setvar"osmode"0)

(setqC(*LsR)

q(-(+(-

(/Ls2)(/(*LsLsLs)240RR))(/(*LsLsLsLsLs)34560RRRR))(/(*LsLsLsLsLsLsLs) 8386560RRRRRR))

pt1(cdr(assoc10(entget(carp1))))

pt2(cdr(assoc11(entget(carp1))))

pt10(polarpt1(anglept1pt2)(/(distancept1pt2)2))

pt3(cdr(assoc10(entget(carp2))))

pt4(cdr(assoc11(entget(carp2))))

pt20(polarpt3(anglept3pt4)(/(distancept3pt4)2))

p(+(-(/(*LsLs)24R)(/(*LsLsLsLs)2688RRR))(/(*LsLsLsLsLsLs)506880RRRRR)) jd(interspt1pt2pt3pt4nil)

alf1(anglept10jd)

alf2(anglept20jd)

alf(-(anglejdpt20)alf1)

);setq

(if(or(>alfpi)(and(alf(-0pi))))

(progn

(setqid__-1)

(if(>alfpi)(setqalf(-(+pipi)alf))(setqalf(absalf)))

);progn

(progn

(setqid__1)

(if(<=alf(-0pi))(setqalf(+pipialf)))

);progn

);if

(setqx0(/(*(+pR)(sin(/alf2.0)))(cos(/alf2.0)))

x1(+x0q)

Cl(+(*alfR)Ls)

E(-(/(+Rp)(cos(/alf2)))R)

);setq

(command"ucs""o"jd)

(command"ucs""z"(/(*180alf1)pi))

(com_p)(setqpt6pt5)

(setqppt1(listx100))

(command"ucs""")

(command"ucs""o"jd)

(command"ucs""z"(/(*180alf2)pi))

(setqid__(-0id__))(com_p)

(setqppt2(listx100))

(command"ucs""")

(if(>(abs(distancejdpt1))(abs(distancejdpt2)))

(setqptt1pt1)

(setqptt1pt2)

);if

(setqptt2(polarjdalf1(-0x1)))

(thhp1ptt110)

(thhp1ptt211)

(if(>(abs(distancejdpt3))(abs(distancejdpt4)))

(setqptt3pt3)

(setqptt3pt4)

);if

(setqptt4(polarjdalf2(-0x1)))

(thhp2ptt310)

(thhp2ptt411)

(if(=id__1)(command"arc"pt5"e"pt6"r"R)(command"arc"pt6"e"pt5"r"R)) (setqalfd(angfalf))

(setvar"osmode"os)

(command"cmdecho""1") (command"text"pausepause""(strcat"偏角="alfd)) (command"cmdecho""0")

(command"text"""(strcat"半径="(rtosR22))) (command"text"""(strcat"切线长="(rtosx122))) (command"text"""(strcat"曲线长="(rtosCl22))) (command"text"""(strcat"外距="(rtosE22))) (command"text"""(strcat"缓曲长="(rtosLs22)))

);ll_d

(defunangf(alf)

(setqalff(angtosalf14)

n1

kk(strlenalff))

(repeatkk

(setqalfn(substralffn1))

(if(=alfn"d")

(setqnnn));if

(setqn(+n1))

);repeat

(strcat(substralff1(-nn1))"%%"(substralffnn))

);angf

(defunc:hh(/p1p2pt1pt2pt3pt4pt5pt6pt10pt20id__RVLsEp3

r1xylx0x1Cjdalfalf1alf2qpClLs1Ls2)

(command"ucs""")

(setqp1nilp2nil)

(while(=p1nil)(setqp1(entsel"\n拾取第一条直线:")))

(redraw(carp1)3)

(while(=p2nil)(setqp2(entsel"\n拾取第二条直线:")))

(redraw(carp2)3)

(initget1)

(setqR(getdist"\n请输入圆曲线半径R:"))

(initget1"LsV")

(setqp3(getdist"\n输入缓和曲线长度(Ls)或[设计速度(V)]:")) (if(=p3"V")(ll_v)(progn(setqlsp3)(ll_d)))

(princ)

);eline

(defunthh(lenpth)

(setqen_data(entget(carlen))

old_data(assochen_data)

new_data(conshpt)

en(substnew_dataold_dataen_data));setq

(entmoden)

);thh

AutoLISP-程序创建过程

AutoCAD开发VisualLISP程序 本节通过一个简单的实例来讲述LISP程序的创建过程,介绍编制LISP程序的一些基本步骤,以及LISP程序在AutoCAD中的加载和运行的方法。 首先来创建一个最简单的LISP程序—-“Hello.lsp”,在AutoCAD2002中加载并运行该程序,将会在命令行出现-“Hello,VisualLISP!”。 VisualLISP与AutoCAD的通信 用户可以直接在AutoCAD命令行中键入AutoLISP表达式。AutoCAD通过括号来确认AutoLISP表达式。AutoCAD每当发现一个左括号,就确认为AutoLISP表达式,并由AutoLISP求表达式的值后返回AutoCAD,AutoCAD使用返回结果并继续进行其他工作。 注意在AutoLISP表达式中,左、右括号必须配对,否则AutoCAD将给出提示符n>,n表示右括号丢失数目。 此外,在AutoCAD中调用并执行AutoLISP程序。在AutoLISP程序中采用COMMAND函数来与AutoCAD命令程序处理器通信,COMMAND从AutoLISP获得命令并将其传给AutoCAD。 实例:最简单的LISP程序——“Hello.lsp” Step1创建新文件 (1)运行AutoCAD2002系统,以“acadiso.dwt”为样板创建图形文件,并调用“vlisp”命令进入VisualLISP环境。

(2)单击“Standard(标准)”工具栏中的按钮,新建一个LISP文件。Step2输入代码并保存文件 (1)在编辑窗口中输入源文件“Hello.lsp”的代码。程序清单如下:;;;* Hello.lsp – Visual LISP文件实例 (prompt "Pick point:") ;指定运行时的提示信息 (setq ipt (getpoint)) ;在屏幕上指定一点并将其坐标值赋予变量“ipt” (setq hgt 15) ;给变量“hgt”赋值 (Command "_.TEXT" "_S" "STANDARD" ipt hgt 0 "Hello, Visual LISP!"); 调用“Commnad”函数与AutoCAD进行通信 (2)单击“Standard(标准)”工具栏中的按钮,以“Hello.lsp”为名保存该文件。 Step3运行LISP程序 (1)确认编辑窗口处于前台状态,选择菜单【Tools(工具)】→【LoadTextinEditor(加载编辑器中的文字)】,则该程序被加载并运行。系统将返回AutoCAD窗口,并提示用户选择一点,并以指定点为基点来绘制文字。结果如图36-4所示。 (2)如果用户退出VisualLISP环境并返回AutoCAD系统窗口,则需要对该程序进行加载后,才能运行。选择菜单【Tools(工具)】→【LoadAppcation…(加载应用程序)】,弹出“Load/UnloadApplications(加载/卸载应用程序)”对话框,如图

超经典CAD lisp程序集锦、CAD快捷键大全

超经典CAD lisp程序集锦 如果您使用 AutoCAD,下面的内容对您一定有帮助。在某些方面能大大提高 您的工作效率。下面的程序均以源程序方式给出,您可以使用、参考、修改它。 bg.lsp --- 表格自动生成 asc.lsp --- 将文本文件内容写入图中,字符是单个的 wf.lsp --- 将图中字符写入磁盘 exstr.lsp --- 将字符串分解成单字 pgtxt.lsp --- 将字符合成字符串 pb.lsp --- 通过给出长度将字符串分成两个串 cht.lsp --- 直接修改文字内容或块属性 ct.lsp --- 对数字串进行加减 chh.lsp --- 直接修改文字高度 chhw.lsp --- 直接修改文字高宽比(针对PKPM软件将字符定位点改为左下角) chst.lsp --- 直接修改文字字体 txt.shx --- 修改后的标准txt.shx文件。(kuozhan.sld为增强的内容幻灯片) tiao.lsp --- 配合修改过的标准字体文件,将中文字符调大 tiao1.lsp --- 配合修改过的标准字体文件,将英文字符调小 untiao.lsp --- 上两个程序的复原 sht.lsp --- 在图中查找字符串 zhuang.lsp --- 桩点及钎探号绘制(勘测图) dim.lsp --- 配合JT.DWG将尺寸标注调成适合建筑结构设计(1:1) dimm.lsp --- 配合JT.DWG将尺寸标注调成适合建筑结构设计(1:100)

di1.lsp~di8.lsp --- 直接连续标注尺寸(用于1:1的图) di100.lsp~di800.lsp --- 直接连续标注尺寸(用于1:100的图) 详细内容及附件下载请浏览北纬服务论坛 https://www.360docs.net/doc/a410751006.html,/thread-2724-1-1.html

CAD lisp 实用小程序(源代码)

CAD lisp实用小程序(源代码) 一、圆自动同心 (defun c:TX(/qi aa ec center v_c) (vl-load-com) (princ"圆自动同心:") (setq aa(ssget));;获取圆的图元名 (setq center(getpoint"选取点位置:")); (setq center(vlax-3D-point center)); (setq qi0);初始序号 (repeat(sslength aa);对象个数 (setq ec(ssname aa qi));选择第一个图元 (setq v_c(vlax-ename->vla-object ec));将圆的图元名转换为VLA对象 (vla-put-center v_c center);更新圆中心点 (setq qi(+qi1)) );repeat (princ"修改成功:") );defun 二、图层快速修改 (princ"快速修改图层编程-TC") (defun C:TC(/) (vl-load-com) (setq SET_ZJTC(vla-get-Layer(vlax-ename->vla-object(car(entsel"\n选择基准图层:"))))) (WHILE(NOT SET_ZJTC)(setq SET_ZJTC(vla-get-Layer(vlax-ename->vla-object(car(entsel "\n基准图层为空,重新选择!:")))))) (setq SET_XGTC(vla-get-Layer(vlax-ename->vla-object(car(entsel"\n选择修改图层:"))))) (WHILE(NOT SET_XGTC)(setq SET_XGTC(vla-get-Layer(vlax-ename->vla-object(car (entsel"\n修改图层为空,重新选择!:")))))) (vlax-for VLA_MSP(vla-get-ModelSpace(vla-get-ActiveDocument(vlax-get-Acad-Object))) (IF(=(vla-get-Layer VLA_MSP)SET_XGTC)(vla-put-Layer VLA_MSP SET_ZJTC))) (princ"\n快速修改图层编程-TC:") (princ) );DEFUN 三、字高自动修改 (princ"快速修改字高编程-ZG") (defun C:ZG(/) (vl-load-com) (setq SET_ZTGD(vla-get-Height(vlax-ename->vla-object(car(entsel"\n选择基准字高:"))))) (WHILE(NOT SET_ZJTC)(setq SET_ZJTC(vla-get-Height(vlax-ename->vla-object(car (entsel"\n基准字高为空,重新选择!:")))))) (setq SET_XGTC(vla-get-Layer(vlax-ename->vla-object(car(entsel"\n选择修改图层:"))))) (WHILE(NOT SET_XGTC)(setq SET_XGTC(vla-get-Layer(vlax-ename->vla-object(car (entsel"\n修改图层为空,重新选择!:"))))))

CADLISP程序

1.计算所有线段总长度(加载后只需框选所有线段便可得出这些线段的总长度) (defun c:LL () (setvar "cmdecho" 1) (setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE")))) (setq i 0) (setq ll 0) (repeat (sslength en) ? (setq ss (ssname en i)) ? (setq endata (entget ss)) ? (command "lengthen" ss "") ? (setq dd (getvar "perimeter")) (setq ll (+ dd ll)) ? (setq i (1+ i)) ) ? (princ "所选线条总长为:")(princ ll)(princ) ) 2.标注所有线段(加载后只需框选所有线段便可得标注这些线段) (defun c:LLL () (COMMAND "UCS" "") (setvar "cmdecho" 1) (SETVAR "OSMODE" 0) (setq ? ?AcadObject ? (vlax-get-acad-object) ? ?AcadDocument (vla-get-ActiveDocument Acadobject) ? ?mSpace ? ? ? (vla-get-ModelSpace Acaddocument) ) ;;选取需要测量的样条曲线、圆弧、直线、椭圆 (setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE")))) (setq i 0)

坐标提取lisp程序

坐标提取lisp程序 2010-05-17 20:50:07| 分类:工程| 标签:|字号大中小订阅 ;该程序主要用于CAD点(point)三维坐标提取,并将数据输出为CASS软件中使用的数据格式;输出格式:点号,,测量Y值,测量X值,测量Z值例:1,,100.3244,1232,433,25 ;2010-05-17 ;命令:plzbsc (defun c:plzbsc() (princ "\n选择所需输出的点(point):") (setq ss (ssget ));;选取坐标点 (setq n (sslength ss ));计算坐标点数量 (setq ff (open (getfiled "文件保存为" "f:/" "dat" 1) "w"));保存路径 (setq i 0) (repeat n (setq spt (ssname ss i )) (setq ept (entget spt)) (if (= (cdr (assoc 0 ept)) "POINT") (progn (setq lxyz (cdr (assoc 10 ept))) (setq sx (rtos (nth 1 lxyz)));将坐标值实数转换成字符 (setq sy (rtos (nth 0 lxyz))) (setq sz (rtos (nth 2 lxyz))) (setq i1 (+ i 1));计算点序号 (setq sn (rtos i1 2 0));将序号实数转换成字符 (setq sxyz (strcat sn",," sy "," sx "," sz)) (write-line sxyz ff) ) ) (setq i (+ i 1)) );repeat ) (prompt "* << 命令:plzbsc >> *输出格式(点号,, Y,X,Z)**") (prin1) 地形图上提取碎步点(高程点)坐标并输出到文本 2010-05-18 08:50:38| 分类:工程| 标签:|字号大中小订阅 利用程序提取地形图上碎步点的三维坐标。并输出到记事本中,

在AutoCAD中基于LISP程序简易标注粗糙度

在AutoCAD中基于AutoLISP程序简易标注粗糙度 陕西关中工具制造有限公司(陕西凤翔 721400)张科岐王建卫 对经常使用AutoCAD绘制二维机械图的用户来说,标注表面粗糙度是一件烦琐的事情。常用的方法是先画好粗糙度的符号,再将粗糙度值定义为属性,最后将符号和粗糙度定义为块。标注时插入这个块,按提示输入粗糙度值完成。笔者结合自己在工作中的实际经验,利用AutoCAD提供的AutoLISP程序二次开发功能编写了一个粗糙度标注程序。使用该程序标注粗糙度,操作简单、快捷、准确、美观。现将程序内容及使用方法介绍如下,供大家参考。 程序全文如下: (defun rad->deg(rad) (/ (* rad 180.0) pi) ) (defun Deg->Rad(Deg) (* pi (/ Deg 180.0)) ) (defun rgh() (setvar "CMDECHO" 1) (setq svar_old (getvar "osmode" )) (setq svar_new 0) (setvar "osmode" svar_new) (setq pos_pt (getpoint"\n标注位置:")) (setq sym_dir (getpoint"\n符号方向:")) (setq sym_hgt (getreal"\n符号高度<5>:")) (setq txt (getstring"\n数值大小<3.2>:")) (if (= txt "") (setq txt "3.2") ) (setq txt_hgt(getreal"\n字符高度<2.5>:")) (if (= txt_hgt nil) (setq txt_hgt 2.5) ) (if (= sym_hgt nil) (setq sym_hgt 5.0) ) (setq sym_lgt (/ sym_hgt (cos (/ pi 6.0)))) (setq sym_angle (angle pos_pt sym_dir)) (setq sym_pt1 (polar pos_pt (+ (/ pi 3.0) sym_angle) (* 0.5 sym_lgt)))

EXCEL表画曲线图方法

引用用Excel函数画曲线的方法1.用Excel函数画曲线图的一般方法 因为Excel有强大的计算功能,而且有数据填充柄这个有力的工具,所以,绘制曲线还是十分方便的。用Excel画曲线的最大优点是不失真。大体步骤是这样的: ⑴用“开始”→“程序”→“Microsoft office”→”Excel”,以进入Excel窗口。再考虑画曲线,为此: ⑵在A1 和A2单元格输入自变量的两个最低取值,并用填充柄把其它取值自动填入; ⑶在B列输入与A列自变量对应的数据或计算结果。有三种方法输入: 第一种方法是手工逐项输入的方法,这种方法适合无确定数字规律的数据:例如日产量或月销售量等; 第二种方法是手工输入计算公式法:这种方法适合在Excel的函数中没有列入粘贴函数的情况,例如,计算Y=3X^2时,没有现成的函数可用,就必须自己键入公式后,再进行计算; 第三种方法是利用Excel 中的函数的方法,因为在Excel中提供了大量的内部预定义的公式,包括常用函数、数学和三角函数、统计函数、财务函数、文本函数等等。 怎样用手工输入计算公式和怎样利用Excel的函数直接得出计算结果,下面将分别以例题的形式予以说明; ⑷开始画曲线:同时选择A列和B列的数据→“插入”→“图表”→这时出现如下图所示的图表向导:

选“XY散点图”→在“子图表类型”中选择如图所选择的曲线形式→再点击下面的‘按下不放可查看示例’钮,以查看曲线的形状→“下一步”→选“系列产生在 列”→“下一步”→“标题”(输入本图表的名称)→“坐标”(是否默认或取消图中的X轴和Y轴数据)→“网络线”(决定是否要网格线)→“下一步”后,图形就完成了; ⑸自定义绘图区格式:因为在Excel工作表上的曲线底色是灰色的,线条的类型(如连线、点线等)也不一定满足需要,为此,可右击这个图,选“绘图区格式”→“自定义”→“样式”(选择线条样式)→“颜色”(如果是准备将这个曲线用在Word上,应该选择白色)→“粗细”(选择线条的粗细)。 ⑹把这个图形复制到Word中进行必要的裁剪; ⑺把经过裁剪过的图形复制到Word画图程序的画板上,进行补画直线或坐标,或修补或写字,“保存”后,曲线图就完成了。 2.举例 下面针对三种不同的情况举三个例子说明如下: 例1. 下图是今年高考试题的一个曲线图,已知抛物线公式是Y=2X^2 ,请画出其曲线图。 因为不能直接利用Excel给出的函数,所以,其曲线数据应该用自己输入公式的方法计算出来,画图步骤如下:

用AutoLISP程序提高绘图效率的几个实例

2007.12 科技广场 254

工程中经常要绘制各种弹簧和螺纹连接件,在AutoCAD中没有专门绘制弹簧和螺纹的命令,弹簧和螺纹在AutoCAD中都可用平面图形通过相应螺旋线拉伸而成,所以绘制螺旋线就是解决问题的关键。如果用常规的3dpoly命令绘制三维螺旋线,需要输入大量精确数据,才能一点一点地画出螺旋线,做法非常麻烦。现在提供AutoLISP程序,即可解决绘制螺旋线的问题。然后通过相应平面图形的拉伸,就可以完成弹簧、螺纹等零件的绘制。 根据圆台螺旋线的形成原理(一动点M绕圆台的母线AB作等速直线运动,而该母线AB又绕圆台的轴线O1O2作等角速旋转时,点M的运动轨迹即为圆台的螺旋线,如图二所示。圆柱螺旋线是圆台螺旋线的特例,故可通过圆台螺旋线程序做相应的变动,即可得到),动点M(x,y,z)的参数方程如下: 图二园台螺旋线 X=[r0+hg *α/(2π)]*cosα Y=[r0+hg *α/(2π)] *sinα Z=±vg *α/(2π) 其中,r0为圆台下面的半径,α为螺旋线角,vg为导程(单线螺旋线螺距(弹簧的节距)等于导程),hg为点M沿水平半径方向上增加的距离(hg=|(r1-r0)m|求得,m为螺旋线的圈数)。 下面提供圆台螺旋线的AutoLISP程序清单: (defun c:luoxc(/) (setq b1 (getpoint" 指定基点:")) (setq r1 (getreal "指定初始半径:")) (setq disp (getreal "指定节距:")) (setq angtg (getreal "输入锥形角:")) (setq m (getint"输入圈数:")) (setq n (getint"输入每圈细化段数<36>:")) (cond ((null n )(setq n 36))) (setq delta (/ (* 2.0 pi ) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq tg (*(/ angtg 180) pi)) (setq ang 0) (setq k 0) (command "ucs" "o" b1) (command "3dpoly" (list r1 0 0)) (repeat (* m n) (setq k(+ k 1)) (setq ang(+ delta ang)) (setq r (- r1 (* (+ 0(* j k))(/ (sin tg )(costg))))) (setq pt2 (list (* r(cos ang))(* r(sin ang))(+ 0(* j k)))) (command pt2) ) (command "") ) 根据圆台螺旋线的形成原理,如果圆锥角为0度时,即可形成圆柱螺旋线。圆柱螺旋线程序清单如下: (defun c:luoxc(/) (setq b1 (getpoint" 指定基点:")) (setq r (getreal "指定初始半径:")) (setq vg (getreal "指定节距:")) (setq m (getint"输入圈数:")) (setq n (getint"输入每圈细化段数<36>:")) (cond ((null n )(setq n 36))) (setq delta (/ (* 2.0 pi ) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq ang 0) (setq k 0) (command "ucs" "o" b1) (command "3dpoly" (list r 0 0)) 255

实验一:绘制信源熵函数曲线

成绩 信息与通信工程学院实验报告 (软件仿真性实验) 课程名称:信息论基础 实验题目:绘制信源熵函数曲线指导教师:毛煜茹班级:学号:19 学生姓名:王宇 一、实验目的和任务 掌握离散信源熵的原理和计算方法。 熟悉matlab软件的基本操作,练习应用matlab软件进行信源熵函数曲线的绘制。 理解信源熵的物理意义,并能从信源熵函数曲线图上进行解释其物理意义。二、实验内容及原理 实验内容: 用matlab软件绘制二源信源熵函数曲线。根据曲线说明信源熵的物理意义。 实验原理: (1)离散信源相关的基本概念、原理和计算公式 产生离散信息的信源称为离散信源。离散信源只能产生有限种符号。

假定X是一个离散随机变量,即它的取值范围R={x1,x2,x3,…}是有限或可数的。设第i个变量x i发生的概率为p i=P{X=x i}。则: 定义一个随机事件的自信息量I(x i)为其对应的随机变量x i出现概率对数的负值。即: I(x i)= -log2p(x i) 定义随机事件X的平均不确定度H(X)为离散随机变量x i出现概率的数学期望,即: ∑∑ - = = i i i i i i x p x p x I x p X H) ( log ) ( ) ( ) ( ) ( 单位为比特/符号或比特/符号序列。 平均不确定度H(X)的定义公式与热力学中熵的表示形式相同,所以又把平均不确定度H(X)称为信源X的信源熵。 必须注意以下几点: 某一信源,不管它是否输出符号,只有这些符号具有某些概率特性,必有信源的熵值; 这熵值是在总体平均上才有意义,因而是个确定值,一般写成H(X),X是指随机变 量的整体(包括概率分布)。 信息量则只有当信源输出符号而被接收者收到后,才有意义,这就是给与信息者的信 息度量,这值本身也可以是随机量,也可以与接收者的情况有关。 熵是在平均意义上来表征信源的总体特征的,信源熵是表征信源的平均不确定度,平 均自信息量是消除信源不确定度时所需要的信息的量度,即收到一个信源符号,全 部解除了这个符号的不确定度。或者说获得这么大的信息量后,信源不确定度就被 消除了。信源熵和平均自信息量两者在数值上相等,但含义不同。 当某一符号x i的概率p(x i)为零时,p(x i)log p(x i) 在熵公式中无意义,为此规定这时的 p(x i)log p(x i) 也为零。当信源X中只含有一个符号x时,必有p(x)=1,此时信源熵H (X)为零。

AUTOLISP 程序命令(精校版本)

1.+ (加)返回所有数的和 2.– (减)将第一个数减去其他数的和并返回差值 3.* (乘)返回所有数的乘积 4./ (除)将第一个数除以其他数的乘积并返回商 5.= (等于)比较参数是否相等 6./= (不等于)比较参数是否值不相等 7.< (小于)如果每个参数值都小于它右边的参数则返回 T,否则返回 nil 8.<= (小于或等于)如果每个参数值都小于或等于它右边的参数则返回 T, 否则返回 nil 9.> (大于)如果每个参数值都大于它右边的参数则返回 T,否则返回 nil 10.>= (大于或等于)如果每个参数值都大于或等于它右边的参数则返回 T, 否则返回 nil 11.~ (按位非)返回参数的按位非(即 1 的补码) 12.1+ (增1)将参数加 1 13.1– (减1)将参数减 1 14.abs返回参数的绝对值 15.acad_colordlg显示标准的 AutoCAD 颜色选择对话框 16.acad_helpdlg启动帮助工具(已废弃) 17.acad-pop-dbmod恢复 DBMOD 系统变量的值到最近用 acad-push-dbmod 保存的值 18.acad-push-dbmod储存 DBMOD 系统变量的当前值 19.acad_strlsort以ASCII码字母顺序对字符串表进行排序 20.acad_truecolorcli从命令行中选择 AutoCAD 真彩色 21.acad_truecolordlg显示 AutoCAD 真彩色选择对话框 22.acdimenableupdate控制关联标注的自动更新 23.acet-layerp-mode查询和设置 LAYERPMODE 配置 24.acet-layerp-mark放置图层先前记录的开始和结束标记 25.acet-laytrans转换图形中的图层为其它图形或标准文件中所定义的标 准 26.acet-ms-to-ps从模型空间单位转换实数值到图纸空间单位 27.acet-ps-to-ms从图纸空间单位转换实数值到模型空间单位 28.action_tile为某一对话框控件指定一个动作表达式,用户在对话框中选 中这个控件时,就会执行该动作表达式 29.add_list在当前激活的对话框的列表框中增加一个字符串或修改其中的 一个字符串 30.alert显示一个警告框,其中显示一条出错或警告信息 31.alloc设置段长度以供 expand 函数使用 32.and返回表达式的逻辑与 (AND) 运算结果 33.angle以弧度为单位返回两点之间连线与当前 UCS 下 X 轴之间的夹角 34.angtof将表示角度的字符串转换为实数(浮点数)形式的弧度值 35.angtos将一个以弧度为单位的角度值转换成字符串 36.append将任意多个表组合成一个表 37.apply将参数表传给指定的函数

Excel画函数曲线

引用用Excel函数画曲线的方法 2010-11-04 23:18:06| 分类:电脑天地| 标签:|字号大中小订阅 本文引用自老头儿《用Excel函数画曲线的方法》 引用 老头儿的用Excel函数画曲线的方法 1.用Excel函数画曲线图的一般方法 因为Excel有强大的计算功能,而且有数据填充柄这个有力的工具,所以,绘制曲线还是十分方便的。用Excel画曲线的最大优点是不失真。大体步骤是 这样的: ⑴用“开始”→“程序”→“Microsoft office”→”Excel”,以进入Excel窗 口。再考虑画曲线,为此: ⑵在A1 和A2单元格输入自变量的两个最低取值,并用填充柄把其它取值 自动填入; ⑶在B列输入与A列自变量对应的数据或计算结果。有三种方法输入: 第一种方法是手工逐项输入的方法,这种方法适合无确定数字规律的数 据:例如日产量或月销售量等; 第二种方法是手工输入计算公式法:这种方法适合在Excel的函数中没有列入粘贴函数的情况,例如,计算Y=3X^2时,没有现成的函数可用,就必须自 己键入公式后,再进行计算; 第三种方法是利用Excel 中的函数的方法,因为在Excel中提供了大量的内部预定义的公式,包括常用函数、数学和三角函数、统计函数、财务函数、 文本函数等等。 怎样用手工输入计算公式和怎样利用Excel的函数直接得出计算结果,下 面将分别以例题的形式予以说明; ⑷开始画曲线:同时选择A列和B列的数据→“插入”→“图表”→这时出现 如下图所示的图表向导:

选“XY散点图”→在“子图表类型”中选择如图所选择的曲线形式→再点击下面的…按下不放可查看示例?钮,以查看曲线的形状→“下一步”→选“系列产生在列”→“下一步”→“标题”(输入本图表的名称)→“坐标”(是否默认或取消图中的X轴和Y轴数据)→“网络线”(决定是否要网格线)→“下一步”后,图形就 完成了; ⑸自定义绘图区格式:因为在Excel工作表上的曲线底色是灰色的,线条的类型(如连线、点线等)也不一定满足需要,为此,可右击这个图,选“绘图区格式”→“自定义”→“样式”(选择线条样式)→“颜色”(如果是准备将这个曲线用在Word上,应该选择白色)→“粗细”(选择线条的粗细)。 ⑹把这个图形复制到Word中进行必要的裁剪; ⑺把经过裁剪过的图形复制到Word画图程序的画板上,进行补画直线或 坐标,或修补或写字,“保存”后,曲线图就完成了。 2.举例 下面针对三种不同的情况举三个例子说明如下: 例1. 下图是今年高考试题的一个曲线图,已知抛物线公式是Y=2X^2 ,请 画出其曲线图。 因为不能直接利用Excel给出的函数,所以,其曲线数据应该用自己输入 公式的方法计算出来,画图步骤如下:

Matlab绘制函数图像函数示例汇总

matlab中最基本的函数plot()的用法 标签:matlab plot 指令 5.1 二维平面图形 5.1.1 基本图形函数 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是 说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制 曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线,当x 为m× n 矩阵时,就由n 条曲线。 (2)plot(x,y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。 (3)plot(x,y1,x,y2,…) 以公共的x 元素为横坐标值,以y1,y2,… 元素为纵坐标值绘 制多条曲线。 例5.1.1 画出一条正弦曲线和一条余弦曲线。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2) 图5.1.1 函数plot 绘制的正弦曲线 在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MATLAB 软件专门提供了这方面的参数选项(见表 5.1.1),我们只要在每个坐标后加上相关字符串,就可实现它们的功能。 - 2 - 表5.1.1 绘图参数表 色彩字符颜色线型字符线型格式标记符号数据点形式标记符号数据点形式 y 黄- 实线. 点< 小于号 m 紫:点线o 圆s 正方形 c 青-. 点划线x 叉号 d 菱形 r 红- - 虚线+ 加号h 六角星 g 绿* 星号p 五角星 b 蓝v 向下三角形 w 白^ 向上三角形 k 黑> 大于号 例如,在上例中输入 >> plot(x,y1,'r+-',x,y2,'k*:') 则得图 5.1.2 图5.1.2 使用不同标记的plot 函数绘制的正弦曲线 5.1.2 图形修饰 MATLAB 软件为用户提供了一些特殊的图形函数,用于修饰已经绘制好的图形。 函数含义 grid on (/off) 给当前图形标记添加(取消)网络 标记横坐标 xlable(‘string’) ylabel(‘string’) 标记纵坐标 给图形添加标题 title(‘string’)

在PPT课件中动态绘制各类函数曲线

龙源期刊网 https://www.360docs.net/doc/a410751006.html, 在PPT课件中动态绘制各类函数曲线 作者:马致明 来源:《电脑知识与技术》2011年第25期 摘要:在探究PowerPoint VBA绘图方法的基础上,剖析如何利用VBA编程在PPT课件 中直接绘制各类可控参数的静态和动态平面函数曲线,并给出了具体的制作实例。 关键词:VBA编程;静态曲线;动态曲线;绘制;PPT课件 中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)25-6232-03 Dynamically Mapping Various Function Curve in PPT Courseware MA Zhi-ming (College of Computer Science and Technology, Xinjiang Normal University, Urumqi 830054, China) Abstract: After studding PowerPoint VBA mapping method, it has been analyzed that how to mapping Various static and dynamic function curve by using VBA programming in PPT courseware. An example has been given also. Key words: VBA programming; static function curve; dynamic function curve; mapping; PPT courseware PowerPoint由于简单易用等优点成为众多教师制作课件的首选工具,它所附带的编程工具VBA则给使用者提供了对演示文稿进行二次开发的环境,从而使演示文稿的功能更加强大。函数曲线的绘制在数学、物理、电子等学科的课件中经常出现,特别是可控参数的交互式静态函数曲线和动态函数曲线的绘制更是体现课件制作水平高低的要素之一。笔者经过反复探究找到了在PowerPoint中利用VBA编程制作这类课件的有效途径,现将其关键技术介绍如下,希望能对各位同仁有所启发。 1 VBA概述 在Office家族中集成了一种加强其功能的语言,即Visual Basic for Application,简称为VBA。VBA是Visual Basic程序设计语言(简称为VB)的一个子集,继承了VB的绝大多数功能,并包含了对Office中有关对象的支持与操作功能,因此,易于掌握并用于宏编程。在PowerPoint中利用VBA可以在幻灯片中添加控件等用户接口元素,通过这些控件应用程序可以得到用户的请求,并对其做出响应。在PPT中适当地使用VBA,可以大大增强其交互功能,为加强教学课件的演示效果开辟了广阔的空间。

AUTOLISP实用编程四例

autolisp实用编程四例 江苏崔华明 autocad是一个功能强大的通用图形设计软件,其内嵌的autolisp语言为用户进行二次开发提供了方便。下面就介绍几则用autolisp编写的实用程序,这些程序相当于新增的autocad命令,可以弥补autocad本身的一些不足,为日常使用带来方便。 1.快速更改文本的大小 在标准的autocad中,要更改已有文本的大小,需要使用change命令。该命令的缺陷是:即使只更改文本的大小,也要重新确认文本的插入点、字型、倾斜角等一系列参数。也就是说,除输入文本的新高度值外,还需要按5次回车键才能完成一个文本的更改!而且每次只能修改一个文本。这对于同时更改多个文本的大小非常不便。本文的autolisp程序使这一工作变得十分方便和快捷。使用方法如下: 在autocad的command提示下,打入命令: cth autocad将提示“selectobjects:”,这时可以使用autocad允许的任意方式选择目标。对于有多个文本需要更改的情况,使用窗口选择比较方便,而且你不用担心选择窗口中包含了非文本目标,程序能够自动在选择的目标中查找出文本实体,并只对文本进行更改。 选择目标后,autocad提示“newtextheight:”,这时输入一个新的文本高度值然后回车,则所有选中的文本被更改成新设定的高度。 2.延伸直线的长度 在实际使用中,常常要将一条直线延伸指定的长度。通常的做法是:在需要延伸的直线的端点画一个辅助圆,圆的半径等于直线要延伸的长度,然后使用extend命令将直线延伸到与圆相交,最后删除辅助圆。 本文的autolisp程序将使你非常容易地实现这一点。你只需选择要延伸的直线并输入要延伸的长度即可,其余的工作由程序自动完成。使用方法如下: 在autocad的command提示下,打入命令: stl 然后根据提示选择要延伸的直线(选择点要靠近直线需要延伸的端点),并输入延伸的长度。该程序将自动在离选择点较近的直线端点,按指定的长度延伸直线。 3.快速画直线 在画给定坐标点的直线时,需要通过键盘输入坐标值。这样的情况下当然是利用右边的数字键盘输入

CAD创建Lisp程序步骤

使用Visual LISP创建简单的LISP应用程序 作者:佚名点击数:1523 更新:2007-2-2 7:08:10 热★★★ 【字体:小大】 a> 本节通过一个简单的实例来讲述LISP程序的创建过程,介绍编制LISP程序的一些基本步骤,以及LISP程序在AutoCA D中的加载和运行的方法。首先来创建一个最简单的LISP程序—-―Hello.lsp‖,在AutoCAD 2002中加载并运行该程序,将会在命令行出现-―Hello, Visual LISP!‖。 36.2.1 Visual LISP与AutoCAD的通信 用户可以直接在AutoCAD命令行中键入AutoLISP表达式。AutoCAD通过括号来确认AutoLISP表达式。AutoCAD每当发现一个左括号,就确认为AutoLISP表达式,并由AutoLISP求表达式的值后返回AutoCAD,AutoCAD使用返回结果并继续进行其他工作。 注意在AutoLISP表达式中,左、右括号必须配对,否则AutoCAD将给出提示符n>,n表示右括号丢失数目。 此外,在AutoCAD中调用并执行AutoLISP程序。在AutoLISP程序中采用COMMAND函数来与AutoCAD命令程序处理器通信,COMMAND从AutoLISP获得命令并将其传给AutoCAD。 36.2.2 实例1 最简单的LISP程序——―Hello.lsp‖ Step 1 创建新文件 (1) 运行AutoCAD 2002系统,以―acadiso.dwt‖为样板创建图形文件,并调用―vlisp‖命令进入Visual LISP环境。 (2) 单击―Standard(标准)‖工具栏中的按钮,新建一个LISP文件。 Step 2 输入代码并保存文件 (1) 在编辑窗口中输入源文件―Hello.lsp‖的代码,如图36-3所示。程序清单如下: ;;;* Hello.lsp –Visual LISP文件实例 (prompt "Pick point:") ;指定运行时的提示信息 (setq ipt (getpoint)) ;在屏幕上指定一点并将其坐标值赋予变量―ipt‖ (setq hgt 15) ;给变量―hgt‖赋值 (Command "_.TEXT" "_S" "STANDARD" ipt hgt 0 "Hello, Visual LISP!") ;调用―Commnad‖函数与AutoCAD进行通信

AutoCAD中绘制函数曲线的若干方法

AutoCAD中绘制函数曲线的若干方法 AutoCAD本身没有提供函数曲线的绘制功能,但我们可以通过多种方法来实现函数曲线的绘制: 1. 借助另外的能绘制函数曲线的CAD软件,如CAXA。CAXA提供了丰富的函数曲线,并可自定义。在CAXA中绘制好曲线后,保存为dwg文件,再在AutoCAD 中打开,复制到你的图形文件中。 2. 借助Excel,在Excel中把函数的若干点坐标计算出来,再合并成点对后在AutoCAD中用样条曲线来绘制这些点对。 以楼主说的正弦曲线为例说明如下: (1)在Excel的A列中输入函数自变量的若干值(可以用自动填充功能),并在B例用公式计算出函数值。如A1中输入“-180“,A2中输入“=A1+1”。在B1中输入“=40*SIN(PI()*A1/180)“,其中40是振幅,把正弦曲线的Y 方向变化幅度增强(可根据对曲线的变化幅度的要求给其他值),PI()*A1/180是将A1单元格的数据转换为弧度。再拖运复制B1单元格的数据到B2。(2)在C1单元格中输入:=A1&","&B1,把A1和B1中的数据组成一对坐标点对,相当于A1是X轴坐标,B1是Y轴坐标。并把公式复制到C2。(3)选择A2:C2两个单元格,向下拖运复制到A361:C261(角度从-180°到+180°)。在C1:C361中得到一个函数周期的坐标点对数据。 (4)选择C1:C361,并复制。 (5)在AutoCAD中输入命令:SPLINE(或绘图——样条曲线),这时命令提示:指定第一个点或 [对象(O)]:

此时,把鼠标定位到提示行的最后,即那个冒号(:)后面,按Ctrl+V。会看到Excel的坐标点对在命令行出现。过一会一条优美的正弦曲线就画好了。再加上坐标轴线就行了。 3. 二次开发软件,二楼已有介绍。 4. 在其他软件中得到曲线后把图片插入到AutoCAD中,可绘制函数曲线的软件就很多了,如刚说到的Excel,还有MathCAD等很多软件。 电脑里安装有CAXA软件的推荐方法1,没有安装的推荐方法2,有二次开发能力的推荐方法3(不过那也是有相当的水平的了,用不着老朽在此哆嗦,呵呵),需在其他软件中作分析处理并得出了曲线的可用方法4。 下面把用方法2,即借助Excel的方法绘制的一条正弦曲线图片贴上来

CAD-LISP-程序

CAD-LISP-程序

1.计算所有线段总长度(加载后只需框选所有线段便可得出这些线段的总长度) (defun c:LL () (setvar "cmdecho" 1) (setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE")))) (setq i 0) (setq ll 0) (repeat (sslength en) (setq ss (ssname en i)) (setq endata (entget ss)) (command "lengthen" ss "") (setq dd (getvar "perimeter")) (setq ll (+ dd ll)) (setq i (1+ i)) ) (princ "所选线条总长为:")(princ ll)(princ) ) 2.标注所有线段(加载后只需框选所有线段便可得标注这些线段) (defun c:LLL () (COMMAND "UCS" "") (setvar "cmdecho" 1) (SETVAR "OSMODE" 0) (setq AcadObject (vlax-get-acad-object) AcadDocument (vla-get-ActiveDocument Acadobject) mSpace (vla-get-ModelSpace Acaddocument) ) ;;选取需要测量的样条曲线、圆弧、直线、椭圆 (setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE")))) (setq i 0)

相关文档
最新文档