乐筑天下

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

[编程交流] 我想把这个Lisp程序

[复制链接]

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 10:08:30 | 显示全部楼层 |阅读模式
好了,这是我的第一篇帖子,我希望能像其他帖子一样取得好成绩。我正在将几年前开发的一组LISP例程转换为DCL页面提示,而不是命令提示输入。我决不是一个程序员,我的一些(全部)例程并没有尽可能地浓缩,但它们都可以工作。任何建议/意见将不胜感激,因为我对自己的编程(或缺乏编程)技能毫不掩饰。
 
 
代码已删除请参阅下一篇文章。。。。
 
 
 
谢谢
布鲁斯
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:15:14 | 显示全部楼层
你好,布鲁斯,
 
欢迎来到CADTutor
 
首先,请阅读这篇关于如何在帖子中设置代码格式的文章(位于论坛顶部):
 
http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 10:20:00 | 显示全部楼层
对不起,李,让我再试一次。
 
  1. (defun C:SLine ()
  2. (setvar "osmode" 163)
  3. (setq lwght(getvar "celweight"))
  4. (setq svLayer (getvar "clayer"))
  5. (command "layer" "s" "site" "")
  6. (setvar "TEXTEVAL" 1)
  7. (setq slt 0)
  8. (setq answ nil)
  9. (while (or (< SLT 1) (> SLT 3))
  10.    (setq SLT(Getint "\nSewerline Type: 1=House-Tank...2=Tank-Bed/D-Box...3=Tank-Tank..? "))
  11.    )
  12. (if (= slt 1)
  13.    (setq hTot 0)
  14.    )
  15. (if (= slt 2)
  16.    (setq tTod 0)
  17.    )
  18. (if (= slt 3)
  19.    (setq tTot 0)
  20.    )
  21. (setq pt1a (getpoint "\nStarting Point: "))
  22. (setq xpt1 (car pt1a))
  23. (setq ypt1 (cadr pt1a))
  24. (setq pt1 (list xpt1 ypt1))
  25. (setq ct 0)
  26. (while (< ct 2)
  27.    (prompt "\nNext Point: ")
  28.    (setvar "celweight" 25)
  29.    (command "LINE" pt1 pause "")
  30.    (setq pt2a(getvar "lastpoint"))
  31.    (setq xpt2 (car pt2a))
  32.    (setq ypt2 (cadr pt2a))
  33.    (setq pt2 (list xpt2 ypt2))
  34.    (setq dis (rtos (distance pt1 pt2)))
  35.    (setvar "celweight" lwght)
  36.    (setvar "osmode" 0)
  37.    (command "TEXT" "s" "simplex" pt1 pt2 (strcat dis"'" ))
  38.    (prompt "\nText Location: ")
  39.    (command "MOVE" "L" "" pt1 pause)
  40.    (setq pt1 pt2)
  41.    (setq answ(getstring "\nAny Key to END or ENTER to <continue> ?  "))
  42.    (if (= slt 1)
  43.      (setq HtoT (+ HtoT (atof dis)))
  44.      )
  45.    (if (= slt 2)
  46.      (setq TtoD (+ TtoD (atof dis)))
  47.      )
  48.    (if (= slt 3)
  49.      (setq TtoT (+ TtoT (atof dis)))
  50.      )
  51.    (if (= answ "")
  52.      (setq ct 0)
  53.      (setq ct 2)
  54.      )
  55.    )
  56. (setvar "TEXTEVAL" 0)
  57. (setvar "clayer" svLayer)
  58. (setvar "osmode" 163)
  59. (princ          "\n  -  Utility Complete   -")
  60. (princ          "\n  - Hit Enter to Repeat -")
  61. (princ)
  62. )

 
我希望这样更好。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 10:30:17 | 显示全部楼层
不确定你在DCL页面提示中遇到了什么代码很简单添加拨号提示可能会减慢速度。
 
