乐筑天下

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

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

[复制链接]

2

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:06:45 | 显示全部楼层 |阅读模式
我到处寻找这个可能很简单的问题的答案。如何在LISP中获得直线的长度?我能想到的最好方法是在VLISP中使用LIST命令来获取对象属性,但由于这是一个命令而不是本机lisp函数,我认为您不能使用CADR NTH等操作lisp对吗。?原谅我的天真。任何帮助都将不胜感激。我肯定我错过了一些简单的事情。
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-5 20:11:12 | 显示全部楼层
有一些lisp例程将返回行长度。
 
一个这样的例程的输出。
 
210650kmfo4yfq1x61r8mx.jpg
 
lisp例程由Ravikumar Vermana编写,并于2011年10月21日发布在他的博客上。你需要看代码吗?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:18:26 | 显示全部楼层
下载我的GetLength程序。
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-5 20:23:38 | 显示全部楼层
如果OP只需要一行的长度,那么lisp首先需要什么?通过LIST命令或单击行,然后查看快捷特性或特性,不是很容易获得长度吗?有时,人们在似乎没有实际需要的地方请求lisp例程。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:26:23 | 显示全部楼层
 
大多数人从一开始就要求一个非常小的代码,这个要求很快就会变成一个大雪球从高山上滚下来。
我认为你们对这些事情已经足够了解了,我们可能会在这个线程中实现这个想象的景象,谁知道呢?
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-5 20:31:03 | 显示全部楼层
我当时预测会发生雪崩。小心
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:35:20 | 显示全部楼层
这里一直是夏天
回复

使用道具 举报

2

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:38:41 | 显示全部楼层
谢谢大家的回复。我已经看到了lisp例程,它提供了多行的长度,但我正在寻找一段简单的代码来获得一行的长度,以便在我正在开发的lisp例程中使用。
 
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:44:24 | 显示全部楼层
玩一玩这个
 
  1. (defun c:foo ( / s e )
  2. (princ "\n Pick on one line to get its length :")
  3. (if (setq s (ssget "_+.:S:E" '((0 . "LINE"))))
  4.      (princ (strcat "\n Total Length is : " (rtos (distance (cdr (assoc 10 (setq e (entget (ssname s 0))))) (cdr (assoc 11 e))) 2)))
  5.    )
  6. (princ)
  7. )
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 20:49:01 | 显示全部楼层
作为创建稳健功能的入门:
 
 
  1. [b][color=BLACK]([/color][/b]defun linelength [b][color=FUCHSIA]([/color][/b]e / ed p10 p11 d2 d3[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]= [b][color=MAROON]([/color][/b]type e[b][color=MAROON])[/color][/b] 'ENAME[b][color=NAVY])[/color][/b]
  3.      [b][color=NAVY]([/color][/b]setq ed [b][color=MAROON]([/color][/b]entget e[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  4.      [b][color=NAVY]([/color][/b]= [color=#2f4f4f]"LINE"[/color] [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 0 ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  5.      [b][color=NAVY]([/color][/b]setq p10 [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 10 ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  6.            p11 [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 11 ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  7.      [b][color=NAVY]([/color][/b]setq d3 [b][color=MAROON]([/color][/b]distance p10 p11[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  8.      [b][color=NAVY]([/color][/b]setq d2 [b][color=MAROON]([/color][/b]distance [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]car p10[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cadr p10[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  9.                         [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]car p11[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cadr p11[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  10. d3[b][color=BLACK])[/color][/b]
  11. [color=#8b4513]; [b][color=BLACK]([/color][/b]defun       [b][color=BLACK])[/color][/b] : define a local function[/color]
  12. [color=#8b4513];  [b][color=BLACK]([/color][/b]e /          : supply 1 parameter to the function[/color]
  13. [color=#8b4513];  / ed p10 p11 d2 d3[b][color=BLACK])[/color][/b] : declare  variables local to this function only[/color]
  14. [color=#8b4513];  [b][color=BLACK]([/color][/b]and        [b][color=BLACK])[/color][/b] : inclusive testing - continue evaluating until a nil is returned or test complete[/color]
  15. [color=#8b4513];  [b][color=BLACK]([/color][/b]type       [b][color=BLACK])[/color][/b] : test for the the type of the parameter[/color]
  16. [color=#8b4513];  [b][color=BLACK]([/color][/b]entget     [b][color=BLACK])[/color][/b] : get an entity definition[/color]
  17. [color=#8b4513];  [b][color=BLACK]([/color][/b]distance   [b][color=BLACK])[/color][/b] : calculate the true distance between 2 points[/color]
  18. [color=#8b4513];                : if both points have X Y & Z values, return the 3D distance[/color]
  19. [color=#8b4513];                : if either point has only X & Y values, return the 2D distance[/color]
  20. [color=#8b4513];  d3            : return the 3D value or nil if an error occurred[/color]

 
 
用法:
 
画一条线->
  1. [b][color=BLACK]([/color][/b]prin1 [b][color=FUCHSIA]([/color][/b]linelength [b][color=NAVY]([/color][/b]entlast[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
线点值始终存储在WCS中,因此不需要翻译
 
 
HTH-David
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 09:22 , Processed in 0.530673 second(s), 74 queries .

© 2020-2025 乐筑天下

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