乐筑天下

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

[编程交流] lisp正在计算吗?

[复制链接]

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:11:03 | 显示全部楼层 |阅读模式
大家好,
 
我才刚刚开始学习Lisp编程,真的不太懂。。。然而所以这里有一个问题。。
 
我想创建一个程序,它可以横向绘制几条线。在我的想象中,它应该是这样工作的:
在AutoCad中,我显示了一个正方形,程序询问我要绘制多少条线。当我给她一个数字时,她将总平方长度除以我给定的数字,然后画出直线(直线程序的长度也来自平方)。
 
问题是:
AutoCad可以计算吗?(在我的例子中)也许有人已经有了类似的东西?
回复

使用道具 举报

9

主题

59

帖子

38

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
58
发表于 2022-7-6 09:16:15 | 显示全部楼层
你好
 
这肯定可以使用Lisp完成。我使用VBA进行AutoCad自定义,但这里可能有人会帮助您使用此lisp。写它应该不会花太长时间。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:19:00 | 显示全部楼层
你是说这样的事?
  1. (defun c:HFillRect (/ pt1 pt2 div h v vdiv p1 p2)
  2. (if (and (setq pt1 (getpoint "\nGet start point of rectancgle: "))
  3.           (setq pt2 (getcorner pt1 "\nGet 2nd point of rectangle: "))
  4.           (setq div (getint "\nHow many lines: "))
  5.      )
  6.    (progn
  7.      (setq p1 (list (min (car pt1) (car pt2)) (min (cadr pt1) (cadr pt2)) (min (caddr pt1) (caddr pt2))) ;Left-bottom
  8.            p2 (list (max (car pt1) (car pt2)) (max (cadr pt1) (cadr pt2)) (max (caddr pt1) (caddr pt2))) ;Right-top
  9.            h  (- (car p2) (car p1)) ;Horizontal length
  10.            v  (- (cadr p2) (cadr p1));Vertical length
  11.            vdiv (/ v div) ;Vertical division length
  12.            pt1 p1 ;Start point of line
  13.            pt2 (list (car p2) (cadr p1) (caddr p2)) ;Endpoint of line
  14.      )
  15.      (while (< (cadr pt1) (cadr p2))
  16.        (command "._LINE" "_None" pt1 "_None" pt2 "")
  17.        (setq pt1 (list (car pt1) (+ (cadr pt1) vdiv) (caddr pt1))
  18.              pt2 (list (car pt2) (+ (cadr pt2) vdiv) (caddr pt2))
  19.        )
  20.      )
  21.    )
  22. )
  23. (princ)
  24. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:22:45 | 显示全部楼层
或者像这样?
 
  1. (defun c:hlines ( / p1 p2 h n v )
  2. (if
  3.    (and
  4.      (setq p1 (getpoint "\nSpecify First Corner: "))
  5.      (setq p2 (getcorner "\nSpecify Opposite Corner: " p1))
  6.      (progn (initget 6) (setq n (getint "\nSpecify Number of Lines: ")))
  7.    )
  8.    (progn
  9.      (setq h (- (car p2) (car p1))
  10.            v (if (= 1 n) 0. (/ (- (cadr p2) (cadr p1)) (1- n)))
  11.      )
  12.      (repeat n
  13.        (entmakex
  14.          (list
  15.            (cons 0 "LINE")
  16.            (cons 10 (trans p1 1 0))
  17.            (cons 11 (trans (list (+ (car p1) h) (cadr p1) (caddr p1)) 1 0))
  18.          )
  19.        )
  20.        (setq p1 (list (car p1) (+ v (cadr p1)) (caddr p1)))
  21.      )
  22.    )
  23. )
  24. (princ)
  25. )

 
或者,根据您想要的行为:
 
  1. (defun c:hlines ( / p1 p2 h n v )
  2. (if
  3.    (and
  4.      (setq p1 (getpoint "\nSpecify First Corner: "))
  5.      (setq p2 (getcorner "\nSpecify Opposite Corner: " p1))
  6.      (progn (initget 6) (setq n (getint "\nSpecify Number of Lines: ")))
  7.    )
  8.    (progn
  9.      (setq h (- (car p2) (car p1))
  10.            v (/ (- (cadr p2) (cadr p1)) (1+ n))
  11.      )
  12.      (repeat n (setq p1 (list (car p1) (+ v (cadr p1)) (caddr p1)))
  13.        (entmakex
  14.          (list
  15.            (cons 0 "LINE")
  16.            (cons 10 (trans p1 1 0))
  17.            (cons 11 (trans (list (+ (car p1) h) (cadr p1) (caddr p1)) 1 0))
  18.          )
  19.        )
  20.      )
  21.    )
  22. )
  23. (princ)
  24. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:23:56 | 显示全部楼层
这个帖子让我想起了一个类似的帖子。
回复

使用道具 举报

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:28:19 | 显示全部楼层
嗯,是的,
当我想出如何启动它的时候,所有的程序都是你做的
只有一件事,我解释错了,那就是线必须是垂直的,但距离是水平分开的。。。
我把我的照片附在这篇帖子上,为了解释更容易理解。。。以下是我想做的关于这个项目的一些事情:
1、第一行和最后一行始终为蓝色。
2.所有线条都属于图层轮廓
3.线路上的静噪块属于层kons1
4、线路上的圆块属于kons2层
5.所有圆和squere块之间的距离永远不会大于70(ar之间的所有间隙相等),如果需要,可以在线路上添加传统圆块。
6、线路起点/终点到区间的距离始终为10。
 
所以,如果有人想要这个挑战,并且想帮助我,请随时。。。因为正如我所看到的,对我来说,制作这样的程序需要很长时间,而这里的第一篇帖子是在几分钟后发布的 101106dwgjbghzb5jvgmk4.jpg
[ATTACH]28609[ATTACH][ATTACH]28610[ATTACH]。。。在另一种情况下,我会分享我的Lisp程序与你无论如何稍后,只是为了知道你的想法
101108whotogh0tgogr0t0.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:32:57 | 显示全部楼层
grread更有趣。。。
 
编写一个有趣的程序,但肯定不实用:
 
动态水平:
 
 
  1. ([color=BLUE]defun[/color] c:hlines ( [color=BLUE]/[/color] *error* g1 g2 gr h l ms p p1 p2 v )
  2. [color=GREEN];; Lee Mac 2011[/color]
  3. ([color=BLUE]defun[/color] *error* ( m ) ([color=BLUE]redraw[/color]) ([color=BLUE]princ[/color]))
  4. ([color=BLUE]or[/color] *n ([color=BLUE]setq[/color] *n 3))
  5. ([color=BLUE]if[/color] ([color=BLUE]setq[/color] p1 ([color=BLUE]getpoint[/color] [color=MAROON]"\nSpecify First Corner: "[/color]))
  6.    ([color=BLUE]progn[/color]
  7.      ([color=BLUE]setq[/color] ms ([color=BLUE]princ[/color] [color=MAROON]"\nSpecify Opposite Corner [+/-]: "[/color]))
  8.      ([color=BLUE]while[/color]
  9.        ([color=BLUE]progn[/color] ([color=BLUE]setq[/color] gr ([color=BLUE]grread[/color] [color=BLUE]t[/color] 15 0) g1 ([color=BLUE]car[/color] gr) g2 ([color=BLUE]cadr[/color] gr))
  10.          ([color=BLUE]cond[/color]
  11.            ( ([color=BLUE]=[/color] 5 g1)([color=BLUE]redraw[/color])
  12.              ([color=BLUE]setq[/color] h ([color=BLUE]-[/color] ([color=BLUE]car[/color] g2) ([color=BLUE]car[/color] p1))
  13.                    v ([color=BLUE]/[/color] ([color=BLUE]-[/color] ([color=BLUE]cadr[/color] g2) ([color=BLUE]cadr[/color] p1)) ([color=BLUE]1+[/color] *n))
  14.                    p p1
  15.              )
  16.              ([color=BLUE]repeat[/color] *n
  17.                ([color=BLUE]setq[/color] p ([color=BLUE]list[/color] ([color=BLUE]car[/color] p) ([color=BLUE]+[/color] v ([color=BLUE]cadr[/color] p)) ([color=BLUE]caddr[/color] p)))
  18.                ([color=BLUE]grdraw[/color] p ([color=BLUE]list[/color] ([color=BLUE]+[/color] ([color=BLUE]car[/color] p) h) ([color=BLUE]cadr[/color] p) ([color=BLUE]caddr[/color] p)) -1)
  19.              )
  20.              ([color=BLUE]setq[/color] l
  21.                ([color=BLUE]list[/color]
  22.                  p1 ([color=BLUE]list[/color] ([color=BLUE]+[/color] ([color=BLUE]car[/color] p1) h) ([color=BLUE]cadr[/color] p1) ([color=BLUE]caddr[/color] p1))
  23.                  g2 ([color=BLUE]list[/color] ([color=BLUE]car[/color] p) ([color=BLUE]+[/color] v ([color=BLUE]cadr[/color] p)) ([color=BLUE]caddr[/color] p))
  24.                )
  25.              )
  26.              ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]grdraw[/color] a b 1 -1)) l ([color=BLUE]append[/color] ([color=BLUE]cdr[/color] l) ([color=BLUE]list[/color] ([color=BLUE]car[/color] l))))
  27.            )
  28.            ( ([color=BLUE]=[/color] 2 g1)
  29.              ([color=BLUE]cond[/color]
  30.                ( ([color=BLUE]member[/color] g2 '(45 95))
  31.                  ([color=BLUE]if[/color] ([color=BLUE]=[/color] 1 *n)
  32.                    ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\n--> Minimum Number of Lines Reached."[/color] ms))
  33.                    ([color=BLUE]setq[/color] *n ([color=BLUE]1-[/color] *n))
  34.                  )
  35.                )
  36.                ( ([color=BLUE]member[/color] g2 '(43 61))
  37.                  ([color=BLUE]setq[/color] *n ([color=BLUE]1+[/color] *n))
  38.                )
  39.              )
  40.            )
  41.            ( ([color=BLUE]=[/color] 3 g1)
  42.              ([color=BLUE]setq[/color] h ([color=BLUE]-[/color] ([color=BLUE]car[/color] g2) ([color=BLUE]car[/color] p1))
  43.                    v ([color=BLUE]/[/color] ([color=BLUE]-[/color] ([color=BLUE]cadr[/color] g2) ([color=BLUE]cadr[/color] p1)) ([color=BLUE]1+[/color] *n))
  44.              )
  45.              ([color=BLUE]repeat[/color] *n ([color=BLUE]setq[/color] p1 ([color=BLUE]list[/color] ([color=BLUE]car[/color] p1) ([color=BLUE]+[/color] v ([color=BLUE]cadr[/color] p1)) ([color=BLUE]caddr[/color] p1)))
  46.                ([color=BLUE]entmakex[/color]
  47.                  ([color=BLUE]list[/color]
  48.                    ([color=BLUE]cons[/color] 0 [color=MAROON]"LINE"[/color])
  49.                    ([color=BLUE]cons[/color] 10 ([color=BLUE]trans[/color] p1 1 0))
  50.                    ([color=BLUE]cons[/color] 11 ([color=BLUE]trans[/color] ([color=BLUE]list[/color] ([color=BLUE]+[/color] ([color=BLUE]car[/color] p1) h) ([color=BLUE]cadr[/color] p1) ([color=BLUE]caddr[/color] p1)) 1 0))
  51.                  )
  52.                )
  53.              )
  54.              [color=BLUE]nil[/color]
  55.            )
  56.          )
  57.        )
  58.      )
  59.    )
  60. )
  61. ([color=BLUE]redraw[/color]) ([color=BLUE]princ[/color])
  62. )

 
