乐筑天下

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

[编程交流] 自定义Autolisp代码

[复制链接]

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 22:14:11 | 显示全部楼层 |阅读模式
女士们先生们,您好,
 
首先,我想向大家问好,我昨天刚刚报名。这将是我的第一条帖子,所以如果我发布的问题有点难以解释,我会提前道歉。
 
首先,我的问题是关于AutoLisp的。我从学校开始就没有机会使用Autolisp,现在我在一家新公司找到了一份工作,需要创建一些标准,目前我不熟悉使用Autolisp的编码。然而,我正在这个网站上学习教程,它很棒,但我需要的是一些非常具体的东西,该公司可以立即用于我们的项目。下面是我的问题,如果有人能帮忙,那就太好了。事先谢谢。
 
1) 我想知道如何创建AutoLisp,当我选择某些图层时,它可以显示线的总长度。例如,我们为分区和基础设施设计天然气管线。因此,当我单击一条设计好的输气管线(如我们的输气管线)时,该图层被称为New Main and New service,我们希望有一个Autolisp,可以计算我们创建的每个图形文件中这些图层上每条管线的总长度。
 
如果有人知道如何开始这样的事情,那就太棒了。甚至只是给我指出正确的方向都会有帮助。
再次感谢。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 22:21:37 | 显示全部楼层
欢迎登机!
 
幸运的是,运行lisp例程教程中使用的示例与您要求的基本相同:
 
http://www.cadtutor.net/forum/showthread.php?1390-如何在此存档中使用LISP例程&highlight=zone。lsp
 
 
此外,论坛会搜索类似的帖子,并在页面底部显示结果
 
玩得开心-大卫
-大卫
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 22:30:40 | 显示全部楼层
看一看http://www.lee-mac.com他有一些很好的日常生活习惯。
回复

使用道具 举报

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 22:36:37 | 显示全部楼层
非常感谢大家的帮助。这对我们很有帮助。
回复

使用道具 举报

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 22:40:10 | 显示全部楼层
你好,大卫,
 
区域。你提供的lsp链接效果很好。但是,此lisp例程仅提供图形中多段线的总长度。我想问一下,您是否知道如何修改此例程,以获得不仅多段线,而且直线、圆、圆弧、样条曲线和椭圆的总距离?我还想去掉面积选项,现在让例行程序得到总长度。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 22:46:10 | 显示全部楼层
 
你可以试试我的总长度和面积计划。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 22:53:47 | 显示全部楼层
虽然可以这样做,但“面积”命令不支持直线和圆弧图元。它们必须独立计算。你想要的最终结果是什么-大卫
回复

使用道具 举报

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 22:58:01 | 显示全部楼层
 
我要找的是修改分区。你提供给我的lsp。
 
