【问题标题】:Converting a graph to a 3D diagram将图形转换为 3D 图表
【发布时间】:2020-11-09 00:20:01
【问题描述】:

这是我之前的帖子here的后续内容@

以下代码 (ref) 可用于在给定图形的坐标、节点和边的情况下生成 2D 图。

(defun graph ( pts sls tls wgt )
    (   (lambda ( l )
            (foreach x l (text (cdr x) (itoa (car x)) 0.0 1))
            (mapcar
               '(lambda ( a b c / p q r )
                    (setq p (cdr (assoc a l))
                          q (cdr (assoc b l))
                          r (angle p q)
                    )
                    (entmake (list '(0 . "LINE") (cons 10 p) (cons 11 q) '(62 . 8)))
                    (text
                        (mapcar '(lambda ( x y ) (/ (+ x y) 2.0)) p q)
                        (itoa c)
                        (if (and (< (* pi 0.5) r) (<= r (* pi 1.5))) (+ r pi) r)
                        2
                    )
                )
                sls tls wgt
            )
        )
        (mapcar 'cons (vl-sort (append sls tls) '<) pts)
    )
)
(defun text ( p s a c )
    (entmake
        (list
           '(0 . "TEXT")
            (cons 10 p)
            (cons 11 p)
            (cons 50 a)
            (cons 01 s)
            (cons 62 c)
           '(40 . 2)
           '(72 . 1)
           '(73 . 2)
        )
    )
)

输入:

(graph
   '((75 25) (115 45) (90 60) (10 5) (45 0) (45 55) (0 25))
   '( 1  1  1  1  2  2  3  4   4  5  6)
   '( 2  3  4  5  3  6  6  5   7  7  7)
   '(50 10 20 80 90 90 30 20 100 40 60)
)

我想就如何修改上述代码以在节点的 3D 坐标可用时绘制 3D 图寻求建议。

(graph
   '((75 25 0) (115 45 24) (90 60 21) (10 5 4) (45 0 1) (45 55 23) (0 25 123))
   '( 1  1  1  1  2  2  3  4   4  5  6)
   '( 2  3  4  5  3  6  6  5   7  7  7)
   '(50 10 20 80 90 90 30 20 100 40 60)
)

【问题讨论】:

  • 有什么建议吗?

标签: 3d geometry coordinates autocad autolisp


【解决方案1】:

我的代码中没有任何内容本质上仅限于 2D 环境 - 为函数提供 3D 坐标应该会生成 3D 图形,尽管文本标签将与 WCS 平面平行,因为文本是平面对象。

以下是使用您的示例坐标生成的:

【讨论】:

  • 非常感谢,我可以生成3D图了。我把 p 和 q 误认为是 x 和 y 坐标。您能解释一下如何沿线放置文本吗?
  • 虽然您可以轻松地旋转文本以与每一行对齐,但文本是平面的并且必须位于给定的平面中,并且单独的一条线并不能定义一个平面,因此文本可以无限定向绕线有很多方法。
猜你喜欢
  • 2017-10-08
  • 2020-05-02
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
  • 1970-01-01
相关资源
最近更新 更多