乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: martyn3200

[编程交流] LISP获取单个l的长度

[复制链接]

2

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:53:15 | 显示全部楼层
很好,伙计们。成功地使用以下代码使其工作。大卫,恐怕你的很多反应都让我不知所措。我对AutoLISP的工作知识相当有限!
 
无论如何,以下代码最终就足够了:
 
  1. (defun c:thirdline ( / s e ) ;routine to get the length of a line, divide it by 3 then print the result
  2. (if (setq s (ssget "_+.:S:E" '((0 . "LINE"))))
  3.      (setq s1 (rtos (distance (cdr (assoc 10 (setq e (entget (ssname s 0))))) (cdr (assoc 11 e))) 2))
  4.    )
  5. (setq s2 (atof s1))
  6. (setq s3 (/ s2 3))
  7. (princ s3)
  8. (princ)
  9. )
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 20:55:56 | 显示全部楼层
 
vlisp
  1. (defun c:div3 (/ e)
  2. (if (and (setq e (car (entsel "\nPick line..\n")))
  3.    (vlax-property-available-p (setq e (vlax-ename->vla-object e)) 'length)
  4.    )
  5.    (princ (rtos (/(vla-get-length e)3.0)2 3))
  6.    (princ "\noops.. ")
  7.    )
  8. (princ)
  9. )
  10. (vl-load-com)

 
 
像往常一样快速简单
 
我们应该注意长度结果是3D的吗?
一些在2D中工作的人可能会在不学习代码的情况下使用任何lisp。
如果搞砸了,lisper会受到责备吗?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 20:59:47 | 显示全部楼层
 
谢谢hanhphuc
 
 
如果用户没有选择一条线或一个没有长度属性的对象,那么他们会被搞砸
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 21:06:59 | 显示全部楼层
Martyn3200了解对象的“dxf代码”有一系列返回对象属性的代码。作为一条线的示例
0对象类型线
8层
10起点
11终点
 
0对象类型块
2区块名称
8层
10插入点
 
在VL下载Dumpit。lsp和加载它,选择你的行你会看到一个列表的各种信息,如'长度选择一个pline和'地区将返回只是使用上述代码。使用COND,您可以有一个程序根据对象类型返回大量信息,准备好使用“角度”如何。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 09:11 , Processed in 0.712038 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表