我想把这个口齿不清
好了,这是我的第一篇帖子,我希望能像其他帖子一样取得好成绩。我正在将几年前开发的一组LISP例程转换为DCL页面提示,而不是命令提示输入。我决不是一个程序员,我的一些(全部)例程并没有尽可能地浓缩,但它们都可以工作。任何建议/意见将不胜感激,因为我对自己的编程(或缺乏编程)技能毫不掩饰。代码已删除请参阅下一篇文章。。。。
谢谢
布鲁斯 你好,布鲁斯,
欢迎来到CADTutor
首先,请阅读这篇关于如何在帖子中设置代码格式的文章(位于论坛顶部):
http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南 对不起,李,让我再试一次。
(defun C:SLine ()
(setvar "osmode" 163)
(setq lwght(getvar "celweight"))
(setq svLayer (getvar "clayer"))
(command "layer" "s" "site" "")
(setvar "TEXTEVAL" 1)
(setq slt 0)
(setq answ nil)
(while (or (< SLT 1) (> SLT 3))
(setq SLT(Getint "\nSewerline Type: 1=House-Tank...2=Tank-Bed/D-Box...3=Tank-Tank..? "))
)
(if (= slt 1)
(setq hTot 0)
)
(if (= slt 2)
(setq tTod 0)
)
(if (= slt 3)
(setq tTot 0)
)
(setq pt1a (getpoint "\nStarting Point: "))
(setq xpt1 (car pt1a))
(setq ypt1 (cadr pt1a))
(setq pt1 (list xpt1 ypt1))
(setq ct 0)
(while (< ct 2)
(prompt "\nNext Point: ")
(setvar "celweight" 25)
(command "LINE" pt1 pause "")
(setq pt2a(getvar "lastpoint"))
(setq xpt2 (car pt2a))
(setq ypt2 (cadr pt2a))
(setq pt2 (list xpt2 ypt2))
(setq dis (rtos (distance pt1 pt2)))
(setvar "celweight" lwght)
(setvar "osmode" 0)
(command "TEXT" "s" "simplex" pt1 pt2 (strcat dis"'" ))
(prompt "\nText Location: ")
(command "MOVE" "L" "" pt1 pause)
(setq pt1 pt2)
(setq answ(getstring "\nAny Key to END or ENTER to <continue> ?"))
(if (= slt 1)
(setq HtoT (+ HtoT (atof dis)))
)
(if (= slt 2)
(setq TtoD (+ TtoD (atof dis)))
)
(if (= slt 3)
(setq TtoT (+ TtoT (atof dis)))
)
(if (= answ "")
(setq ct 0)
(setq ct 2)
)
)
(setvar "TEXTEVAL" 0)
(setvar "clayer" svLayer)
(setvar "osmode" 163)
(princ "\n-Utility Complete -")
(princ "\n- Hit Enter to Repeat -")
(princ)
)
我希望这样更好。 不确定你在DCL页面提示中遇到了什么代码很简单添加拨号提示可能会减慢速度。
只是一个建议(命令“LINE”pt1 pause“”)替换为(setq pt2a(getpoint pt1a“\n点击next point))。这将画一条线,但如果你不需要它,它将消失。如果你这样做,一个简单的方法是暗示两个连接点(命令“LINE”pt1a pt2a“”),Lee将告诉你使用entmake作为这条线。
Bruce,
目前除了DCL之外,这段代码应该做什么?我添加了网站层和单纯形字体,这样代码就不会出错,然后在上面移动一行文字。我看到了一个变量(dis),它被转换成一个字符串,这是一个距离,我认为它应该是您要查找的文本,但这似乎不起作用。你也有编码在那里,真的什么都不做。
你能发布一张最终结果正确的图纸吗? Bruce,
我制作了一个小对话框,如下图所示,我还根据我的假设在entmake中重写了代码。现在,这是对话框的图像。我还添加了一个文本缩放选项。基于我的假设,代码现在运行良好,但我不确定我现在的方式是否是您预期的工作方式。一旦我能确认这个代码应该做什么,我就会发布它。我还有一些问题。
这是一个非常简单的实用程序,可以根据用户选择的线段数绘制一条线,并将每条线的距离写在这条线上。然后,它汇总线距离并保存变量(总距离),有三种可能的变量,以便以后可以单独使用每种变量来计算高程。写入文件部分不存在,我对这一部分没有异议。这些管线实际上代表了污水管段,第一个从房屋到化粪池,第二个从化粪池到化粪池,用于两个水箱系统,最后一个从化粪池到化粪池系统/配电箱。
我应该提到的是,仅当直线捕捉到具有Z坐标的对象时,才需要在x和y坐标中。由于出于布局目的,所有测量均基于水平坐标系。我试图完全摆脱屏幕提示,让所有实用程序都从对话框中运行。
我有更多的实用程序需要进行计算,而在对话框中,不需要执行命令,只需要计算。
我非常感谢你们的投入和帮助。
祝你火鸡节愉快。
好啊
但是在下面的if语句中没有区别,全部设置为零。为什么要麻烦使用if?
它不是把距离放在直线上,而是把单词移到直线上。
你是说这个代码不完整?也许您应该在使用DCL之前完成代码。
(if (= slt 1)
(setq hTot 0)
)
(if (= slt 2)
(setq tTod 0)
)
(if (= slt 3)
(setq tTot 0)
)
我不想将它们全部设置为0,因为其他两个变量可能已经在变量中设置了一个值,但是如果这是第二次或连续运行,我希望清除用户正在重做的变量。在实用程序的开头,我将放置一个读取或创建文件函数,最后我将放置一个写入文件函数。设计系统的过程可能涉及多次移动,一旦计划完成,就需要构建。在这一点上,如果不是按照计划建造,则需要再次修订计划,以反映已建造的系统。考虑到这一点,我需要保存这些变量,并能够在以后回忆起,直到4年后,因为一旦批准,计划在4年内有效。(如果延期,可能更长)。
我不想发布我的数据文件(txt)信息,因为它包含我在化粪池系统设计过程中保存的大约50个变量。
你在这里失去了我。代码中的总数都设置为零,代码末尾的距离加零。所以他们在这一点上什么也没做。此外,三种不同的油箱选择也将是相同的。如果这仅仅是因为代码不完整,那么最好在生成DCL之前查看完整的代码。只需提及,这段代码中没有错误捕获。代码也不会检查是否存在层或字体样式。您正在保存用户设置并在程序结束时还原,但如果程序有错误或在命令中间点击escape,您将丢失这些保存的设置。
我不想在这里过头,但发布的这段代码需要一些工作。
页:
[1]
2