LISP_pasanen.pdf
2022-04-08 14:05:36 11.97MB lisp 开发语言
这个算法很好,希望大家给予评价,指出需要改进之处!
1
CAD LISP 施工、规划设计点位的编号注记
2022-04-06 02:41:00 10KB lisp 开发语言 autocad 小程序
1
实现AutoCAD图纸快捷打印(房地一体,削坡建房,林权发改等项目) 1 AutoCAD;lisp; 2 在整饰大量CAD图纸,需要输出PDF、JPG等格式时,需要打印,但是每次都要点击打印页面并且设置参数,费事费力。 3 程序使用时需要在CAD命令栏中,输入Appload( 或 AP),在启动组>>内容>>加载Q-PLOT.LSP;可以自行设置输出类型,打印机,打印区域,比例尺等plot参数。 4 使用时快捷打印代码:QQ,Q1,Q2,Q3,Q4(不同数字代表不同比例尺,1:100~1:400)... 5 代码实现过程思路,通过居中获取中心坐标,再根据图框大小,确定左下右上打印范围。调用CAD common函数中“-plot”函数;打印图纸将自动保存至DWG文件目录下,也可以自行更改代码另存。为了节省另存时间,默认原目录。
2022-04-06 02:40:59 4KB lisp autocad lsp 国土
1
1.Common Lisp the Language 2nd Edition 2.Editor Guide 3.LispWorks for User Guide 4.Quick reference for Common Lisp
2022-04-06 00:08:06 8.21MB Lisp
1
源代码
2022-03-27 17:46:30 1KB LISP 批量 删除 图层
1
提供了基础的lisp &dlc开发帮助文件
2022-03-27 08:09:10 351KB lisp dcl
1
CAD lisp 文字对齐程序.CAD lisp 文字对齐程序.CAD lisp 文字对齐程序.
2022-03-24 18:48:27 2KB CAD lisp 文字对齐程序.
1
本书是讨论基于Visual LISP for AutoCAD2000/2000i/2002的程序设计技术,帮助专业设计用户进行专业辅助设计程序的制作和使用,达到精通VisualLISP程序设计,使AutoCAD真正成为自己的专业设计软件的目的。 本书详细讨论了VisualLISP程序设计的基本方法和应用技巧,并提供了大量的专题应用范例,侧重于专业应用的方法、实际应用中的难点和解决方案的讨论,还补充和修正了VisualLISP在线帮助中的若干问题。本书既可以作为高等院校的有关教材、高级应用培训教材,也适合作为专业程序设计用户的参考用书。本书按照由浅入深、循序渐进的原则编写。力争做到初学者能够看懂,程序设计的老手也能得到启发,真正成为工程师自学程序设计的好朋友。 第1章 Visual LISP概况 1.1 启动Visual LISP 1.2 Visual LISP界面概述 1.2.1 菜单区 1.2.2 工具栏区 1.2.3 控制台窗口 1.2.4 状态栏 1.2.5 跟踪窗口 1.2.6 文本编辑器 1.2.7 Visual LISP的其他窗口 1.3 加载和运行AutoLISP程序 1.3.1 打开一个AutoLISP程序 1.3.2 加载并运行程序片断 1.3.3 加载并运行整个程序 1.4 使用扩展的AutoLISP函数 1.5 关闭Visual LISP 第2章 使用Visual LISP文本编辑器 2.1 文本编辑器概要 2.2 文本编辑器快捷菜单 2.3 文本编辑器的快捷键 2.3.1 修改文本 2.3.2 选定文本 2.3.3 浏览 2.3.4 格式化 2.3.5 移动和复制 2.4 查找、替换与书签 2.4.1 查找和替换 2.4.2 书签 2.5 语法结构分色和匹配 2.5.1 语法分色 2.5.2 匹配 2.5.3 使用自动匹配搜寻结果 2.5.4 按历史匹配 2.5.5 按系统匹配 2.6 程序代码格式化 2.6.1 Visual LISP程序格式样式 2.6.2 Visual LISP的注释 2.7 语法检查 2.7.1 检查括号匹配 2.7.2 用语法分色检查拼写错误 2.7.3 使用检查命令检查其他语法错误 第3章 调试程序 3.1 Visual LISP的调试器功能 3.2 调试器使用方法 3.2.1 调试准备 3.2.2 试验跟踪和分步调试过程 3.2.3 试验动态跟踪调试 3.3 使用Visual LISP调试功能 3.3.1 调试功能概况 3.3.2 VLISP中程序中断的基本概念 3.3.3 关于可继续中断循环 3.3.4 关于进入可继续中断循环后的调试方法 3.3.5 关于不可继续中断循环 3.3.6 断点操作 3.4 数据检验工具 3.4.1 打开和关闭日志文件 3.4.2 使用监视窗口 3.4.3 使用跟踪堆栈窗口 3.4.4 使用符号服务对话框 3.4.5 使用检验窗口 3.5 访问AutoCAD图形对象 第4章 AutoLISP程序设计 4.1 AutoLISP程序设计初步 4.1.1 AutoLISP比较容易学会和使用 4.1.2 AutoLISP适于给专业用户作开发工具 4.1.3 AutoLISP程序语法特点 4.1.4 AutoLISP程序与AutoCAD应用开发 4.2 编写AutoLISP专业用户功能的一般过程 4.2.1 专业应用程序设计的一般过程 4.2.2 专业应用程序设计的质量要求 4.2.3 专业应用程序设计的辅助手段 4.3 在命令行使用AutoLISP表达式 4.3.1 建立和引用AutoLISP变量响应命令提示 4.3.2 用AutoLISP表达式响应命令提示 4.4 在其他定制文件中使用Visual LISP表达式 4.4.1 在脚本文件中使用表达式 4.4.2 在菜单文件中使用表达式 4.4.3 AutoCAD.LSP、*.MNL和AutoCADDOC.LSP 4.4.4 将AutoLISP表达式放在某个图形对象中 4.5 给AutoCAD添加用户命令 4.5.1 用户自定义函数之一 4.5.2 (Command)(VL-CmdF)函数 4.5.3 在程序中引用AutoCAD命令时的注意事项 4.5.4 实例I 4.5.5 实例II 4.5.6 怎样描述关于点位的响应 4.5.7 简单响应“选择对象”的提示 4.5.8 向AutoCAD注册用户命令 4.5.9 重新定义AutoCAD原有命令 4.5.10 怎样描述关于长度数据输入的程序段 4.5.11 程序中数据的表达 4.5.12 数据与字串的转换问题 4.6 怎样在AutoLISP程序中组织和使用对象选择集 4.6.1 选择集过滤器的使用实例 4.6.2 在程序中对象选择集组建和对象的响应 4.7 给AutoLISP添加用户函数 4.7.1 Defun函数的再认识 4.7.2 形式参数和实际参数 4.7.3 自定义函数的必要性 4.7.4 制造自定义函数的返回值 4.7.5 自定义函数的变量表写法 4.8 Visual LISP程序可能的运行模式 4.9 在程序中使用DCL作界面 4.9.1 概论 4.9.2 DCL 程序的语法 4.9.3 对话框的使用 4.9.4 察看对话框 4.9.5 制作第一个DCL 4.9.6 使用图像控件 4.9.7 DCL支持程序 4.9.8 DCL的检验和出错处理 4.9.9 DCL程序的简单控制和使用 4.9.10 用DCL查设计参数表和默认值控制 4.9.11 图像按钮的控制和使用 4.9.12 DCL结束的控制方法 4.9.13 自定义图像按钮集 4.9.14 列表盒与用户对有限参数的选择输入 4.9.15 列表盒内容设置的几个技术要点 4.9.16 不确定值的输入问题 4.9.17 关于DCL的自我动作描述问题 4.10 对象数据库的访问与数据使用 4.10.1 传统的数据库访问方法 4.10.2 找到要分析对象的图元名的方法 4.10.3 多段线对象数据的使用 4.10.4 用ActiveX数据结构访问数据库 4.10.5 CAGD在专业设计程序中的应用 第5章 AutoLISP应用程序设计技巧集锦 5.1 理解和正确使用AutoLISP 的条件函数 5.2 正确理解和使用AutoCAD的数据库 5.3 对象描述双元表及其使用 5.4 利用绘图时建立的条件进行尺寸标注 5.5 永久型选择集和(HandEnt)函数 5.6 在AutoLISP中定义和使用多维数组 5.7 使用外部参数文件 5.7.1 其他应用程序生成的参数文件 5.7.2 AutoLISP程序专用的外部数据文件 5.7.3 读入外挂数据文件的结束处理 5.7.4 外挂数据文件与VLX程序包编译 5.8 设计手册查找的自动化 5.9 建立和使用非图形数据 5.9.1 属性格式的非图形数据结构 5.9.2 扩展的对象数据库 5.9.3 词典中的非图形数据 5.9.4 图形词典 5.10 自定义出错处理 5.10.1 设置公用的自定义出错处理功能 5.10.2 在自定义函数中,函数实参的检验和出错退出功能 5.10.3 在函数的定义中处理出错 5.11 参数化的、柔性的图形库 5.12 在Get族函数中使用关键词 5.13 怎样编写设计过程模拟程序 5.14 正确使用AutoCAD的系统变量 5.15 在程序中使用Fillet功能 5.16 怎样在一个程序中处理多个图形文件 5.17 根据图文件自动加载应用程序 5.18 自定义工具栏图标丢失问题 5.19 Read函数的灵活使用 5.20 Eval函数的用法 5.21 Set函数的用法 5.22 SsGet函数的用法 5.23 从另外一个图形数据库中获取对象信息 5.24 Boundarygon功能在程序中引用时的问题 5.25 LWPolyLine在程序中处理的问题和性能评价 5.26 沿圆或弧写字 5.27 在程序中控制文本字行的格式 5.28 AutoCAD 2000之后的VLISP中,输入对话框的控制问题 5.29 VLISP程序中DOS功能的引用 5.30 已有块的更新处理问题 5.31 *.MNL程序设计概要 5.32 =/Eq/Equal函数的区别 5.33 Not/Null/BoubdP函数的区别 5.34 曲线的任意点坐标的探测和曲线的转换 5.35 外部参照修剪的特殊用法和功能修补 5.36 在程序中字体高度设置问题 5.37 程序间公用数据的处理方法 5.38 图线遮挡的产生方法 5.39 组(Group)的数据分析 5.40 点选轮廓中间点得到轮廓索引名 第6章 工程——应用程序集的管理和编译 6.1 管理多个程序文件 6.1.1 Visual LISP的工程 6.1.2 工程中涉及到的文件类型 6.2 使用Visual LISP工程 6.2.1 创建一个新的工程 6.2.2 确定工程中 AutoLISP 源程序 6.2.3 调入文件的次序 6.2.4 选择编译器选项 6.3 工程文件的操作 6.3.1 在工程中查找源文件中的内容 6.3.2 将工程放在应用程序包中 第7章 应用程序包的编译 7.1 程序包的编译和链接 7.1.1 VLISP的编译器 7.1.2 用(VLisp-Compile)函数编译程序 7.1.3 加载和运行已编译程序 7.1.4 编译后的函数调用问题 7.2 制作应用程序包 7.2.1 生成一个新的应用程序包 7.2.2 应用程序包的更新和修改 7.3 关于多图档下的程序设计与编译 7.3.1 变量空间 7.3.2 使函数在全部图档中有效 7.3.3 应用程序的独立变量空间 7.3.4 使具有独立变量空间的非C:函数对外部引用有效 7.3.5 在其他VLX程序中引用独立变量空间的函数 7.3.6 在独立变量空间的VLX中使用图档变量空间中的变量 7.3.7 使图档变量空间中的变量在所有图档中都有效 7.3.8 在各个变量空间之间进行数据共享 7.3.9 在多图档环境中的自定义错误处理 第8章 ActiveX的使用 8.1 ActiveX对象概论 8.2 AutoCAD的对象模型构架 8.2.1 对象的属性 8.2.2 对象的方法 8.3 ActiveX对象访问概论 8.3.1 访问应用程序对象 8.3.2 生成和访问图形对象 8.4 使用ActiveX方法的VLISP函数 8.4.1 查找所需要的函数 8.4.2 确定函数的参数 8.4.3 将数据转换为ActiveX类型 8.4.4 使用变体类型数据 8.4.5 使用安全数组 8.4.6 转换其他AutoLISP数据类型,为ActiveX方法准备数据 8.4.7 实例分析 8.4.8 确定方法或属性是否适用于某对象 8.4.9 使用集合(Collections)对象 8.4.10 释放对象和空出内存 8.4.11 转换对象的引用 8.4.12 ActiveX方法出错的处理 8.5 ActiveX与其他应用程序的交互 8.5.1 引入一个类型库 8.5.2 与应用程序建立联系 8.5.3 应用程序实例 8.5.4 不引入类型库使用 ActiveX 方法 8.5.5 访问和更新图形对象属性 8.5.6 使用参数带回返回值的 ActiveX 方法 8.6 ActiveX应用评价和定位 第9章 反应器的使用 9.1 反应器 9.1.1 反应器类型 9.1.2 反应器的回调事件 9.1.3 反应器的回调函数 9.2 生成反应器 9.2.1 生成对象反应器 9.2.2 给反应器添加应用数据 9.2.3 在多图档中使用反应器 9.2.4 查询、修改和删除反应器 9.3 临时或永久的反应器 9.4 对象反应器支持程序的自动加载 9.5 反应器应用注意事项 第10章 Visual LISP函数详解 10.1 AutoLISP数据类型 10.2 AutoLISP基本函数 10.2.1 应用程序管理函数 10.2.2 数学计算函数 10.2.3 等式和条件函数 10.2.4 出错处理函数 10.2.5 函数处理函数 10.2.6 表操作函数 10.2.7 字串处理函数 10.2.8 符号操作函数 10.3 AutoLISP实用函数 10.3.1 转换函数 10.3.2 设备访问函数 10.3.3 显示控制函数 10.3.4 文件操作函数 10.3.5 几何函数 10.3.6 命令与查询函数 10.3.7 用户输入函数 10.4 AutoLISP选择集和符号表函数 10.4.1 扩展的数据库操作函数 10.4.2 对象操作函数 10.4.3 选择集操作函数 10.4.4 符号表操作函数 10.5 AutoLISP内存管理函数 10.6 Visual LISP的扩展函数 10.6.1 ActiveX集合操作函数 10.6.2 ActiveX数据转换函数 10.6.3 ActiveX方法调用函数 10.6.4 ActiveX对象处理函数 10.6.5 ActiveX属性处理函数 10.6.6 应用程序对象处理函数 10.6.7 Visual LISP反应器函数 10.6.8 VLX变量空间函数 10.6.9 VLX变量空间通信函数 10.6.10 系统注册表函数 10.7 DCL操作函数 10.7.1 对话框打开与关闭控制函数 10.7.2 控件和属性操作函数 10.7.3 列表类控件操作函数 10.7.4 图像控件操作函数 10.8 DCL预定义控件 10.8.1 DCL控件的预定义属性 10.8.2 DCL控件的自定义属性 10.8.3 DCL的预定义动作控件 10.8.4 DCL的预定义控件簇 10.8.5 DCL的预定义修饰和提示性控件 10.8.6 DCL的预定对话框结束和出错处理控件 10.9 AutoLISP程序分析器 10.9.1 用分析器分析程序的操作过程 10.9.2 程序分析 10.9.3 主对话框中的有关功能 10.9.4 “选项”对话框中的有关功能 10.9.5 一些说明 10.9.6 程序分析规则文件 第11章 用户化和系统定制 11.1 概论 11.2 AutoCAD 2002运行参数设置 11.2.1 “文件”选项卡的设置 11.2.2 “打开和保存”选项卡下的设置 11.2.3 AutoCAD启动条件的设置 11.3 操作系统参数设置和日常维护 11.4 几个操作系统的比较 11.5 线型库的定义与使用 11.5.1 在命令行生成线形库 11.5.2 直接编辑、生成带有文字片段的线形库文件 11.5.3 直接编辑生成带有形定义的线性库文件 11.6 多线样式库的定义与使用 11.6.1 多线样式命令 11.6.2 在命令交互中生成用户多线样式 11.6.3 多线样式库文件 11.7 AutoCAD.PGP文件的用户化 11.7.1 加入DOS命令 11.7.2 加入Windows命令的方法 11.7.3 定义常用命令的缩写 11.8 脚本文件设计与使用 11.9 形定义生成与字体文件 11.9.1 Shape的特点 11.9.2 形定义的生成 11.9.3 大字库字体文件格式介绍 11.10 自定义填充图案库 11.10.1 填充图案库文件的格式 11.10.2 生成自定义填充图案库 11.10.3 使用自定义填充图案库 11.10.4 特殊填充图案的处理 11.11 自定义符号库 11.12 实时助手的运行条件设置 11.13 几个限制 11.14 菜单定制于应用 11.14.1 菜单文件的加载和组合 11.14.2 单文件的基本构成 11.14.3 单项的基本语法 11.14.4 下拉菜单段(pull-down menus) 11.14.5 光标菜单(cursor menu) 11.14.6 关联菜单(following shortcut menu) 11.14.7 菜单组名段 11.14.8 按钮和辅助菜单段 11.14.9 工具栏段 11.14.10 图像控件菜单段 11.14.11 菜单的帮助 11.14.12 加速键设置菜单段 第12章 AutoCAD 2002新增功能和函数 12.1 关联标注 12.2 文字处理新功能 12.3 图形标准的设置与使用 12.4 属性处理新功能 12.5 新的Visual LISP函数 第13章 因特网上的问与答 13.1 议论 13.2 命令使用 13.3 程序设计 第14章 DXF组码参考 14.1 DXF基本概念 14.2 DXF通用组码 14.3 TABLET(符号表)中的DXF组码 14.4 BLOCKS(块定义表)中的DXF组码 14.5 ENTITIES(图形实体表)中的DXF组码 14.6 OBJECTS(命名对象表)中的DXF组码
2022-03-23 23:29:12 17.83MB LISP 技巧 范例
1
超级详细 (defun *error*(st) (if (and (/= st "Function cancelled") (/= st "quit / exit abort") ) (princ (strcat "错误: " st)) ) (setq *error* old_err) (princ) ) (defun sort (l / lt ltem vmax vmin l1 l2 l3 lt0 ltem0 ltem1 l30 vmax0 vmin0 l10 l20) (setq ltem (mapcar 'car l) ;ltem : 取出l的第一项形成的表 vmin (1- (apply 'min ltem)) ;vmin : 是一个比ltem中最小的数还小的数 ) (while (< vmin (setq vmax (apply 'max ltem))) ;从ltem中取出最大值 (setq l1 l l3 nil ltem (subst vmin vmax ltem)) ;去掉最大值 (while (setq l2 (assoc vmax l1)) ;取出最大值所对应的项 (setq l1 (cdr (member l2 l1))) ;处理相同的值 (setq l3 (cons l2 l3)) ) (progn (setq ltem0 (mapcar 'cadr l3) ltem1 (mapcar 'car l3) l30 (mapcar 'cdr l3) vmin0 (1- (apply 'min ltem0)) ) (while ( (car bp) (car sp)) ; (setq tem bp bp sp sp tem) ; ) (setq ss nil) (if (setq ss (ssget "c" bp sp)) (progn (setq n 0) (repeat (sslength ss) (setq el (entget (ssname ss n))) (if (and (= (dxf 0 el) "LINE") (or (= (dxf 8 el) "WALL") (= (dxf 8 el) "AXIS")) (setq ip (inters bp sp (dxf 10 el) (dxf 11 el))) ) ; ip 交点 (progn (setq lpt (cons ip lpt)) ) ) (setq n (1+ n)) ) ; repeat 找出所有的交点并形成表lpt (if (/= nil lpt) (setq lpt (sort lpt))) ) ) (setq pt0 '(0 0 0)) ;以下9行去掉相同的数据 (foreach pt lpt (if (= ang pi) (setq ang (- ang pi))) (setq di (distance bp (inters bp (polar bp (+ ang (* pi 0.5)) 100) (dxf 10 el) (dxf 11 el) nil))) (setq di (- di 700)) (setq pt1 (polar (car lpt) (+ ang (* pi 0.5)) di)) (command "line" (polar pt1 (+ ang (* pi 1.5)) 700) (polar pt1 (+ ang (* pi 0.5)) 300) "") (command "pline" (polar pt1 (+ ang (* pi 1.25)) 70.7) "w" "50" "50" (polar pt1 (+ ang (* pi 0.25)) 70.7) "") (foreach pt (cdr lpt) (setq pt (polar pt (+ ang (* pi 0.5)) di)) (command "line" (polar pt (+ ang (* pi 1.5)) 700) (polar pt (+ ang (* pi 0.5)) 300) "") (command "pline" (polar pt (+ ang (* pi 1.25)) 70.7) "w" "50" "50" (polar pt (+ ang (* pi 0.25)) 70.7) "") (command "line" pt1 pt "") (setq txt (rtos (setq dis (distance pt1 pt)) 2 0)) (setq len (sqrt (+ (* 115 115) (* (/ dis 2.0) (/ dis 2.0))))) (setq ang1 (atan (/ 115 (/ dis 2.0)))) (command "text" "c" (polar pt1 (+ ang ang1) len) "300" (* (/ ang pi) 180) txt) (setq pt1 pt) ) ) ;;;============================================== ;;; main programm ;;;============================================== (defun C:3dimzs(/ bp sp) (setq old_err *error*) (setvar "CMDECHO" 0) (setvar "BLIPMODE" 0) (command "layer" "m" "dim" "c" "g" "dim" "") (setq bp (getpoint "\n第一点(一般为外墙线上两点): ")) (if (= nil bp) (quit)) (setq sp (getpoint bp "\n第二点: ")) (if (= nil sp) (quit)) (pross bp sp) (princ) )
2022-03-22 17:31:01 611KB CAD
1