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

news2024/9/25 9:41:13

目录

  • 一、选择集
    • 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.coloradmin.cn/o/1415099.html

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

相关文章

ubuntu 20.04 更新 autoconf 版本

前言 由于最近打算交叉编译 python&#xff0c;依赖 libffi 库&#xff0c;而交叉编译 libffi 库&#xff0c;由于使用的是 github 上的 libffi&#xff0c;又提示 autoconf 版本太低了&#xff0c;所以&#xff0c;先更新 autoconf 的版本 当前 ubuntu 20.04 上安装的 autuco…

【数据分享】2015年泛第三极65国1km分辨率土壤侵蚀强度数据集(免费获取)

土壤数据是在环境、农业、生态等相关研究中都非常常用的数据&#xff01;我们之前发表过一篇介绍土壤数据来源的文章&#xff08;可查看之前推送的文章获悉详情&#xff09;&#xff01; 土壤侵蚀强度是土壤的重要属性&#xff01;本次我们给大家带来的是2015年泛第三极65国1k…

《合成孔径雷达成像算法与实现》Figure5.19

clc clear close all距离向参数 R_eta_c 20e3; % 景中心斜距 Tr 25e-6; % 发射脉冲时宽 Kr 0.25e12; % 距离向调频率 Fr 7.5e6; % 距离向采样率 Nrg 256; % 距离线采样点数 Bw abs(Kr*Tr); …

8.15合并区间(LC56)

算法&#xff1a; 和452. 用最少数量的箭引爆气球 (opens new window)和 435. 无重叠区间 (opens new window)都是一个套路。 这几道题都是判断区间重叠&#xff0c;区别就是判断区间重叠后的逻辑&#xff0c;本题是判断区间重贴后要进行区间合并。 步骤&#xff1a; 先排序…

自动化脚本不稳定,原来是软件弹窗惹的祸,2个方法解决!

很多同学在学习 App 自动化或者在项目中落地实践 App 自动化时&#xff0c;会发现编写的自动化脚本无缘无故的执行失败、不稳定。 而导致其问题很大原因是因为应用的各种弹窗&#xff08;升级弹窗、使用过程提示弹窗、评价弹窗等等&#xff09;&#xff0c;比如这样的&#xff…

nodejs下载 安装 配置环境

目录 1.下载 2、配置环境 1.下载 下载地址&#xff1a;https://nodejs.org/en/download/ 下载完成后&#xff0c;双击安装包&#xff0c;开始安装&#xff0c;一直点next即可。我把安装路径设置为 D:\Program Files\nodejs\ 安装完之后打开终端 windowR cmd 回车&#xff1…

C++:组合、继承与多态

面向对象设计的重要目的之一就是代码重用&#xff0c;这也是C的重要特性之一。代码重用鼓励人们使用已有的&#xff0c;得到认可并经过测试的高质量代码。多态允许以常规方式书写代码来访问多种现有的且已专门化了的相关类。继承和多态是面向对象程序设计方法的两个最主要的特性…

fix bug: FileNotFoundError: [Errno 2] No such file or directory: ‘nvcc‘

1.问题描述 运行的代码设计pycuda,会调用nvcc&#xff0c;确定已经安装cuda toolkit&#xff0c;在terminal中云运行 nvcc -V 能得到想到的结果&#xff1a; 但是在 pycharm中运行代码时提示&#xff1a; FileNotFoundError: [Errno 2] No such file or directory: nvcc 2.…

细数语音识别中的几个former

随着Transformer在人工智能领域掀起了一轮技术革命&#xff0c;越来越多的领域开始使用基于Transformer的网络结构。目前在语音识别领域中&#xff0c;Tranformer已经取代了传统ASR建模方式。近几年关于ASR的研究工作很多都是基于Transformer的改进&#xff0c;本文将介绍其中应…

拦截器的简单使用