动态垂直:
 
 
  1. ([color=BLUE]defun[/color] c:vlines ( [color=BLUE]/[/color] *error* g1 g2 gr h l ms p p1 p2 v )
  2. [color=GREEN];; Lee Mac 2011[/color]
  3. ([color=BLUE]defun[/color] *error* ( m ) ([color=BLUE]redraw[/color]) ([color=BLUE]princ[/color]))
  4. ([color=BLUE]or[/color] *n ([color=BLUE]setq[/color] *n 3))
  5. ([color=BLUE]if[/color] ([color=BLUE]setq[/color] p1 ([color=BLUE]getpoint[/color] [color=MAROON]"\nSpecify First Corner: "[/color]))
  6.    ([color=BLUE]progn[/color]
  7.      ([color=BLUE]setq[/color] ms ([color=BLUE]princ[/color] [color=MAROON]"\nSpecify Opposite Corner [+/-]: "[/color]))
  8.      ([color=BLUE]while[/color]
  9.        ([color=BLUE]progn[/color] ([color=BLUE]setq[/color] gr ([color=BLUE]grread[/color] [color=BLUE]t[/color] 15 0) g1 ([color=BLUE]car[/color] gr) g2 ([color=BLUE]cadr[/color] gr))
  10.          ([color=BLUE]cond[/color]
  11.            ( ([color=BLUE]=[/color] 5 g1)([color=BLUE]redraw[/color])
  12.              ([color=BLUE]setq[/color] h ([color=BLUE]/[/color] ([color=BLUE]-[/color] ([color=BLUE]car[/color] g2) ([color=BLUE]car[/color] p1)) ([color=BLUE]1+[/color] *n))
  13.                    v ([color=BLUE]-[/color] ([color=BLUE]cadr[/color] g2) ([color=BLUE]cadr[/color] p1))
  14.                    p p1
  15.              )
  16.              ([color=BLUE]repeat[/color] *n
  17.                ([color=BLUE]setq[/color] p ([color=BLUE]list[/color] ([color=BLUE]+[/color] h ([color=BLUE]car[/color] p)) ([color=BLUE]cadr[/color] p) ([color=BLUE]caddr[/color] p)))
  18.                ([color=BLUE]grdraw[/color] p ([color=BLUE]list[/color] ([color=BLUE]car[/color] p) ([color=BLUE]+[/color] v ([color=BLUE]cadr[/color] p)) ([color=BLUE]caddr[/color] p)) -1)
  19.              )
  20.              ([color=BLUE]setq[/color] l
  21.                ([color=BLUE]list[/color]
  22.                  p1 ([color=BLUE]list[/color] ([color=BLUE]car[/color] p1) ([color=BLUE]+[/color] v ([color=BLUE]cadr[/color] p1)) ([color=BLUE]caddr[/color] p1))
  23.                  g2 ([color=BLUE]list[/color] ([color=BLUE]+[/color] h ([color=BLUE]car[/color] p)) ([color=BLUE]cadr[/color] p) ([color=BLUE]caddr[/color] p))
  24.                )
  25.              )
  26.              ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]grdraw[/color] a b 1 -1)) l ([color=BLUE]append[/color] ([color=BLUE]cdr[/color] l) ([color=BLUE]list[/color] ([color=BLUE]car[/color] l))))
  27.            )
  28.            ( ([color=BLUE]=[/color] 2 g1)
  29.              ([color=BLUE]cond[/color]
  30.                ( ([color=BLUE]member[/color] g2 '(45 95))
  31.                  ([color=BLUE]if[/color] ([color=BLUE]=[/color] 1 *n)
  32.                    ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\n--> Minimum Number of Lines Reached."[/color] ms))
  33.                    ([color=BLUE]setq[/color] *n ([color=BLUE]1-[/color] *n))
  34.                  )
  35.                )
  36.                ( ([color=BLUE]member[/color] g2 '(43 61))
  37.                  ([color=BLUE]setq[/color] *n ([color=BLUE]1+[/color] *n))
  38.                )
  39.              )
  40.            )
  41.            ( ([color=BLUE]=[/color] 3 g1)
  42.              ([color=BLUE]setq[/color] h ([color=BLUE]/[/color] ([color=BLUE]-[/color] ([color=BLUE]car[/color] g2) ([color=BLUE]car[/color] p1)) ([color=BLUE]1+[/color] *n))
  43.                    v ([color=BLUE]-[/color] ([color=BLUE]cadr[/color] g2) ([color=BLUE]cadr[/color] p1))
  44.              )
  45.              ([color=BLUE]repeat[/color] *n ([color=BLUE]setq[/color] p1 ([color=BLUE]list[/color] ([color=BLUE]+[/color] h ([color=BLUE]car[/color] p1)) ([color=BLUE]cadr[/color] p1) ([color=BLUE]caddr[/color] p1)))
  46.                ([color=BLUE]entmakex[/color]
  47.                  ([color=BLUE]list[/color]
  48.                    ([color=BLUE]cons[/color] 0 [color=MAROON]"LINE"[/color])
  49.                    ([color=BLUE]cons[/color] 10 ([color=BLUE]trans[/color] p1 1 0))
  50.                    ([color=BLUE]cons[/color] 11 ([color=BLUE]trans[/color] ([color=BLUE]list[/color] ([color=BLUE]car[/color] p1) ([color=BLUE]+[/color] v ([color=BLUE]cadr[/color] p1)) ([color=BLUE]caddr[/color] p1)) 1 0))
  51.                  )
  52.                )
  53.              )
  54.              [color=BLUE]nil[/color]
  55.            )
  56.          )
  57.        )
  58.      )
  59.    )
  60. )
  61. ([color=BLUE]redraw[/color]) ([color=BLUE]princ[/color])
  62. )

 