只是一个建议(命令“LINE”pt1 pause“”)替换为(setq pt2a(getpoint pt1a“\n点击next point))。这将画一条线,但如果你不需要它,它将消失。如果你这样做,一个简单的方法是暗示两个连接点(命令“LINE”pt1a pt2a“”),Lee将告诉你使用entmake作为这条线。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:31:16 | 显示全部楼层
 
Bruce,
 
目前除了DCL之外,这段代码应该做什么?我添加了网站层和单纯形字体,这样代码就不会出错,然后在上面移动一行文字。我看到了一个变量(dis),它被转换成一个字符串,这是一个距离,我认为它应该是您要查找的文本,但这似乎不起作用。你也有编码在那里,真的什么都不做。
 
你能发布一张最终结果正确的图纸吗?
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:40:55 | 显示全部楼层
Bruce,
 
我制作了一个小对话框,如下图所示,我还根据我的假设在entmake中重写了代码。现在,这是对话框的图像。我还添加了一个文本缩放选项。基于我的假设,代码现在运行良好,但我不确定我现在的方式是否是您预期的工作方式。一旦我能确认这个代码应该做什么,我就会发布它。我还有一些问题。
110830zkskvksdm7cz7vkk.jpg
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 10:45:37 | 显示全部楼层
这是一个非常简单的实用程序,可以根据用户选择的线段数绘制一条线,并将每条线的距离写在这条线上。然后,它汇总线距离并保存变量(总距离),有三种可能的变量,以便以后可以单独使用每种变量来计算高程。写入文件部分不存在,我对这一部分没有异议。这些管线实际上代表了污水管段,第一个从房屋到化粪池,第二个从化粪池到化粪池,用于两个水箱系统,最后一个从化粪池到化粪池系统/配电箱。
 
我应该提到的是,仅当直线捕捉到具有Z坐标的对象时,才需要在x和y坐标中。由于出于布局目的,所有测量均基于水平坐标系。我试图完全摆脱屏幕提示,让所有实用程序都从对话框中运行。
 
我有更多的实用程序需要进行计算,而在对话框中,不需要执行命令,只需要计算。
 
我非常感谢你们的投入和帮助。
 
祝你火鸡节愉快。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:50:24 | 显示全部楼层
 
好啊
 
但是在下面的if语句中没有区别,全部设置为零。为什么要麻烦使用if?
它不是把距离放在直线上,而是把单词移到直线上。
你是说这个代码不完整?也许您应该在使用DCL之前完成代码。
  1. (if (= slt 1)
  2.    (setq hTot 0)
  3.    )
  4. (if (= slt 2)
  5.    (setq tTod 0)
  6.    )
  7. (if (= slt 3)
  8.    (setq tTot 0)
  9.    )
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 10:57:06 | 显示全部楼层
我不想将它们全部设置为0,因为其他两个变量可能已经在变量中设置了一个值,但是如果这是第二次或连续运行,我希望清除用户正在重做的变量。在实用程序的开头,我将放置一个读取或创建文件函数,最后我将放置一个写入文件函数。设计系统的过程可能涉及多次移动,一旦计划完成,就需要构建。在这一点上,如果不是按照计划建造,则需要再次修订计划,以反映已建造的系统。考虑到这一点,我需要保存这些变量,并能够在以后回忆起,直到4年后,因为一旦批准,计划在4年内有效。(如果延期,可能更长)。
 
 
我不想发布我的数据文件(txt)信息,因为它包含我在化粪池系统设计过程中保存的大约50个变量。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 11:02:08 | 显示全部楼层
 
你在这里失去了我。代码中的总数都设置为零,代码末尾的距离加零。所以他们在这一点上什么也没做。此外,三种不同的油箱选择也将是相同的。如果这仅仅是因为代码不完整,那么最好在生成DCL之前查看完整的代码。只需提及,这段代码中没有错误捕获。代码也不会检查是否存在层或字体样式。您正在保存用户设置并在程序结束时还原,但如果程序有错误或在命令中间点击escape,您将丢失这些保存的设置。
 
我不想在这里过头,但发布的这段代码需要一些工作。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 20:50 , Processed in 0.367380 second(s), 74 queries .

© 2020-2025 乐筑天下

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