拦截器的简单使用 拦截器的使用创建拦截器preHandle 目标方法执行前执行postHandle 目标方法执行后执行afterCompletion 视图渲染后执行 拦截器使用场景返回值注册拦截器运用拦截器 拦截器的使用 创建拦截器 首先,我们需要创建一个拦截器器的类,并且需要继承自HandlerIntercep…

java分布式锁(详解)

本地锁 浏览器把100w请求由网关随机往下传&#xff0c;在集群情况下&#xff0c;每台服务都放行10w请求过来&#xff0c;这时候每台服务都用的是本地锁是跨JVM的&#xff0c; 列如这些服务都没有49企业&#xff0c;此时有几个服务进行回原了打击在DB上面&#xff0c;那后期把这…

一种基于YOLOV5框架的新型轻量级雾天行人车辆实时检测算法(XM-YOLOViT)

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;提出了一种基于YOLOV5框架的新型XM-YOLOViT雾天行人车辆实时检测算法&#xff0c;有效解决了密集目标干扰和雾霾遮挡问题&#xff0c;提高了复杂雾天环境下的检测效果。 1.XM-YOLOViT原理介绍 XM-YOLOViT框架图 摘…

04.领域驱动设计:了解聚合和聚合根,怎样设计聚合-学习总结

目录 1、概述 2、聚合 3、聚合根 4、怎么设计聚合 4.1 聚合的构建过程主要步骤 第 1 步&#xff1a;采用事件风暴。 第 2 步&#xff1a;选出聚合根。 第 3 步&#xff1a;找出与聚合根关联的所有紧密依赖的实体和值对象。 第 4 步&#xff1a;画出对象的引用和依赖模型…

数据结构·双向链表

1. 双向链表的结构 我们之前提到过&#xff0c;双向链表的全称是&#xff1a;带头双向循环链表。带头就是相当于一个“哨兵位”&#xff0c;用来标记链表的开始&#xff0c;它存储的数据是无效的&#xff0c;但是它将存储有效的前驱节点和后继节点的地址&#xff0c;带头链表的…

【Linux】进程通信——管道

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 目录 &#x1f4cb;进程通信的目的&#x1f4cb;管道匿名管道pipe函数创…

【DeepLearning-9】YOLOv5模型网络结构中加入MobileViT模块

一、神经网络的前中后期 在神经网络中&#xff0c;特别是在深度卷积神经网络&#xff08;CNN&#xff09;中&#xff0c;“网络早期&#xff08;低层&#xff09;”、“网络中期&#xff08;中层&#xff09;”和“网络后期&#xff08;高层&#xff09;”通常指的是网络结构中…

sqli-labs靶场(1-6关)

1、第一关 测试id1 id1加一个引号报错&#xff0c;两个引号正常&#xff0c;应该是字符&#xff0c;还有回显 猜测字段长度 id1 order by 3 -- id1 order by 4 -- 字段长度为三&#xff0c;接下来确定位置&#xff1a;id1 and 12 union select 1,2,3 -- 查出库名,及版本号id1 …

用C语言实现贪吃蛇游戏!!!(破万字)

前言 大家好呀&#xff0c;我是Humble&#xff0c;不知不觉在CSND分享自己学过的C语言知识已经有三个多月了&#xff0c;从开始的C语言常见语法概念说到C语言的数据结构今天用C语言实现贪吃蛇已经有30余篇博客的内容&#xff0c;也希望这些内容可以帮助到各位正在阅读的小伙伴…

深度学习(6)--Keras项目详解

目录 一.项目介绍 二.项目流程详解 2.1.导入所需要的工具包 2.2.输入参数 2.3.获取图像路径并遍历读取数据 2.4.数据集的切分和标签转换 2.5.网络模型构建 2.6.绘制结果曲线并将结果保存到本地 三.完整代码 四.首次运行结果 五.学习率对结果的影响 六.Dropout操作…

N-141基于springboot,vue网上拍卖平台

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;项目采用前后端分离 前端技术&#xff1a;vueelementUI 服务端技术&#xff1a;springbootmybatis-plusredi…