




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本土化,包括语言、标准和习惯等 二次开发的意义 减少重复劳动 满足不同特定企业、行业的需要 比如 CAXA系列、开目CAD 天河CAD、InteCAD 中望CAD、尧创CAD、浩辰CAD 企业产品:系列化 面向对象:所有工业部门的 功能:全而不专 圆柱齿轮、锥齿轮、非圆齿轮、齿条等 阀门行业 换热器行业 锅炉行业 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 AutoLispADS DCLADSRX ObjectARX Activex VBA VLisp 第一代第三代第二代 Automation Autocad 开发方式及发展 第一代AutoLisp 概 述 1986年随AutoCAD v2.18提供的二次开发工具。 是嵌入AutoCAD内部的COMMON LISP的一个子集。 是唯一的一种解释型语言 使用AutoLISP可直接调用几乎所有的AutoCAD命令 AutoLISP语言的应用 最典型应用之一是实现参数化绘图程序设计,包括尺寸驱动 程序和鼠标拖动程序等。 另一个典型应用就是驱动AutoCAD提供PDB模块构成DCL (Dialog Control Language)文件,创建自己的对话框。 (defun c:11 (/ p1 p2) (setq p1(getpoint “输入第一个点“) (setq p2(getpoint “输入第二个点“) (command “line“ p1 p2 “) ) Defun 函数-定义函数 (defun 函数名(函数参数 /变量表 )表达式 ) 例如定义一个加3 函数,程序源代码如下: (defun mul 3 (x) (setq x (+ 3 x) ) (defun C: AutoCAD命令名(/ 局部变数表)表达式 setq:赋值函数 作用:给变量进行赋值。 格式:(setq name value name value.) 其中Name为变量名 Value为赋予变量的值 (函数名函数参数) Auto LISP 以表的形式调用函数,其格式如下 这里的函数参数的数量可能为 0,也可以为任意多个,这取 决于具体的函数。 每个参数还可以是表达式,返回的是表达式的最终计算结果 。 每调用一个函数都会得到函数的结果,即函数的返回值。有的 函数返回的是数值,有的函数返回的是逻辑常数T 或者 nil,这取 决于函数princ(打印字符)函数,比如(princ)。 调用自定义函数的方法与调用系统提供的函数的方法相同, 例如: Auto LISP 用command 函数调用AutoCAD 命令,其格式如下。 (command “AutoCAD命令” “命令所需的数 据”) (command “line” “6,9” “18,27” “ ”) List函数 List函数用于定义一个二维或三维点 若表达式中不包含任何变量及未定义项,则该函数还可以使 用单引号()命名。 示例(setq (List 2.5 3.56) 返回 2.5,3.56 (setq (2.5 3.56) 返回 2.5,3.56 car、cdr与cadr函数 1.car函数 car函数返回一个表中的第一个元素。若表中不包含任何元 素,函数返回nil。 car函数格式为:(car List) 其中car返回第一个元素 list.元素列表 示例:(car(2.5 3.56) 返回 2.5 (car(x ) 返回 ( car(15 20) 56) 返回(15 20) (car()返回 nil 其中的单引号表示个表。 2.cdr函数 cdr函数返回一个移去了表的第一个元素后的列表,其格 式为(cdr List) 其中cdr .返回第一个元素被移去的列表 list.元素列表 示例:(cdr(2.5 3.56) 返回(3.56) (cdr(,y,z) 返回(y,) (cdr(15 20)56) 返回( 56) ( cdr() 返回nil 3.cadr函数 cadr函数执行两个操作,cdr和car,返回列表中第二个元素。 cdr函数移去了第一个元素。car函数返回新表中的第一个元素。 、cadr函数的格式为:(cadr List) 其中 cadr.执行两个操作( car(cdr( ) List元素列表 示例:(cadr(2 3) 返回3 (cadr(2 3 56) 返回3 ( cadr(x )) 返回 (cadr(15 20) 56 24)返回56 这些例子中, cadr执行两个操作 (cadr( )=(car(cdr( ) =(car(y z) 返回 princ函数 Princ函数打印(或显示)变量的值。若变量位于双引号中, 该函数打印(或显示)双引号内的表达式。 princ函数的格式为:(Princ变量或表达式) 示例:(princ)在屏幕上打印一个空行 (princ)在屏幕上打印出变量的值 (princ“Welcome”)在屏幕上打印Welcome 运行错误有以下两种情况 (1)语法错误:没有按程序规定的语言写程序 ,这是低级错误。 (2)逻辑错误:程序员错误地理解了计算机所 要完成的任务,这是高级错误,对于一个 程序员来说要尽量避免。无意输入错误变量名 对计算机而言也属于这种错误。 (defun c:11 (/ p1 p2) (setq p1(getpoint “输入第一个点“) (setq p2(getpoint “输入第二个点“) (command “line“ p1 p2 “) ) 画线 (defun c:rect1 (/ p1 p2 p3 p4) (graphscr) (setvar “cmdecho“ 0) (prompt “rect1 command draws a rectangle“)(terpri) (setq p1(getpoint “Enter first corner“)(terpri) (setq p3(getpoint “Enter opposite corner“)(terpri) (setq p2(list(car p3)(cadr p1) (setq p4(list(car p1)(cadr p3) (command “line“ p1 p2 p3 p4 “c“) (setvar “cmdecho“ 1) (Princ) ) 画矩形 (defun C:BA() (setq allarea 0) (print “请拾取内部一个点“) (while (setq pt (getpoint) (command “boundary“ pt “) (command “area“ “o“ “l“) (setq allarea( + allarea (getvar“area“) (print “总面积是“) (print allarea) (print “请拾取内部一个点“) ) ) 累 计 面 积 计 算 (1)语言规则十分简单,易学易用; (2)直接针对AutoCAD,易于交互; (3)解释执行,立竿见影。 优 点 第一代AutoLisp (1)功能单一,综合处理能力差; (2)解释执行,程序运行速度慢; (3)缺乏很好的保护机制,源程序保密性差; (4)LISP用表来描述一切,并不能很好地反映现实世界和 过程,跟人的思维方式也不一致; (5)不能直接访问硬件设备、进行二进制文件的读写。 AutoLISP的这些特点,使其仅适合于有能力的终端用户完成 一些自己的开发任务。 缺 点 第一代AutoLisp 什么是宏? 计算机中宏又称为宏命令,即通过特殊的控制语, 将一系列动作简便化;即:一种批处理的程序 AutoCad中的宏,就是一个程序工具集,用VBA, LISP一类的语言编程,完成一个相对复杂的工具集合 ,也是用编程语言的方式简化软件操作的过程。 word 或 ppt 中的宏 比如:将图片批量删除或批量修改图片尺寸 Public Sub macrodemo() MsgBox “欢迎使用VBA” End Sub 例题1 Sub c100() Dim cc(0 To 2) As Double 声明坐标变量 cc(0) = 1000 定义圆心坐标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) 画圆v Next i End Sub 例题 2 Sub c100() Dim cc(0 To 2) As Double 声明坐标变量 cc(0) = 1000 定义圆心坐标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) 画圆v Next i End Sub 例题 2 Sub和end sub标志程序的开始和结束 C100 宏的名称,也叫过程名称 当用户执行 C100 时,程序将运行 sub 和 end sub 之间的所有指令 Sub c100() Dim cc(0 To 2) As Double 声明坐标变量 cc(0) = 1000 定义圆心坐标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) 画圆v Next i End Sub cc 变量名 cc() 数组 cc(0 To 2) 数组有三个元素:CC(0)、CC(1)、CC(2) As Double 数据类型是双精度型 声明坐标变量注释 语法:Dim 变量名 As 数据类型 将cc作为坐标数组,存储坐标值,坐标值是双精度型 例: Dim a As single Dim cc(1 To 3 ) As Long 例题 2 Sub c100() Dim cc(0 To 2) As Double 声明坐标变量 cc(0) = 1000 定义圆心坐标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) 画圆v Next i End Sub cc(0) x坐标 cc(0)内存储x的坐标值1000 例题 2 Sub c100() Dim cc(0 To 2) As Double 声明坐标变量 cc(0) = 1000 定义圆心坐标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) 画圆v Next i End Sub cc(1) y坐标 cc(1)内存储y的坐标值1000 例题 2 Sub c100() Dim cc(0 To 2) As Double 声明坐标变量 cc(0) = 1000 定义圆心坐标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) 画圆v Next i End Sub cc(2) z坐标 cc(2)内存储z的坐标值0 例题 2 Sub c100() Dim cc(0 To 2) As Double 声明坐标变量 cc(0) = 1000 定义圆心坐标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) 画圆v Next i End Sub 语法:For 变量 = 数值1 To 数值2 Step 数值3 For循环语句 i 变量 (变换范围:数值1到数值2) 数值3 数值1变化到数值2的步长 例题 2 Sub c100() Dim cc(0 To 2) As Double 声明坐标变量 cc(0) = 1000 定义圆心坐标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) 画圆v Next i End Sub Call调用其他程序或方法 ThisDrawing.ModelSpace当前CAD文档的模型 空间 AddCircle 画圆方法,需要两个参数:圆心和半径 CC()圆心坐标,i*10 圆的半径 这些圆的半径分别是 例题 2 10、110、210、310 Sub c100() Dim cc(0 To 2) As Double 声明坐标变量 cc(0) = 1000 定义圆心坐标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) 画圆v Next i End Sub Next与For语句配套 例题 2 Sub c100() Dim cc(0 To 2) As Double 声明坐标变量 cc(0) = 1000 定义圆心坐标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) 画圆v Next i End Sub 例题 2 坐标值的输入: 程序写入 手动输入 鼠标拾取 Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error Go To Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub 例题 3 Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error Go To Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub Sub和end sub标志程序的开始和结束 my1 宏的名称 Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error Go To Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub 定义 p1和 p2 存放坐标 variant Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error Go To Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub Utility 提示用户输入 Getpoint 输入点 格式:Getpoint(参考点,“提示信息”) Getpoint(p1,“请输入一个点p2”) 起点p1,终点p2跟随鼠标移动(不画实线) Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error Go To Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub Utility 提示用户输入 GetReal输入数值 格式:GetReal(“提示信息”) Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error Go To Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub P1(2)-数组中的第三个数存放位置 即z坐标值存放位置 Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error GoTo Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub On Error-出错陷井语句 GoTo跳转语句 Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error GoTo Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub Do循环开始标志 Loop循环结束标志 Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error GoTo Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub 将输入点赋给p2,从p1开始,橡皮线连着p2 Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error GoTo Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub 将输入的值赋给z Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error GoTo Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub 再将Z值放入数组中,p2有x、y、z三个坐标值 Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error GoTo Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub 当前CAD文档 . 模型空间 . 画线 Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error GoTo Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub 将第一条线的第二点作为第二条线第一点 Sub my1() Dim p1 As Variant 申明端点坐标 Dim p2 As Variant p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p1(2) = z 将Z坐标值赋予点坐标中 On Error GoTo Err_Control 出错陷井 Do 开始循环 p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标 z = ThisDrawing.Utility.GetReal(“Z坐标:“) 用户输入Z坐标值 p2(2) = z 将Z坐标值赋予点坐标中 Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线 p1 = p2 将第二点的端点保存为下一条直线的第一个端点坐标 Loop Err_Control: End Sub 出错后跳转到 Err_Control,执行之后的语句 基 本 变 换 透 视 变 换 平 移 变 换 全 比 例 变 换 a b c p d e f q h I j r l m n s 图形变换矩阵 Private Sub cmdscale_click() Dim Transmatrix(0 To 3, 0 To 3) As Double Dim indexl As Integer, index2 As Integer For index1 = 0 To 3 For index2 = 0 To 3 Transmatrix(index1, index2) = 0 Next Next Transmatrix(0, 0) = CDbl(Txtscalefactor) Transmatrix(1, 1) = CDbl(Txtscalefactor) Transmatrix(2, 2) = CDbl(Txtscalefactor) Transmatrix(3, 3) = 1 With ThisDrawing.ModelSpace .Item(.Count - 1).TransformBy (Transmatrix) .Item(.Count - 1).color = acRed .Item(.Count - 1).Update End With Unload Me End Sub 定义矩阵 并初始化 矩阵赋值 图形转换 修改颜色 更新 Dim Transmatrix(0 To 3, 0 To 3) As Double Dim index1 As Integer, index2 As Integer For index1 = 0 To 3 For index2 = 0 To 3 Transmatrix(index1, index2) = 0 Next Next Dim Transmatrix(0 To 3, 0 To 3) As Double Dim indexl As Integer, index2 As Integer For index1 = 0 To 3 For index2 = 0 To 3 Transmatrix(index1, index2) = 0 Next Next 定义 Transmatrix:4*4矩阵 数据类型:Double Dim Transmatrix(0 To 3, 0 To 3) As Double Dim index1 As Integer, index2 As Integer For index1 = 0 To 3 For index2 = 0 To 3 Transmatrix(index1, index2) = 0 Next Next 定义 index1:行数 index2:列数 数据类型:Integer Dim Transmatrix(0 To 3, 0 To 3) As Double Dim index1 As Integer, index2 As Integer For index1 = 0 To 3 For index2 = 0 To 3 Transmatrix(index1, index2) = 0 Next Next 内层循环:第一行为零 Dim Transmatrix(0 To 3, 0 To 3) As Double Dim index1 As Integer, index2 As Integer For index1 = 0 To 3 For index2 = 0 To 3 Transmatrix(index1, index2) = 0 Next Next 外层循环:行列都置零 Transmatrix(0, 0) = CDbl(Txtscalefactor) Transmatrix(1, 1) = CDbl(Txtscalefactor) Transmatrix(2, 2) = CDbl(Txtscalefactor) Transmatrix(3, 3) = 1 Transmatrix(0, 0) = CDbl(Txtscalefactor) Transmatrix(1, 1) = CDbl(Txtscalefactor) Transmatrix(2, 2) = CDbl(Txtscalefactor) Transmatrix(3, 3) = 1 将文本框内的值赋给矩阵(0,0)位置 Transmatrix(0, 0) = CDbl(Txtscalefactor) Transmatrix(1, 1) = CDbl(Txtscalefactor) Transmatrix(2, 2) = CDbl(Txtscalefactor) Transmatrix(3, 3) = 1 将文本框内的值赋给矩阵(1,1)位置 Transmatrix(0, 0) = CDbl(Txtscalefactor) Transmatrix(1, 1) = CDbl(Txtscalefactor) Transmatrix(2, 2) = CDbl(Txtscalefactor) Transmatrix(3, 3) = 1 将文本框内的值赋给矩阵(2,2)位置 Transmatrix(0, 0) = CDbl(Txtscalefactor) Transmatrix(1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出兑摊位合同范本
- 别墅设计合同范例
- 个人门窗施工合同范本
- 乡村空房转让合同范本
- 第7课《敬业与乐业》教学设计 2024-2025学年统编版语文九年级上册
- 加盟金额写入合同范例
- 保本合同范本
- 切割加工项目合同范本
- 企业赞助活动合同范本
- 交技术合同范本
- 人力资源外包合同范本
- 成人重症患者颅内压增高防控护理专家共识2024
- 110KV送出线路工程施工组织设计方案和对策
- 城市交通系统中的空间正义问题-深度研究
- 物品消毒知识培训课件
- 2024年03月江苏2024年中国工商银行苏州分行社会招考笔试历年参考题库附带答案详解
- 2025年北师大新版高二物理上册阶段测试试卷
- 北师大版数学三下集体备课计划
- 儿童家长非免疫规划疫苗犹豫量表的编制及信效度检验
- 咖啡店饮品配方保密协议
- 《餐饮服务礼貌用语》课件
评论
0/150
提交评论