CAD-autolisp(二)——选择集、命令行设置对话框、符号表

目录

  • 一、选择集
    • 1.1 选择集的创建
    • 1.2 选择集的编辑
    • 1.3 操作选择集
  • 二、命令行设置对话框
    • 2.1 设置图层
    • 2.2 加载线型
    • 2.3 设置字体样式
    • 2.4 设置标注样式(了解即可)
  • 三、符号表
    • 3.1 简介
    • 3.2 符号表查找
    • 3.2 符号表删改增

一、选择集

  • 定义:批量选择出目标图元,ssget函数,结果是个图元的集合,多次加入相同元素,集合不变,多次删除相同元素,集合只执行第一次

1.1 选择集的创建

  • ssget函数三种选择模式:
    • C(crossing):等同鼠标点选右下角向左上角划区域
    • W(window):等同鼠标点选左上角向右下角划区域
    • F(fence):与点表所确定的折线相交的所有对象

    检验选择集包含的图元数:(sslength 选择集变量名),变量名如下代码的ss1等

  • 代码示例
    ;基础使用:过滤并将框选的所有图元创建成一个选择集
    (setq ss1 (ssget "c" '(100 0) '(0 100)))
    (setq ss2 (ssget "w" '(0 100) '(100 0)))
    (setq ss3 (ssget "f" (list '(100 0) '(0 100) '(100 100))))
    ;全图过滤出指定图元
    ;过滤出并将全图中的圆创建成一个选择集ss4返回:<Selection set:164>
    (setq ss4 (ssget "x" (list (cons 0 "circle"))))
    ;多过滤条件
    (setq ss5 (ssget "x" (list (cons 0 "circle") (cons 410 "Model"))))
    ;带比较符过滤:全图过滤圆,且圆半径(组码40)不小于(组码-4)10.0
    (setq ss6 (ssget "x" (list (cons 0 "circle") (cons -4 ">=") (cons 40 10.0))))
    
  • 动态选择c或w模式
    ;屏幕上点选两个点,根据两个点的相对位置自动选择模式
    (setq p1 (getpoint))
    ;以p1为基点,拉虚线框
    (setq p2 (getcorner p1))
    (if (> (car p1) (car p2))(setq ss7 (ssget "c" p1 p2))(setq ss7 (ssget "w" p1 p2)))
    

1.2 选择集的编辑

  • 从选择集增删图元
    (setq ent1 (car(entsel)));创建一个空的选择集
    (setq ss1 (ssadd))
    ;将图元ent1增加到已有选择集ss1中,直接修改原ss1
    (ssadd ent1 ss1)	;最内侧括号创建一个只包含ent1的选择集,每次运行都创建一个新的
    (setq ss2 (ssadd ent1))	;从选择集删除一个图元,直接修改原ss2
    ;若图元ent1不存在于ss2中,返回nil
    ;若图元ent1存在于ss2中,返回ss2
    (ssdel ent1 ss2)
    
  • 判断图元在选择集中
    ;如果不存在,返回nil
    ;如果存在,返回ent1的图元名
    (ssmemb ent1 ss1)
    
  • 选择选择集中的某个图元
    ;选择选择集ss1第一个图元,常配合循环语句遍历选择集
    (setq ent1 (ssname ss1 0))
    
  • 选择集内总共多少个元素
    ;常在while中作为循环中止条件,内括号返回选择集的数目
    (setq length (sslength ss1))
    

1.3 操作选择集

  • 实现将框选中的圆放大十倍
    (defun c:demo1 ();实现框选确定选择集(print "请框选图元")(setq p1 (getpoint))(setq p2 (getcorner p1))(if (> (car p1) (car p2))(setq ss1 (ssget "c" p1 p2))(setq ss1 (ssget "w" p1 p2)));设置循环初始变量(setq n 0)(setq ss1_length (sslength ss1));循环遍历选择集中的每个元素,并修改(while (< n ss1_length);依序提取选择集中的某个图元(setq ent_name (ssname ss1 n))(setq ent_list (entget ent_name))(setq ent_type (cdr (assoc 0 ent_list)));只修改圆(if	(= ent_type "CIRCLE")(progn;提取圆,并修改圆半径(放大10倍)(setq old_r (assoc 40 ent_list))(setq new_r (cons 40 (* 10.0 (cdr old_r))))(setq new_ent_list (subst new_r old_r ent_list))(entmod new_ent_list)));循环跳出条件(setq n (+ 1 n)));函数最后返回值(print)
    )
    

二、命令行设置对话框

2.1 设置图层

  • 方式1:常规对话框编辑图层(命令行输入layer会调出)
    在这里插入图片描述

  • 方式2:命令行输入:-layer
    在这里插入图片描述

  • 方式3:lisp代码实现

    ;生成图层,并使此图层为当前图层,末尾“”模仿enter功能
    (command "layer" "m" "图层1" "")
    

2.2 加载线型

  • 方式1:常规线型对话框(命令行输入linetype会调出)
    在这里插入图片描述

  • 方式2:命令行输入:-linetype
    在这里插入图片描述

  • 方式3:lisp代码实现

    ;从acad.lin文件中加载线型dashed并修改当前活动图层线型(图层默认线型不变)
    (command "linetype" "l" "dashed" "acad.lin" "" "")
    

2.3 设置字体样式

  • 字体样式:指定了中英文字体文件、倾斜、长宽比,用于绘图中在文字和标注中指定
  • 字体:包含系统字体和cad字体,分别放置于C:\Windows\FontsC:\Program Files\Autodesk\AutoCAD 2020\Fonts文件夹下,安装插件如天正等,会在工具->选项->文件->支持文件搜索路径里包含,此处字体也会自动被搜索并加载
  • 方式1:常规对话框(命令行输入style会调出)
    在这里插入图片描述
  • 方式2:命令行输入:-style
    在这里插入图片描述
  • 方式3:lisp代码实现
    ;对应选项看方式2
    (command "style" "yangshi2" "tssdeng.shx,hztxt.shx" "" "" "" "" "" "")
    

2.4 设置标注样式(了解即可)

  • 方式1:常规对话框(命令行输入dimstyle会调出)
    在这里插入图片描述
    在这里插入图片描述
  • 方式2:命令行输入:-dimstyle
    命令:  -DIMSTYLE
    当前标注样式: STANDARD   注释性: 否
    输入标注样式选项
    [注释性(AN)/保存(S)/恢复(R)/状态(ST)/变量(V)/应用(A)/?] <恢复>: ST
    DIMASO      关                    创建标注对象
    DIMSTYLE    STANDARD             当前标注样式 (只读)
    DIMADEC     0                    角度小数位数
    DIMALT      关                    选定的换算单位
    DIMALTD     2                    换算单位小数位数
    DIMALTF     25                   换算单位比例因子
    DIMALTMZF   100                  公制标注的换算辅零因子
    ...
    

    标注样式修改:此处只能显示跟标注样式相关的系统变量,修改见方式3

  • 方式3:lisp代码实现
    ;系统变量的获取(获取标注文字的前后缀)
    (setq dimpost_old (getvar "dimpost"));系统变量的设置
    (setvar "dimpost" "前缀:<>:后缀")
    

    系统变量:cad中会有一大批固定的全局的系统变量名,通过以上方式获取与修改,针对某一个cad文件的所有元素生效

三、符号表

3.1 简介

  • 符号表:通常图元的属性联合列表不能表示图元的所有信息,符号表则会存储有共性的属性集合供图元调用
  • 九大符号表
    符号表名全称lisp缩写符号表名全称lisp缩写
    块表BlockTableblock线型表LinetypeTableltype
    尺寸标注样式表DimStyleTabledimstyle文字样式表TextStyleTablestyle
    层表LayerTablelayer视口表ViewportTablevport
    用户坐标系表UCSTableucs视图表ViewTableview
    应用程序注册表RegAppTableappid

3.2 符号表查找

  • 以层表为例
    ;查找层表首元素(t为查找第一个)
    (setq layer_1 (tblnext "layer" T))
    ;多次运行tblnext会顺序查找并返回每一个
    (setq layer_1 (tblnext "layer"))
    ;返回:((0 . "LAYER") (2 . "Defpoints") (70 . 0) (62 . 7) (6 . "Continuous"));图层名查找:查找名字为0的图层,不存在返回nil
    (setq layer_3 (tblsearch "layer" "0"))
    ;返回:((0 . "LAYER") (2 . "0") (70 . 0) (62 . 7) (6 . "Continuous"));图层的详细信息,并将返回值包装成图元
    (setq layer_4 (tblobjname "layer" "0"))
    ;返回:<图元名: 1eec337b900>
    (entget layer_4)
    ;返回:((-1 . <图元名: 1eec337b900>) (0 . "LAYER") (5 . "10") (102 . "{ACAD_XDICTIONARY") 
    ;(360 . <图元名: 1eea9fee240>) (102 . "}") (330 . <图元名: 1eec337b820>) 
    ;(100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "0") (70 . 0) 	
    ;(62 . 7) (6 . "Continuous") (290 . 1) (370 . -3) (390 . <图元名: 1eec337b8f0>) 
    ;(347 . <图元名: 1eec337bee0>) (348 . <图元名: 0>))
    

3.2 符号表删改增

  • 可以通过3.1节的layer_4编辑,编辑方式同第一章传送门5.3

返回目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/650610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【广度优先搜索】【拓扑排序】【C++算法】913. 猫和老鼠

作者推荐 【动态规划】【map】【C算法】1289. 下降路径最小和 II 本文涉及知识点 广度优先搜索 拓扑排序 逆推 LeetCode913. 猫和老鼠 两位玩家分别扮演猫和老鼠&#xff0c;在一张 无向 图上进行游戏&#xff0c;两人轮流行动。 图的形式是&#xff1a;graph[a] 是一个列…

List使用addAll()方法报错

当使用Arrays.asList方式创建出来的list&#xff0c;在使用addAll方法的时候报错如下&#xff1a; Exception in thread "main" java.lang.UnsupportedOperationException 这个问题记录下&#xff0c;以防以后忘记。 下面是代码 List<String> objects new A…

风口抓猪-借助亚马逊云科技EC2服务器即刻构建PalWorld(幻兽帕鲁)私服~~~持续更新中

Pocketpair出品的生存类游戏《幻兽帕鲁》最近非常火&#xff0c;最高在线人数已逼近200万。官方服务器亚历山大&#xff0c;游戏开发商也提供了搭建私人专用服务器的方案&#xff0c;既可以保证稳定的游戏体验&#xff0c;也可以和朋友一起联机游戏&#xff0c;而且还能自定义经…

LeetCode:1706. 球会落何处(Java 模拟)

目录 1706. 球会落何处 题目描述&#xff1a; 实现代码与解析&#xff1a; 原理思路&#xff1a; 1706. 球会落何处 题目描述&#xff1a; 用一个大小为 m x n 的二维网格 grid 表示一个箱子。你有 n 颗球。箱子的顶部和底部都是开着的。 箱子中的每个单元格都有一个对角线…

如何实现无公网IP实现远程访问MongoDB文件数据库

&#x1f4d1;前言 本文主要是如何实现无公网IP实现远程访问MongoDB文件数据库的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x…

移动Web——平面转换-平移

1、平面转换-平移 取值 像素单位数值百分比&#xff08;参照盒子自身尺寸计算结果&#xff09;正负均可 技巧 translate()只写一个值&#xff0c;表示沿着X轴移动单独设置X或Y轴移动距离&#xff1a;translateX()或translateY() <!DOCTYPE html> <html lang"en&q…

53-JS之BOM,打开,关闭窗口,screen对象,history对象,location对象,工作区尺寸,滚动距离

1.简介 BOM(Browser Object Model)---浏览器对象模型,提供JS当中对浏览器的各种操作对象 1.1BOM与DOM 2.打开窗口window.open(URL,name,features) 2.1 URL字符串:地址网址文件源 2.2name:指target属性,规定在哪个窗口打开新的url链接 blank:打开一个新窗口 _parent…

MVC架构模式与三层架构

提示&#xff1a;博客中的图片来源于动力节点在B站的视频讲解。 MVC架构模式与三层架构 一、三层架构二、MVC&#xff08;model view controller&#xff09;1.MVC 架构的工作流程&#xff08;1&#xff09;JSP Servlet javabean实现MVC。&#xff08;2&#xff09;SSM&#…

Linux——文本编辑器Vim

Linux中的所有内容以文件形式管理&#xff0c;在命令行下更改文件内容&#xff0c;常常会用到文本编辑器。我们首选的文本编辑器是Vim&#xff0c;它是一个基于文本界面的编辑工具&#xff0c;使用简单且功能强大&#xff0c;更重要的是&#xff0c;Vim是所有Linux发行版本的默…

详解静态网页数据获取以及浏览器数据和网络数据交互流程

目录 前言 一、静态网页数据 二、网址通讯流程 1.DNS查询 2.建立连接 3.发送HTTP请求 4.服务器处理请求 5.服务器响应 6.渲染页面 7.页面交互 三、URL/POST/GET 1.URL 2.GET 形式 3.POST 形式 四.获取静态网页数据 前言 在网站设计领域&#xff0c;基于纯HTM…

机房及设备安全智慧监管AI+视频方案的设计和应用

一、背景分析 随着互联网的迅猛发展&#xff0c;机房及其配套设施的数量持续攀升&#xff0c;它们的运行状况对于企业运营效率和服务质量的影响日益显著。作为企业信息化的基石&#xff0c;机房的安全监测与管理的重要性不容忽视。它不仅关乎企业的稳定运营&#xff0c;同时也…

希尔排序-排序算法

前言 希尔排序固然很好&#xff0c;但是某些情况下&#xff0c;有很多缺点。例如下面这种情况&#xff1a; 9 之前的元素都已经有序&#xff0c;只有元素 1 和 2 的位置不对&#xff0c;使用插入排序几乎要移动整个数组的元素&#xff0c;效率很低。 这时候希尔排序横空出世&…

黑群晖显示真实的CPU型号和自定义CPU型号

黑群晖显示真实的CPU型号和自定义CPU型号 修改脚本执行脚本自定义显示的CPU型号 脚本的仓库地址:✈ 修改脚本 我的CPU型号是N100&#xff0c;这里因为架构识别有问题&#xff0c;所有CPU的型号后面会带一个UnKnown&#xff0c;感觉很别扭&#xff0c;所有修改了下脚本 if […

AcWing 2. 01背包问题(DP思想)

[题目概述] 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 v i v_i vi​&#xff0c;价值是 w i w_i wi​。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 …

Vue组件之间的通信方式都有哪些

Vue组件之间的通信方式 组件间通信的概念组件间通信解决了什么组件间通信的分类 父子组件之间的通信兄弟组件之间的通信祖孙与后代组件之间的通信非关系组件间之间的通信 组件间通信的方案 props传递数据$emit 触发自定义事件refEventBusparent、rootattrs与listenersprovide …

Oracle分栏(非分页)查询

不知道Oracle怎么进行数据分栏(分栏: 因数据列过长, 部分数据作为新列显示). 在这里先记录一下粗浅的查询方法. 数据源例子: select 日用百货 as cat, 手电筒 as name, 20 as amount, 2024-01-27 as dt from dualunion allselect 餐饮美食 as cat, 鸡公煲 as name, 15.9 as amo…

SSEBop FEWS V6蒸散发ET年和月尺度数据分享

一、数据简介 SSEBOP FEWS V6是一个用于估算蒸散发&#xff08;evapotranspiration&#xff09;的模型或数据集。蒸散发是指地表和植物蒸发以及植物蒸腾的总和&#xff0c;是水循环中重要的组成部分。 SSEBOP FEWS V6是由美国地质调查局&#xff08;USGS&#xff09;开发的一…

Genome-wide association studies in R

全基因组关联&#xff08;GWA&#xff09;研究扫描整个物种基因组&#xff0c;寻找多达数百万个SNPs与特定感兴趣特征之间的关联。值得注意的是&#xff0c;感兴趣的性状实际上可以是归因于群体的任何类型的表型&#xff0c;无论是定性的&#xff08;例如疾病状态&#xff09;还…

支持IPv4与IPv6双协议栈的串口服务器,IPv6串口服务器

物联网是啥玩意儿&#xff1f;这是首先要搞明白的。按照百度百科的说法&#xff0c;是将各种信息传感设备&#xff0c;如射频识别&#xff08;RFID&#xff09;装置、红外感应器、全球定位系统、激光扫描器等种种装置与互联网结合起来而形成的一个巨大网络。这个说法有些复杂&a…

Java入门高频考查基础知识7-深入挖掘Java集合框架的奇幻世界2(39题2.8万字参考答案)

Java 集合是 Java 编程中至关重要的组成部分&#xff0c;它为开发者提供了丰富、灵活、高效的数据结构和算法。无论是初学者还是有经验的开发者&#xff0c;在使用 Java 进行编程时都会频繁地接触到集合框架。这篇文章将深入探讨 Java 集合的重要性&#xff0c;以及为什么它对于…