我有一个lisp(见下文),我正在编写它来创建图纸前页上Sheets块的修订状态。它应该是一个长矩形,由间距为0.4的垂直线分隔“在由图纸中的张数决定的长度上分开。还创建了一条水平线,将块分成两半。我面临的问题涉及创建垂直线的代码,该垂直线用于将块划分为等距块。作为整体代码的一部分,它不起作用,这就是结果:
虽然你在图中看不到,但这张图有11张纸,11条垂直线确实是由代码绘制的。3画在末尾,6画在中间,2画在开头
然而,如果我将代码逐行(仅代码的底部)输入AutoCAD,那么它的工作方式就像我想象的那样:
有人能帮我找出我的代码出了什么问题吗?谢谢
朗尼
P、 我还在学习,所以我知道可能有一千种更好的方法来做我正在做的事情,但为了努力学习,我希望能得到一些提示,告诉我的代码有什么问题。当然,如果你想分享你自己的代码来做同样的事情,那么我想看看。编码是关于逻辑的,我需要找出我的错误,这样我才能纠正我的想法。再次感谢。
- (defun c:revsh (/ n linelength ln1pt1
- ln1pt2x ln1pt2y ln1pt2 ln2pt1 ln2pt2x
- ln2pt2y ln2pt2 ln3pt1 ln3pt2x ln3pt2y
- ln3pt2 k x ptx pty
- ptz lnpt1 lnpt2
- )
- ;; Draw bottom line
- (setq n (length (layoutlist)))
- (setq linelength (* n 0.4))
- (setq ln1pt1 "37.75,11,0")
- (setq ln1pt2x (- 37.75 linelength))
- (setq ln1pt2y "11")
- (setq ln1pt2 (strcat (rtos ln1pt2x 2 2) "," ln1pt2y ",0"))
- (command "line" ln1pt1 ln1pt2 "")
- ;; Draw top line
- (setq ln2pt1 "37.75,12,0")
- (setq ln2pt2x (- 37.75 linelength))
- (setq ln2pt2y "12")
- (setq ln2pt2 (strcat (rtos ln2pt2x 2 2) "," ln2pt2y ",0"))
- (command "line" ln2pt1 ln2pt2 "")
- ;; Draw middle line
- (setq ln3pt1 "37.75,11.5,0")
- (setq ln3pt2x (- 37.75 linelength))
- (setq ln3pt2y "11.5")
- (setq ln3pt2 (strcat (rtos ln3pt2x 2 2) "," ln3pt2y ",0"))
- (command "line" ln3pt1 ln3pt2 "")
- ;; Draw sheet separators
- (setq k 0)
- (setq k (length (layoutlist)))
- (setq x 1)
- (repeat k
- (setq ptx (- 37.75 (* x 0.4)))
- (setq pty 11)
- (setq ptz 12)
- (setq lnpt1 (strcat (rtos ptx 2 2) "," (rtos pty 2 2) ",0"))
- (setq lnpt2 (strcat (rtos ptx 2 2) "," (rtos ptz 2 2) ",0"))
- (command "line" lnpt1 lnpt2 "")
- (setq x (1+ x))
- )
- )
|