将两者结合起来。。。
 
 
  1. (defun c:hvlines ( / *error* g1 g2 gr h l ms p p1 p2 v )
  2. ;; Lee Mac 2011
  3. (defun *error* ( m ) (redraw) (princ))
  4. (or *n (setq *n 3))
  5. (if (setq p1 (getpoint "\nSpecify First Corner: "))
  6.    (progn
  7.      (setq ms (princ "\nSpecify Opposite Corner [TAB/+/-]: "))
  8.      (while
  9.        (progn (setq gr (grread t 15 0) g1 (car gr) g2 (cadr gr))
  10.          (cond
  11.            ( (= 5 g1)(redraw)
  12.              (if *v
  13.                (progn
  14.                  (setq h (/ (- (car g2) (car p1)) (1+ *n))
  15.                        v (- (cadr g2) (cadr p1))
  16.                        p p1
  17.                  )
  18.                  (repeat *n
  19.                    (setq p (list (+ h (car p)) (cadr p) (caddr p)))
  20.                    (grdraw p (list (car p) (+ v (cadr p)) (caddr p)) -1)
  21.                  )
  22.                  (setq l
  23.                    (list
  24.                      p1 (list (car p1) (+ v (cadr p1)) (caddr p1))
  25.                      g2 (list (+ h (car p)) (cadr p) (caddr p))
  26.                    )
  27.                  )
  28.                )
  29.                (progn
  30.                  (setq h (- (car g2) (car p1))
  31.                        v (/ (- (cadr g2) (cadr p1)) (1+ *n))
  32.                        p p1
  33.                  )
  34.                  (repeat *n
  35.                    (setq p (list (car p) (+ v (cadr p)) (caddr p)))
  36.                    (grdraw p (list (+ (car p) h) (cadr p) (caddr p)) -1)
  37.                  )
  38.                  (setq l
  39.                    (list
  40.                      p1 (list (+ (car p1) h) (cadr p1) (caddr p1))
  41.                      g2 (list (car p) (+ v (cadr p)) (caddr p))
  42.                    )
  43.                  )
  44.                )
  45.              )                  
  46.              (mapcar '(lambda ( a b ) (grdraw a b 1 -1)) l (append (cdr l) (list (car l))))
  47.            )
  48.            ( (= 2 g1)
  49.              (cond
  50.                ( (member g2 '(45 95))
  51.                  (if (= 1 *n)
  52.                    (princ (strcat "\n--> Minimum Number of Lines Reached." ms))
  53.                    (setq *n (1- *n))
  54.                  )
  55.                )
  56.                ( (member g2 '(43 61))
  57.                  (setq *n (1+ *n))
  58.                )
  59.                ( (= 9 g2)
  60.                  (setq *v (not *v)) t
  61.                )
  62.              )
  63.            )
  64.            ( (= 3 g1)
  65.              (if *v
  66.                (progn
  67.                  (setq h (/ (- (car g2) (car p1)) (1+ *n))
  68.                        v (- (cadr g2) (cadr p1))
  69.                  )
  70.                  (repeat *n (setq p1 (list (+ h (car p1)) (cadr p1) (caddr p1)))
  71.                    (entmakex
  72.                      (list
  73.                        (cons 0 "LINE")
  74.                        (cons 10 (trans p1 1 0))
  75.                        (cons 11 (trans (list (car p1) (+ v (cadr p1)) (caddr p1)) 1 0))
  76.                      )
  77.                    )
  78.                  )
  79.                )
  80.                (progn
  81.                  (setq h (- (car g2) (car p1))
  82.                        v (/ (- (cadr g2) (cadr p1)) (1+ *n))
  83.                  )
  84.                  (repeat *n (setq p1 (list (car p1) (+ v (cadr p1)) (caddr p1)))
  85.                    (entmakex
  86.                      (list
  87.                        (cons 0 "LINE")
  88.                        (cons 10 (trans p1 1 0))
  89.                        (cons 11 (trans (list (+ (car p1) h) (cadr p1) (caddr p1)) 1 0))
  90.                      )
  91.                    )
  92.                  )
  93.                )
  94.              )
  95.              nil
  96.            )
  97.          )
  98.        )
  99.      )
  100.    )
  101. )
  102. (redraw) (princ)
  103. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:34:42 | 显示全部楼层
对我之前的代码进行了快速修改,以创建垂直线:
 
  1. (defun c:vlines ( / p1 p2 h n v )
  2. (if
  3.    (and
  4.      (setq p1 (getpoint "\nSpecify First Corner: "))
  5.      (setq p2 (getcorner "\nSpecify Opposite Corner: " p1))
  6.      (progn (initget 6) (setq n (getint "\nSpecify Number of Lines: ")))
  7.    )
  8.    (progn
  9.      (setq h (if (= 1 n) 0. (/ (- (car p2) (car p1)) (1- n)))
  10.            v (- (cadr p2) (cadr p1))
  11.      )
  12.      (repeat n
  13.        (entmakex
  14.          (list
  15.            (cons 0 "LINE")
  16.            (cons 10 (trans p1 1 0))
  17.            (cons 11 (trans (list (car p1) (+ (cadr p1) v) (caddr p1)) 1 0))
  18.          )
  19.        )
  20.        (setq p1 (list (+ h (car p1)) (cadr p1) (caddr p1)))
  21.      )
  22.    )
  23. )
  24. (princ)
  25. )
回复

使用道具 举报

23

主题

102

帖子

79

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 09:37:27 | 显示全部楼层
rekoj我想看看带线条和方块的lisp,这就是我想学习lisp的基本原因,但这些老虎会让任何人泄气:)
 
李你的乐趣与3行是切实可行的,我会直接问你会做一些修改,你的程序,所以它的权利,我需要什么?
它将涉及一些矩形内的行距计算
比在线上块间距的计算
嵌入我的区块
可能显示矩形的尺寸
将其放置在层上,如果不存在,则创建
删除一个矩形
 
我一直到这里
  1. (defun c:xxx (/ pt1 pt2 pt3 pt4 bay)
  2. (setq pt1 (getpoint "/nTop:"))
  3. (setq pt2 (getcorner "/nBottom" pt1))
  4.       (setq pt3 (list (nth 0 pt2)(nth 1 pt1)))
  5.                (setq pt4 (list (nth 0 pt1)(nth 1 pt2)))
  6.       (command ".rectang" pt1 pt2)
  7. (setq bay (command ".dist" (pt1 pt3))-cant get a value
  8. (print "bay")
  9. Princ
  10. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 09:41:11 | 显示全部楼层
从Lees代码开始!
 
好的,蓝线v是红色的,重复n是条数,所以红色是n-2
这不是测试,只是剪切和粘贴。预期存在红色和蓝色层。
 
  1. (defun c:vlines ( / p1 p2 h n v )
  2. (if
  3.    (and
  4.      (setq p1 (getpoint "\nSpecify First Corner: "))
  5.      (setq p2 (getcorner "\nSpecify Opposite Corner: " p1))
  6.      (progn (initget 6) (setq [color=red]numline[/color] (getint "\nSpecify Number of Lines: ")))
  7.    )
  8.    (progn
  9. [color=red](setq n (- numline 2))[/color]
  10.      (setq h (if (= 1 n) 0. (/ (- (car p2) (car p1)) (1- n)))
  11.            v (- (cadr p2) (cadr p1))
  12.      )
  13. [color=darkred][/color]
  14. [color=darkred]       (entmakex
  15.          (list
  16.            (cons 0 "LINE")[/color]
  17. [color=darkred]            (cons 8 "blue")
  18.            (cons 10 (trans p1 1 0))
  19.            (cons 11 (trans (list (car p1) (+ (cadr p1) v) (caddr p1)) 1 0))
  20.          )
  21.        )
  22.        (setq p1 (list (+ h (car p1)) (cadr p1) (caddr p1)))
  23.      )
  24. [/color]      (repeat n
  25.        (entmakex
  26.          (list
  27.            (cons 0 "LINE")
  28. [color=red](cons 8 "Red")[/color]
  29.            (cons 10 (trans p1 1 0))
  30.            (cons 11 (trans (list (car p1) (+ (cadr p1) v) (caddr p1)) 1 0))
  31.          )
  32.        )
  33.        (setq p1 (list (+ h (car p1)) (cadr p1) (caddr p1)))
  34. [color=#8b0000]       (entmakex
  35.          (list
  36.            (cons 0 "LINE")
  37. (cons 8 "BLUE")            [/color]
  38. [color=#8b0000](cons 10 (trans p1 1 0))
  39.            (cons 11 (trans (list (car p1) (+ (cadr p1) v) (caddr p1)) 1 0))
  40.          )
  41.        )
  42.        (setq p1 (list (+ h (car p1)) (cadr p1) (caddr p1)))
  43.      )[/color]
  44.      )
  45.    )
  46. )
  47. (princ)
  48. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 05:32 , Processed in 0.345209 second(s), 74 queries .

© 2020-2025 乐筑天下

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