(定义c:区域(/ss la rv i tv op en)
 
(while(非ss)
(原理“\n点击所需图层上的任何对象”)
(setq ss(ssget)))
 
(initget“长度区域”)
(setq rv(getkword“\n您想测量长度/:”)
(和(非rv)
(setq rv“区域”)
 
(setq la(cdr(assoc 8(entget(ssname ss 0)))
ss(ssget“X”(列表(cons 0“*多段线))
(cons 8 la)))
i(ss长度ss)
电视0
op 0)
(while(not(minusp(setq i(1-i)))
(setq en(ssname ss i))
(命令“.AREA”“\u E”en)
(cond(=rv“长度”)
(setq tv(+tv(getvar“Peripherine”)))
(T)
(setq tv(+tv(getvar“AREA”))
(如果(/=(logand(cdr(assoc 70(entget en)))1)1)
(setq op(1+op ЮЮ)Ю)
 
(princ(strcat“总”rv
“对于层”la
“=”(rtos tv 2)
“in”(itoa(sslength ss))“多段线\n”
(如果(/=rv“长度”)
(strcat(itoa op)“带开放多段线”)“”)
(prin1))
 
这是区域lisp的例程。然而,我想删除“面积”选项,只保留“长度”选项。还希望弹出一个警报框,给出总长度,而不仅仅显示在命令对话框中。我喜欢这个区域的原因。lsp是因为它提供了所选图层上所有多段线的总长度,这就是我们所寻找的。原因是,它为我们提供了所选图层上每条输气管线的总英尺数,并使我们在设计输气管线后更快地检查图形文件信息。但我也希望它不仅能检查多段线,还能添加直线、圆弧、椭圆和样条曲线,就像上面LEE MAC的总长例程一样。
 
对不起,如果我不是很彻底,但我是新的Lisp例程,我觉得我知道我想要自定义例程做什么,但没有很好地解释它。再次感谢您的回复。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 23:06:57 | 显示全部楼层
也许 吧:
 
  1. [b][color=BLACK]([/color][/b]defun c:tot-lay [b][color=FUCHSIA]([/color][/b]/ en ss l el i ed tl ra sa ea ia al as[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]not en[b][color=NAVY])[/color][/b]
  3.         [b][color=NAVY]([/color][/b]and [b][color=MAROON]([/color][/b]setq ss [b][color=GREEN]([/color][/b]ssget[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  4.              [b][color=MAROON]([/color][/b]= [b][color=GREEN]([/color][/b]sslength ss[b][color=GREEN])[/color][/b] 1[b][color=MAROON])[/color][/b]
  5.              [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  6. [b][color=FUCHSIA]([/color][/b]setq l [b][color=NAVY]([/color][/b]cdr [b][color=MAROON]([/color][/b]assoc 8 [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  7. [b][color=FUCHSIA]([/color][/b]setq el '[b][color=NAVY]([/color][/b][color=#2f4f4f]"ARC"[/color] [color=#2f4f4f]"CIRCLE"[/color] [color=#2f4f4f]"LINE"[/color] [color=#2f4f4f]"LWPOLYLINE"[/color] [color=#2f4f4f]"POLYLINE"[/color] [color=#2f4f4f]"SPLINE"[/color] [color=#2f4f4f]"ELLIPSE"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  8. [b][color=FUCHSIA]([/color][/b]foreach e el
  9.      [b][color=NAVY]([/color][/b]princ [b][color=MAROON]([/color][/b]strcat [color=#2f4f4f]"\nSearching "[/color] e [color=#2f4f4f]"s on LAyer "[/color] l[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  10.      [b][color=NAVY]([/color][/b]set [b][color=MAROON]([/color][/b]read e[b][color=MAROON])[/color][/b] 0[b][color=NAVY])[/color][/b]
  11.      [b][color=NAVY]([/color][/b]and [b][color=MAROON]([/color][/b]setq ss [b][color=GREEN]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 e[b][color=RED])[/color][/b]
  12.                                     [b][color=RED]([/color][/b]cons 8 l[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  13.           [b][color=MAROON]([/color][/b]setq i 0[b][color=MAROON])[/color][/b]
  14.           [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]setq en [b][color=BLUE]([/color][/b]ssname ss i[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  15.                  [b][color=GREEN]([/color][/b]setq ed [b][color=BLUE]([/color][/b]entget en[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  16.                  [b][color=GREEN]([/color][/b]cond [b][color=BLUE]([/color][/b][b][color=RED]([/color][/b]and [b][color=PURPLE]([/color][/b]= e [color=#2f4f4f]"POLYLINE"[/color][b][color=PURPLE])[/color][/b]
  17.                              [b][color=PURPLE]([/color][/b]= [b][color=TEAL]([/color][/b]logand [b][color=OLIVE]([/color][/b]cdr [b][color=GRAY]([/color][/b]assoc 70 ed[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] 16[b][color=TEAL])[/color][/b] 16[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  18.                        [b][color=BLUE]([/color][/b][b][color=RED]([/color][/b]= e [color=#2f4f4f]"LINE"[/color][b][color=RED])[/color][/b]
  19.                         [b][color=RED]([/color][/b]set [b][color=PURPLE]([/color][/b]read e[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]+ [b][color=TEAL]([/color][/b]eval [b][color=OLIVE]([/color][/b]read e[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b]
  20.                                       [b][color=TEAL]([/color][/b]distance [b][color=OLIVE]([/color][/b]cdr [b][color=GRAY]([/color][/b]assoc 10 ed[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b]
  21.                                                 [b][color=OLIVE]([/color][/b]cdr [b][color=GRAY]([/color][/b]assoc 11 ed[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  22.                        [b][color=BLUE]([/color][/b][b][color=RED]([/color][/b]= e [color=#2f4f4f]"ARC"[/color][b][color=RED])[/color][/b]
  23.                         [b][color=RED]([/color][/b]setq ra [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]assoc 40 ed[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
  24.                               sa [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]assoc 50 ed[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
  25.                               ea [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]assoc 51 ed[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
  26.                               ia [b][color=PURPLE]([/color][/b]if [b][color=TEAL]([/color][/b]> sa ea[b][color=TEAL])[/color][/b]
  27.                                      [b][color=TEAL]([/color][/b]+ [b][color=OLIVE]([/color][/b]- [b][color=GRAY]([/color][/b]* 2 pi[b][color=GRAY])[/color][/b] sa[b][color=OLIVE])[/color][/b] ea[b][color=TEAL])[/color][/b]
  28.                                      [b][color=TEAL]([/color][/b]- ea sa[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
  29.                               al [b][color=PURPLE]([/color][/b]* [b][color=TEAL]([/color][/b]* pi 2 ra[b][color=TEAL])[/color][/b]
  30.                                     [b][color=TEAL]([/color][/b]/ ia [b][color=OLIVE]([/color][/b]* pi 2[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
  31.                         [b][color=RED]([/color][/b]set [b][color=PURPLE]([/color][/b]read e[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]+ [b][color=TEAL]([/color][/b]eval [b][color=OLIVE]([/color][/b]read e[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] al[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  32.                        [b][color=BLUE]([/color][/b]T [b][color=RED]([/color][/b]command [color=#2f4f4f]"_.AREA"[/color] [color=#2f4f4f]"_E"[/color] en[b][color=RED])[/color][/b]
  33.                           [b][color=RED]([/color][/b]set [b][color=PURPLE]([/color][/b]read e[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]+ [b][color=TEAL]([/color][/b]eval [b][color=OLIVE]([/color][/b]read e[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b]
  34.                                         [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"PERIMETER"[/color][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  35.                  [b][color=GREEN]([/color][/b]setq i [b][color=BLUE]([/color][/b]1+ i[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]
  36. [b][color=FUCHSIA]([/color][/b]setq tl 0 as [color=#2f4f4f]""[/color][b][color=FUCHSIA])[/color][/b]
  37. [b][color=FUCHSIA]([/color][/b]foreach e el
  38.    [b][color=NAVY]([/color][/b]setq as [b][color=MAROON]([/color][/b]strcat [color=#2f4f4f]"\n"[/color] e [color=#2f4f4f]" = "[/color] [b][color=GREEN]([/color][/b]rtos [b][color=BLUE]([/color][/b]eval [b][color=RED]([/color][/b]read e[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 2 4[b][color=GREEN])[/color][/b] as[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  39.    [b][color=NAVY]([/color][/b]setq tl [b][color=MAROON]([/color][/b]+ tl [b][color=GREEN]([/color][/b]eval [b][color=BLUE]([/color][/b]read e[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  40.    [b][color=NAVY]([/color][/b]set [b][color=MAROON]([/color][/b]read e[b][color=MAROON])[/color][/b] nil[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  41. [b][color=FUCHSIA]([/color][/b]setq as [b][color=NAVY]([/color][/b]strcat [color=#2f4f4f]"\nLAyer "[/color] l [color=#2f4f4f]" Total = "[/color] [b][color=MAROON]([/color][/b]rtos tl 2 4[b][color=MAROON])[/color][/b] [color=#2f4f4f]"\n"[/color] as[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  42. [b][color=FUCHSIA]([/color][/b]alert as[b][color=FUCHSIA])[/color][/b]
  43. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
未使用椭圆和样条进行测试
 
-大卫
回复

使用道具 举报

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:08:59 | 显示全部楼层
嘿,大卫,这是正确的方向。非常感谢,因为现在我们有工作要做。我感谢你的帮助。这个网站太棒了。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:22 , Processed in 0.779622 second(s), 83 queries .

© 2020-2025 乐筑天下

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