绘制靠近折线的线

2023-12-08

我有一个三角形作为折线,我想绘制一个高度。我发出命令"line" or "_line"正确的点,但 AutoCAD 绘制从顶点到相邻顶点的线。

不仅在 AutoLISP 中,AutoCAD 也不允许我在多段线中绘制从顶点到边的中间的线。

我怎样才能做到这一点?

我想过在折线中添加一个顶点,但这并没有多大帮助。我尝试添加连接器:一个圆圈或另一个物体关闭 足够的线并将高度连接到它,但这也没有帮助。

有什么建议么?


首先,我怀疑您当前尝试的问题是向对象提供点时活动对象捕捉模式的影响LINE命令。

有几种方法可以避免这种情况:

1.使用“无”对象捕捉修改器

通过 AutoLISP 向 AutoCAD 命令提供点时command表达式,您可以通过在该点前面加上none or non对象捕捉修改器。

这类似于您在一个点之前使用end强制激活端点对象捕捉修改器,但在这种情况下,none or non means “忽略所有对象捕捉模式”。可以找到可用前缀的完整列表here.

下面是该方法的一个示例:

(setq p '(0.0 0.0 0.0)
      q '(1.0 1.0 0.0)
)
(command "_.line" "_non" p "_non" q "")

对上面的几点说明:

  • 下划线前缀_(如所用"_.line" and "_non")导致 AutoCAD 将输入解释为非本地化命令输入(即英语),否则,如果将此类输入提供给非英语版本的 AutoCAD,则它可能在非英语语言中带有另一种含义。

  • 点/句号前缀.(如所用"_.line")导致 AutoCAD 始终使用命令的原始定义,而不是重新定义的版本(如果用户使用了命令,则可能存在重新定义的版本)UNDEFINE命令)。

2. 暂时禁用对象捕捉

虽然上述方法承认可能存在活动的对象捕捉模式,强制每个点输入忽略此类模式,但如果您发出涉及大量点输入的许多命令调用,您可能会发现简单地暂时完全禁用对象捕捉会更干净,然后在程序完成后重新启用之前的活动模式。

实现这一点的明显方法是存储当前值OSMODE系统变量,将该系统变量设置为0在发出您的command表达式,然后重置OSMODE系统变量为其先前的值,例如:

(setq p '(0.0 0.0 0.0)
      q '(1.0 1.0 0.0)
      m  (getvar 'osmode) ;; Store current OSMODE
)
(setvar 'osmode 0) ;; Set OSMODE to 0 (disables all snaps)
(command "_.line" p q "")
(setvar 'osmode m) ;; Reset OSMODE to stored value

然而,这种方法有一个缺点,如果在该时间内发生错误OSMODE被设定为0,在没有适当的错误处理程序, OSMODE将保持等于0当用户发现自己丢失了对象捕捉设置时,他们会感到愤怒。

因此,一种更“优雅”的方式来暂时禁用OSMODE是利用位 16384,该位设置后表示对象捕捉已关闭。

现在,而不是使用if测试是否位的语句16384存在于OSMODE值,如果是,则从该值中减去它,我们可以使用 AutoLISPlogior(包括按位OR) 函数在单个表达式中考虑这两种情况:

(setvar 'osmode (logior 16384 (getvar 'osmode)))

这将返回按位包含的结果OR位之间的运算16384和当前值OSMODE系统变量。因此,如果16384已存在于值中,则将返回该值,否则将添加该值。

这可以按如下方式实现:

(setq p '(0.0 0.0 0.0)
      q '(1.0 1.0 0.0)
      m  (getvar 'osmode) ;; Store current OSMODE
)
(setvar 'osmode (logior 16384 m)) ;; Turn off Object Snap
(command "_.line" p q "")
(setvar 'osmode m) ;; Reset OSMODE to stored value

Now, if the code encounters an error whilst Object Snap is turned off, the Object Snap settings are not lost - the user may simply need to turn Object Snap back on using F3.

3. 完全避免命令调用

当然,避免对象捕捉对命令点输入影响的最可靠方法是完全避免命令!

相反,您可以使用entmake or entmakex函数将DXF数据直接附加到绘图数据库:

(setq p '(0.0 0.0 0.0)
      q '(1.0 1.0 0.0)
)
(entmake (list '(0 . "LINE") (cons 10 p) (cons 11 q)))

或者,您可以遵循 Visual LISP ActiveX 路线并使用AddLine相关 Block 容器的方法,例如要在模型空间中创建一条线,您可以使用:

(vl-load-com)
(setq p '(0.0 0.0 0.0)
      q '(1.0 1.0 0.0)
)
(vla-addline 
    (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) 
    (vlax-3D-point p)  
    (vlax-3D-point q)
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绘制靠近折线的线 的相关文章

  • 使用 Swift 绘制折线

    我试图了解如何使用 Swift 绘制折线 我查看了文档 参考了一些教程 并查看了其他一些 SO 帖子 但我仍然无法在地图上画一条线 这是我的代码 有人告诉我我在这里做错了什么吗 import UIKit import MapKit clas
  • Svg 多边形舍入

    我正在开发一个使用 svg 移动 旋转 缩放功能的应用程序 我正在 Laravel 中编写后端 前端使用 html css javascript 我在网上看到折线可能有某种三次贝塞尔曲线 现在我的问题是 多边形 svg 元素是否可能具有与折
  • 如何使用 Google Maps ios SDK 跟踪用户位置并显示行进路径

    我目前正在构建一个ios应用程序 我希望实现一个功能 其中用户的位置显示在Google地图视图上 并且当他们移动折线时显示用户迄今为止走过的路径 这显然需要实时发生 到目前为止 我已经初始化了 Google 地图视图 并且可以使用观察Key
  • Visual Lisp:如何调用外部 C++ DLL 中的函数

    我有一个我编写的 C dll 本机的 不是 net 并且我想使用 Visual Lisp 中的功能 任何人都可以向我指出如何执行此操作的示例 或者至少要阅读哪些文档 我通过为我的 dll 编写一个 activex COM 包装器解决了这个问
  • 在谷歌地图android上的两个纬度长点之间绘制一条曲线(贝塞尔曲线)

    我想在两个经纬度点之间绘制一条曲线 贝塞尔曲线 目前我指的是这个帖子 代码是JavaScript 使用三次贝塞尔方程获取曲线点的代码 private void drawElementsOnMap LatLng init LatLng end
  • Android - 获取折线作为图像

    如何获取已在 Google 地图上绘制为图像的折线 只有折线 没有地图布局 我已经在 Google 地图上绘制了折线 我想将折线作为图像获取 所以只显示红线 没有任何地图 https i stack imgur com vUqS3 png
  • Google 地图地理编码(GLatLng 地址)

    我正在尝试使用 Google Maps JavaScript API 从两个位置绘制测地折线address点 var polyOptions geodesic true var polyline new GPolyline new GLat
  • 使用 Google Maps SDK 在地图上绘制错误的折线

    我正在尝试使用 Google Maps SDK 在地图上绘制路线 This是我正在调用的 URL 我解析对坐标数组的 JSON 响应 id jsonResponse NSJSONSerialization JSONObjectWithDat
  • 像缓冲区一样围绕折线创建多边形

    我环顾四周 找到了如何获取折线并在其周围创建缓冲区的示例 这样我最终得到了一个多边形 到目前为止 我发现我需要 Minkowski Sums 来做到这一点 但我无法理解原始算法并将其转换为代码 我更喜欢 C 中的示例或算法的演练 您可以使用
  • 当用户移动时在 Android 谷歌地图中绘制折线

    嘿 我是 Android 新手 我已经了解了 android 谷歌地图 我想跟踪用户移动并在 android 谷歌地图中实时绘制折线路径 有人可以帮助我这个例子吗 我可以获得位置变化间隔 但仍然不知道如何将其应用到折线并将数据 LatLng
  • Google Maps Android api v2 折线长度

    我正在尝试找到 android 地图 api v2 方法 该方法将确定我在移动时创建的折线的长度 我会将其放入 onLocationChanged 中以进行持续更新 有人知道地图 api 的方法是什么以及显示长度的单位是什么吗 Polyli
  • 检查用户是否遵循路线(iphone)

    我正在制作一个基于导航的应用程序 在此应用程序中 我从用户选择的点绘制一条路线 如果用户不遵循路线 我需要重新计算路线 用于计算我使用的路线Google direction API 为了绘制路线 我使用了这段代码 void drawRout
  • Android Polyline - 逐点添加

    我目前有一张地图 每 10 米我使用 LocationListener 刷新我的位置并获取新的纬度和经度 现在我希望用户正在走的路线会用红线显示 因此 每次调用 LocationListener 类中的 OnLocationChange 时
  • ObjectARX、RealDWG 还是 Teigha? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我计划开发一款读取和操作 dwg 文件中的数据的软件 我决定使用 RealDWG 或 Teigha 而不是编写自己的库来处理数据文件的 读取 但
  • 如何从 Google 地图 V3 中删除圆圈?

    我用画圆 circle new google maps Circle map map radius r 1 miles in metres 1609 3 m strokeWeight 1 strokeOpacity 0 5 fillOpac
  • DXF解析器:椭圆角度方向

    我编写了自己的 ASCII DXF 文件解析器 但在某些特定文档中遇到了省略号问题 似乎没有定义开始和结束参数的角度方向 顺时针或逆时针 的 组代码 在大多数情况下 它是逆时针的 但并非在所有情况下 为了简化起见 这里有一个直观的示例 如您
  • 使用 Active Directory 集成身份验证的 Azure SQL 数据库连接无法打开

    我正在尝试使用类似于以下内容的连接字符串通过实体框架连接到 Azure SQL 数据库 Data Source
  • AutoCAD 插件开发示例

    我对开发 AutoCAD 插件感兴趣 并试图了解几种不同类型的 AutoCAD 插件文件之间的关系 随 AutoCAD 插件一起提供的托管 DLL ARX 文件 https fileinfo com extension arx附带 Auto
  • Leaflet Map - 第二个多边形使第一层不可点击

    我正在制作美国社区调查数据地图 目前我有一个主要层 如下所示plotMerge incomePerCapita 它运作良好 有一个完全充实的弹出窗口 图像等等 当我添加第二层以提供县和地区边界时 区域边界变得不可单击 似乎被新层掩盖了 如果
  • Caliburn micro 处于无应用程序对象模式,就像在 AutoCAD dll 插件中一样

    我正在使用 Caliburn Micro 开发 WPF 应用程序 该应用程序的一些视图需要加载到 AutoCAD 环境中 AutoCAD 编程环境允许开发 AutoCAD 插件 dll 类型 并将其加载到 AutoCAD 环境中 由于 Au

随机推荐

  • 访问路径“d:\$RECYCLE.BIN\S-1-5-21-494745725-312220573-749543506-41600”被拒绝

    我是 C 新手 我有一个文本框 可以在其中输入要搜索的文件和一个 搜索 按钮 在搜索时钟上 我希望它填充文件夹中的文件 但出现上述错误 下面是我的代码 string directories Directory GetDirectories
  • 无需 JavaScript 即可轻松实现等高 DIV?

    到目前为止 我主要使用基于表格的布局 但由于它被认为是过去的事情 所以现在我承担了学习基于 DIV 的布局的任务 到目前为止 对我来说最烦人的挑战之一是找到一种方法来获得等高的 DIV 该 DIV 可以在所有主要浏览器上运行 不依赖于 Ja
  • 错误 C2679:二进制 '<<':找不到采用 'std::string' 类型的右侧操作数的运算符(或者没有可接受的转换)

    这是我的代码 如何修复这个错误 include stdafx h include
  • 如何检测 Highcharts 图表中点的双击或长按?

    Highcharts 提供了检测图表点点击的机会 但是有可能吗 检测其他事件 例如双击或鼠标按下事件 提前致谢 每个组件只支持某些事件 例如图表组件会检测addSeries click load redraw and selection 我
  • 索引枚举的值,而不是字符串

    是否可以使用 Solrnet 索引 Enum 的值而不是其字符串表示形式 假设我必须遵循以下枚举 Serializable Flags public enum Gender Male 0 Female 1 并将 solr 属性添加到Gend
  • 使用react-router-v4对路由进行身份验证

    我正在尝试写Authentication检查我的DashBoard 但函数本身没有被调用 谁能给我一些解决方案吗 我正在使用 ReactJs 进行开发 这是路线部分
  • 我收到错误“DELETE 语句与 REFERENCE 约束冲突”

    我尝试用外键截断表并收到消息 无法截断表 因为它被 FOREIGN KEY 约束引用 我阅读了很多有关该问题的文献 并认为我通过使用删除找到了解决方案 DELETE FROM table name DBCC CHECKIDENT table
  • 没有 Boost.Serialization 的序列化

    我正在尝试为我的代码实现一个简单的序列化 反序列化方法 以便能够使用 MPI 通过网络传递对象 在理想的世界中我会使用Boost Serialization and Boost MPI为此 但它们没有安装在我有权访问的某些集群上 因此我正在
  • 需要 Microsoft Visual C++ 10.0(无法找到 vcvarsall.bat)

    我尝试使用以下命令在 Windows 8 1 上安装 ephem 模块 pip install ephem 但我收到此错误 Microsoft Visual C 10 0 is required Unable to find vcvarsa
  • Knockout JS 映射插件混乱

    我很困惑在使用映射插件时应该何时何地声明我的 viewModel 这是我的 json 文件 members memberid 001 membername Jason memberid 002 membername Bob 这是 html
  • 如何使用 hibernate 和 Legacy 数据库修剪 char 字段 pojo 中的空格

    我的表的列为 char 5 无法将其更改为 varchar 5 因此 当我使用 hibernateTemplate 从表中获取值时 它会返回带有实际的单个字母值的添加空格 客户修复是使用 trim 方法检查 NPE 但是我们是否有提供的方法
  • SQL 迭代所有表

    我正在运行以下代码以从具有特定列的所有表中提取所有相关行 外层IF应该检查该迭代的表中是否存在该列 如果没有 它应该完成该迭代并移至下一个表 如果表中有GCRecord列 然后应该检查该表是否会返回任何记录 如果没有要返回的记录 则应结束该
  • data.table 中 cumsum 的平均版本(累积平均值)

    我有一些数据 library data table set seed 42 dat lt data table t 1 6 group rep 1 2 each 3 val runif 6 0 1 gt dat t group val 1
  • 如何在c中打印内存位

    我正在学习数字在内存中的表示方式 我想知道如何在内存中打印某些 int 和 float 变量的实际表示形式 二进制或十六进制 例如 我想看看当添加或减去这些数字导致溢出时会发生什么情况 如何访问内存并打印它 您需要将指向相关变量的指针分配给
  • Java 在文本区域右侧显示文本

    我遇到的问题ComponentOrientation RIGHT TO LEFT是 或 等字符或者 显示在左侧 我只需要从右到左绘制文本 但使用标准 西方 英语从左到右的文本字符表示法 如果不手动渲染文本 这可能吗 我无法生成您的问题 您可
  • 将 Jackson 注释添加到 swagger 生成的类

    我正在使用 swagger 来定义与我的网络服务器的合同 在 swagger 文件中 我定义了 REST 端点和请求 响应对象 我想添加注释 JsonInclude Include NON NULL 到我的招摇班级的一个领域 swagger
  • 动态包含安全

    有没有什么方法可以安全地包含页面而不将它们全部放入数组中 if preg match a z0 9 GET page page GET page php tpl GET page html if file exists page inclu
  • 如何使用 AJAX 进行重定向?

    我有以下代码 function get login hideshow loading2 1 error 0 ajax type POST url The URL data logins serialize dataType json suc
  • 即使用户强制关闭服务,如何自动重新启动服务?

    我希望服务在我的应用程序中始终运行 所以我想重新启动它 即使它被用户强制关闭 肯定有办法做到这一点 就像 Facebook 等应用程序正在做的那样 这不是使用推送通知完成的 即使互联网关闭 Facebook 也会重新启动其服务 首先 它是真
  • 绘制靠近折线的线

    我有一个三角形作为折线 我想绘制一个高度 我发出命令 line or line 正确的点 但 AutoCAD 绘制从顶点到相邻顶点的线 不仅在 AutoLISP 中 AutoCAD 也不允许我在多段线中绘制从顶点到边的中间的线 我怎样才能做